Skip to content

Instantly share code, notes, and snippets.

@rose00
Created July 10, 2009 09:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rose00/144362 to your computer and use it in GitHub Desktop.
Save rose00/144362 to your computer and use it in GitHub Desktop.
--------
gamma -XX:+PrintAssembly -Xbatch -XX:+PrintCompilation -XX:+EnableMethodHandles -cp $BUGDIR ThrowBug
VM option '+PrintAssembly'
VM option '+PrintCompilation'
VM option '+EnableMethodHandles'
OpenJDK Server VM warning: JSR 292 invokedynamic is disabled in this JVM. Use -XX:+EnableInvokeDynamic to enable.
1 !b ThrowBug::catcher (18 bytes)
Loaded disassembler from hsdis-i386.dylib
Decoding compiled method 0x090d44c8:
Code:
[Disassembling for mach='i386(base-hsdis)']
[Entry Point]
[Verified Entry Point]
0x090d45a0: mov [esp-0x4000], eax
0x090d45a7: push ebp
0x090d45a8: sub esp, 0x00000018 ;*synchronization entry
; - ThrowBug::catcher@-1 (line 33)
0x090d45ae: mov ebx, 0x00000154
0x090d45b3: mov ecx, [ebx+0x101B6C20] ; {oop('ThrowBug')}
0x090d45b9: mov ebp, esp
0x090d45bb: call 0x090ab060 ; OopMap{off=32}
;*invokevirtual invoke
; - ThrowBug::catcher@3 (line 33)
; {optimized virtual_call}
0x090d45c0: mov esp, ebp ;*invokevirtual invoke
; - ThrowBug::catcher@3 (line 33)
0x090d45c2: add esp, 0x00000018
0x090d45c5: pop ebp
0x090d45c6: test [0x4C000], eax ; {poll_return}
0x090d45cc: ret
0x090d45cd: mov ebx, 0x00000158
0x090d45d2: inc [ebx+0x101B6C20] ;*putstatic catches
; - ThrowBug::catcher@13 (line 35)
; {oop('ThrowBug')}
0x090d45d8: mov eax, 0x00000000
0x090d45dd: jmp 0x090d45c2
0x090d45df: hlt
[Stub Code]
0x090d45e0: mov ebx, 0x00000000 ; {no_reloc}
0x090d45e5: jmp 0x090d45e5 ; {runtime_call}
[Exception Handler]
0x090d45ea: jmp 0x090d2c60 ; {runtime_call}
0x090d45ef: push 0x090d45ef ; {section_word}
0x090d45f4: jmp 0x090abb80 ; {runtime_call}
[Constants]
0x090d45f9: int3
0x090d45fa: int3
0x090d45fb: int3
2 b ThrowBug::thrower (4 bytes)
Decoding compiled method 0x090d46c8:
Code:
[Disassembling for mach='i386(base-hsdis)']
[Entry Point]
[Verified Entry Point]
0x090d47a0: push ebp
0x090d47a1: sub esp, 8 ;*synchronization entry
; - ThrowBug::thrower@-1 (line 26)
0x090d47a7: mov ebx, 0x00000150
0x090d47ac: mov ecx, [ebx+0x101B6C20] ;*getstatic blintz
; - ThrowBug::thrower@0 (line 26)
; {oop('ThrowBug')}
0x090d47b2: add esp, 8
0x090d47b5: pop ebp
0x090d47b6: jmp 0x090d4020 ; {runtime_call}
0x090d47bb: hlt
0x090d47bc: hlt
0x090d47bd: hlt
0x090d47be: hlt
0x090d47bf: hlt
[Exception Handler]
[Stub Code]
0x090d47c0: jmp 0x090d2c60 ; {no_reloc}
0x090d47c5: push 0x090d47c5 ; {section_word}
0x090d47ca: jmp 0x090abb80 ; {runtime_call}
[Constants]
0x090d47cf: int3
*** MH ret @0x090d45c0: c483e58b
*** MH ret @0x090d45c0: c483e58b
*** MH ret @0x090d45c0: c483e58b
*** MH ret @0x090d45c0: c483e58b
Segmentation fault
Decoding RuntimeStub - _rethrow_Java 0x090d3fc8
[Disassembling for mach='i386(base-hsdis)']
0x090d4020: push ebp
0x090d4021: sub esp, 0x00000028
0x090d4027: push [esp+0x2C]
0x090d402b: pop [esp+0xC]
0x090d402f: mov ebx, esp
0x090d4031: shr ebx, 0x0000000c
0x090d4034: mov ebx, [ebx*4+0x4D57E20]
0x090d403b: mov [ebx+0x118], esp
0x090d4041: mov [esp+0x10], ebx
0x090d4045: mov [esp], ecx
0x090d4048: mov [esp+0x4], ebx
0x090d404c: push [esp+0xC]
0x090d4050: pop [esp+0x8]
0x090d4054: call 0x04a3ffe0
0x090d4059: mov ecx, eax
0x090d405b: mov ebp, [esp+0x10]
0x090d405f: mov [ebp+0x118], 0x00000000
0x090d4069: mov ebx, ebp
0x090d406b: mov [ebx+0x11C], 0x00000000
0x090d4075: mov eax, [ebx+0x144]
0x090d407b: mov [ebx+0x144], 0x00000000
0x090d4085: mov ebp, [ebx+0x4]
0x090d4088: test ebp, ebp
0x090d408a: jnz 0x090d4093
0x090d408c: add esp, 0x00000028
0x090d408f: pop ebp
0x090d4090: pop edx
0x090d4091: jmp ecx
0x090d4093: mov ecx, Stub::forward exception
0x090d4098: mov ebx, 0x00000000
0x090d409d: add esp, 0x00000028
0x090d40a0: pop ebp
0x090d40a1: jmp ecx
0x090d40a3: int3
StubRoutines::forward exception [0x090002c0, 0x0900032a[ (106 bytes)
[Disassembling for mach='i386(base-hsdis)']
0x090002c0: mov ecx, esp
0x090002c2: shr ecx, 0x0000000c
0x090002c5: mov ecx, [ecx*4+0x4D57E20]
0x090002cc: cmp [ecx+0x4], 0x00000000
0x090002d3: jnz 0x090002ea
0x090002d9: push 0x04c68dd0
0x090002de: call 0x090002e3
0x090002e3: pusha
0x090002e4: call 0x0439b874
0x090002e9: hlt
0x090002ea: mov eax, [esp]
;; call exception_handler_for_return_address
0x090002ed: push eax
0x090002ee: call 0x04a4bcc8
0x090002f3: add esp, 4
0x090002f6: mov ebx, eax
0x090002f8: mov ecx, esp
0x090002fa: shr ecx, 0x0000000c
0x090002fd: mov ecx, [ecx*4+0x4D57E20]
0x09000304: pop edx
0x09000305: mov eax, [ecx+0x4]
0x09000308: mov [ecx+0x4], 0x00000000
0x0900030f: test eax, eax
0x09000311: jnz 0x09000328
0x09000317: push 0x04c68e38
0x0900031c: call 0x09000321
0x09000321: pusha
0x09000322: call 0x0439b874
0x09000327: hlt
0x09000328: jmp ebx
--------
--------
gamma -XX:+PrintAssembly -Xbatch -XX:+PrintCompilation -XX:+EnableMethodHandles -cp $BUGDIR ThrowBug
VM option '+PrintAssembly'
VM option '+PrintCompilation'
VM option '+EnableMethodHandles'
OpenJDK Server VM warning: JSR 292 invokedynamic is disabled in this JVM. Use -XX:+EnableInvokeDynamic to enable.
1 !b ThrowBug::catcher (18 bytes)
Could not load hsdis-i386.dylib; library not loadable; PrintAssembly is disabled
PrintAssembly request changed to PrintOptoAssembly
{method}
- klass: {other class}
- method holder: 'ThrowBug'
- constants: 0x04b7a7d0{constant pool}
- access: 0x81000008 static
- name: 'catcher'
- signature: '(Ljava/dyn/MethodHandle;)Ljava/lang/Object;'
- max stack: 2
- max locals: 2
- size of params: 1
- method size: 20
- vtable index: -2
- i2i entry: 0x0900b840
- adapter: 0x0010fb78
- compiled entry 0x090b2da8
- code size: 18
- code start: 0x101b6b08
- code end (excl): 0x101b6b1a
- method data: 0x101cb528
- checked ex length: 0
- linenumber start: 0x101b6b1a
- localvar length: 0
#
# java/lang/Object * ( java/dyn/MethodHandle * )
#
#r000 ecx : parm 0: java/dyn/MethodHandle *
# -- Old esp -- Framesize: 32 --
#r045 esp+28: return address
#r044 esp+24: pad2, in_preserve
#r043 esp+20: pad2, in_preserve
#r042 esp+16: Fixed slot 0
#r049 esp+12: spill
#r048 esp+ 8: outgoing argument
#r047 esp+ 4: outgoing argument
#r046 esp+ 0: outgoing argument
#
abababab N1: # B1 <- B2 Freq: 1
abababab
000 B1: # B3 B2 <- BLOCK HEAD IS JUNK Freq: 1
000 # stack bang
PUSHL EBP
SUB ESP,24 # Create frame
00e MOV EBX,#340
013 MOV ECX,[EBX + precise klass ThrowBug: 0x000e50d0:Constant:exact *] ! Field ThrowBug.THROWER
019 CALL,static/MethodHandle java.dyn.MethodHandle::invoke
# ThrowBug::catcher @ bci:3 L[0]=_ L[1]=_
# OopMap{off=32}
022
022 B2: # N1 <- B1 B3 Freq: 0.99999
022 ADD ESP,24 # Destroy frame
POPL EBP
TEST PollPage,EAX ! Poll Safepoint
02c RET
02c
02d B3: # B2 <- B1 Freq: 1e-05
02d MOV EBX,#344
032 INC [EBX + precise klass ThrowBug: 0x000e50d0:Constant:exact *] ! Field ThrowBug.catches
038 MOV EAX,NULL
03d JMP,s B2
03d
2 b ThrowBug::thrower (4 bytes)
PrintAssembly request changed to PrintOptoAssembly
{method}
- klass: {other class}
- method holder: 'ThrowBug'
- constants: 0x04b7a7d0{constant pool}
- access: 0x81000008 static
- name: 'thrower'
- signature: '()Ljava/lang/Object;'
- max stack: 1
- max locals: 0
- size of params: 0
- method size: 20
- vtable index: -2
- i2i entry: 0x0900b840
- adapter: 0x0010f9f8
- compiled entry 0x090aaa25
- code size: 4
- code start: 0x101b6a40
- code end (excl): 0x101b6a44
- method data: 0x101cb598
- checked ex length: 1
- checked ex start: 0x101b6a4c
- linenumber start: 0x101b6a44
- localvar length: 0
#
# java/lang/Object * ( )
#
# -- Old esp -- Framesize: 16 --
#r045 esp+12: return address
#r044 esp+ 8: pad2, in_preserve
#r043 esp+ 4: pad2, in_preserve
#r042 esp+ 0: Fixed slot 0
#
abababab N1: # B1 <- B1 Freq: 1
abababab
000 B1: # N1 <- BLOCK HEAD IS JUNK Freq: 1
000 PUSHL EBP
SUB ESP,8 # Create frame
007 MOV EBX,#336
00c MOV ECX,[EBX + precise klass ThrowBug: 0x004f20d0:Constant:exact *] ! Field ThrowBug.blintz
012 ADD ESP,8 # Destroy frame
POPL EBP
016 JMP rethrow_stub
016
*** MH ret @0x090d45c0: c483e58b
*** MH ret @0x090d45c0: c483e58b
*** MH ret @0x090d45c0: c483e58b
*** MH ret @0x090d45c0: c483e58b
Segmentation fault
1 !b ThrowBug::catcher (18 bytes)
Decoding ExceptionBlob@0x090d2c60 0x090d2c08
[Disassembling for mach='i386(base-hsdis)']
0x090d2c60: push edx
0x090d2c61: sub esp, 8
0x090d2c64: mov [esp+0x4], ebp
0x090d2c68: mov ecx, esp
0x090d2c6a: shr ecx, 0x0000000c
0x090d2c6d: mov ecx, [ecx*4+0x4D57E20]
0x090d2c74: mov [ecx+0x178], eax
0x090d2c7a: mov [ecx+0x17C], edx
0x090d2c80: mov [esp], ecx
0x090d2c83: mov [ecx+0x118], esp
0x090d2c89: call 0x04a42462
0x090d2c8e: mov ecx, esp
0x090d2c90: shr ecx, 0x0000000c
0x090d2c93: mov ecx, [ecx*4+0x4D57E20]
0x090d2c9a: mov [ecx+0x118], 0x00000000
0x090d2ca4: mov ebp, [esp+0x4]
0x090d2ca8: add esp, 8
0x090d2cab: pop edx
0x090d2cac: push eax
0x090d2cad: mov ecx, esp
0x090d2caf: shr ecx, 0x0000000c
0x090d2cb2: mov ecx, [ecx*4+0x4D57E20]
0x090d2cb9: mov eax, [ecx+0x178]
0x090d2cbf: mov edx, [ecx+0x17C]
0x090d2cc5: mov [ecx+0x180], 0x00000000
0x090d2ccf: mov [ecx+0x17C], 0x00000000
0x090d2cd9: mov [ecx+0x178], 0x00000000
0x090d2ce3: pop ecx
0x090d2ce4: jmp ecx
0x090d2ce6: int3
0x090d2ce7: int3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment