Created
July 10, 2009 09:03
-
-
Save rose00/144362 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-------- | |
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