标签:
// 单例模式(分析volatile关键字是如何禁止指令重排序优化的) public class Singleton { private volatile static Singleton instance; public static Singleton getInstance() { if(instance == null) { synchronized (Singleton.class) { // 同步块 if(instance == null) { instance = new Singleton(); } } } return instance; } public static void main(String[] args) { Singleton.getInstance(); } }
A1)这里的反汇编与javap的作用不同,javap是获取该文件的字节码指令集(针对java虚拟机),而汇编是获取寄存器指令集(本地CPU支持的指令集);A2)我的jdk是 1.8 version,貌似 1.7 不行一样;
A1)重命名文件:根据自己的os ,找到对应的 Distribution 下载,下载后,还要重命名 为 hsdis-i386.so(访问权限755)A2)放置位置:将该文件放置到 jdk/jre/lib/i386/ 目录下即可;
Loaded disassembler from /usr/java/jdk1.8/jre/lib/i386/hsdis-i386.so Decoding compiled method 0xa85a29c8: Code: [Disassembling for mach='i386'] [Entry Point] [Constants] # {method} {0x8890e238} 'hashCode' '()I' in 'java/lang/String' # [sp+0x30] (sp of caller) 0xa85a2ae0: nop 0xa85a2ae1: nop 0xa85a2ae2: nop 0xa85a2ae3: nop 0xa85a2ae4: nop 0xa85a2ae5: nop 0xa85a2ae6: nop 0xa85a2ae7: nop 0xa85a2ae8: nop 0xa85a2ae9: nop 0xa85a2aea: nop 0xa85a2aeb: nop 0xa85a2aec: nop 0xa85a2aed: nop 0xa85a2aee: nop 0xa85a2aef: nop 0xa85a2af0: nop 0xa85a2af1: nop 0xa85a2af2: nop 0xa85a2af3: nop 0xa85a2af4: nop 0xa85a2af5: nop 0xa85a2af6: nop 0xa85a2af7: cmp 0x4(%ecx),%eax 0xa85a2afa: jne 0xa853b520 ; {runtime_call} [Verified Entry Point] 0xa85a2b00: mov %eax,-0x4000(%esp) 0xa85a2b07: push %ebp 0xa85a2b08: sub $0x28,%esp 0xa85a2b0b: mov $0x88a6db18,%eax ; {metadata(method data for {method} {0x8890e238} 'hashCode' '()I' in 'java/lang/String')} 0xa85a2b10: mov 0xa4(%eax),%esi 0xa85a2b16: add $0x8,%esi 0xa85a2b19: mov %esi,0xa4(%eax) 0xa85a2b1f: mov $0x8890e238,%eax ; {metadata({method} {0x8890e238} 'hashCode' '()I' in 'java/lang/String')} 0xa85a2b24: and $0x1ff8,%esi 0xa85a2b2a: cmp $0x0,%esi 0xa85a2b2d: je 0xa85a2c1c ;*aload_0 ; - java.lang.String::hashCode@0 (line 1466) 0xa85a2b33: mov 0xc(%ecx),%eax ;*getfield hash ; - java.lang.String::hashCode@1 (line 1466) 0xa85a2b36: cmp $0x0,%eax 0xa85a2b39: mov $0x88a6db18,%esi ; {metadata(method data for {method} {0x8890e238} 'hashCode' '()I' in 'java/lang/String')} 0xa85a2b3e: mov $0xcc,%edi 0xa85a2b43: jne 0xa85a2b4e 0xa85a2b49: mov $0xd4,%edi 0xa85a2b4e: mov (%esi,%edi,1),%ebx 0xa85a2b51: lea 0x1(%ebx),%ebx 0xa85a2b54: mov %ebx,(%esi,%edi,1) 0xa85a2b57: jne 0xa85a2c11 ;*ifne ; - java.lang.String::hashCode@6 (line 1467) 0xa85a2b5d: mov 0x8(%ecx),%esi ;*getfield value ; - java.lang.String::hashCode@10 (line 1467) 0xa85a2b60: mov 0x8(%esi),%edi ;*arraylength ; - java.lang.String::hashCode@13 (line 1467) ; implicit exception: dispatches to 0xa85a2c31 0xa85a2b63: mov %edi,0x14(%esp) 0xa85a2b67: cmp $0x0,%edi 0xa85a2b6a: mov $0x88a6db18,%ebx ; {metadata(method data for {method} {0x8890e238} 'hashCode' '()I' in 'java/lang/String')} 0xa85a2b6f: mov $0xdc,%edx 0xa85a2b74: jle 0xa85a2b7f 0xa85a2b7a: mov $0xe4,%edx 0xa85a2b7f: mov %ecx,0x10(%esp) 0xa85a2b83: mov (%ebx,%edx,1),%ecx 0xa85a2b86: lea 0x1(%ecx),%ecx 0xa85a2b89: mov %ecx,(%ebx,%edx,1) 0xa85a2b8c: jle 0xa85a2c11 ;*ifle ; - java.lang.String::hashCode@14 (line 1467) 0xa85a2b92: mov $0x0,%ebx 0xa85a2b97: jmp 0xa85a2be8 ;*iload_3 ; - java.lang.String::hashCode@24 (line 1470) 0xa85a2b9c: movzwl 0xc(%esi,%ebx,2),%edi ;*caload ; - java.lang.String::hashCode@39 (line 1471) 0xa85a2ba1: mov %eax,%edx 0xa85a2ba3: shl $0x5,%eax 0xa85a2ba6: sub %edx,%eax 0xa85a2ba8: add %edi,%eax 0xa85a2baa: inc %ebx 0xa85a2bab: mov $0x88a6db18,%edi ; {metadata(method data for {method} {0x8890e238} 'hashCode' '()I' in 'java/lang/String')} 0xa85a2bb0: mov 0xa8(%edi),%edx 0xa85a2bb6: add $0x8,%edx 0xa85a2bb9: mov %edx,0xa8(%edi) 0xa85a2bbf: mov $0x8890e238,%edi ; {metadata({method} {0x8890e238} 'hashCode' '()I' in 'java/lang/String')} 0xa85a2bc4: and $0xfff8,%edx 0xa85a2bca: cmp $0x0,%edx 0xa85a2bcd: je 0xa85a2c36 ; OopMap{[16]=Oop esi=Oop off=243} ;*goto ; - java.lang.String::hashCode@45 (line 1470) 0xa85a2bd3: test %eax,0xb7712100 ; {poll} 0xa85a2bd9: mov $0x88a6db18,%edi ; {metadata(method data for {method} {0x8890e238} 'hashCode' '()I' in 'java/lang/String')} 0xa85a2bde: incl 0xfc(%edi) ;*goto ; - java.lang.String::hashCode@45 (line 1470) 0xa85a2be4: mov 0x14(%esp),%edi 0xa85a2be8: cmp %edi,%ebx 0xa85a2bea: mov $0x88a6db18,%edx ; {metadata(method data for {method} {0x8890e238} 'hashCode' '()I' in 'java/lang/String')} 0xa85a2bef: mov $0xec,%ecx 0xa85a2bf4: jge 0xa85a2bff 0xa85a2bfa: mov $0xf4,%ecx 0xa85a2bff: mov (%edx,%ecx,1),%edi 0xa85a2c02: lea 0x1(%edi),%edi 0xa85a2c05: mov %edi,(%edx,%ecx,1) 0xa85a2c08: jl 0xa85a2b9c ;*if_icmpge ; - java.lang.String::hashCode@30 (line 1470) 0xa85a2c0a: mov 0x10(%esp),%ecx 0xa85a2c0e: mov %eax,0xc(%ecx) ;*putfield hash ; - java.lang.String::hashCode@50 (line 1473) 0xa85a2c11: add $0x28,%esp 0xa85a2c14: pop %ebp 0xa85a2c15: test %eax,0xb7712100 ; {poll_return} 0xa85a2c1b: ret 0xa85a2c1c: mov %eax,0x4(%esp) 0xa85a2c20: movl $0xffffffff,(%esp) 0xa85a2c27: call 0xa859fe20 ; OopMap{ecx=Oop off=332} ;*synchronization entry ; - java.lang.String::hashCode@-1 (line 1466) ; {runtime_call} 0xa85a2c2c: jmp 0xa85a2b33 0xa85a2c31: call 0xa859d460 ; OopMap{ecx=Oop esi=Oop off=342} ;*arraylength ; - java.lang.String::hashCode@13 (line 1467) ; {runtime_call} 0xa85a2c36: mov %edi,0x4(%esp) 0xa85a2c3a: movl $0x2d,(%esp) 0xa85a2c41: call 0xa859fe20 ; OopMap{[16]=Oop esi=Oop off=358} ;*goto ; - java.lang.String::hashCode@45 (line 1470) ; {runtime_call} 0xa85a2c46: jmp 0xa85a2bd3 0xa85a2c48: nop 0xa85a2c49: nop 0xa85a2c4a: mov %esp,%esi 0xa85a2c4c: shr $0xc,%esi 0xa85a2c4f: mov 0x188a440(,%esi,4),%esi ; {external_word} 0xa85a2c56: mov 0x19c(%esi),%eax 0xa85a2c5c: movl $0x0,0x19c(%esi) 0xa85a2c66: movl $0x0,0x1a0(%esi) 0xa85a2c70: add $0x28,%esp 0xa85a2c73: pop %ebp 0xa85a2c74: jmp 0xa8556820 ; {runtime_call} 0xa85a2c79: hlt 0xa85a2c7a: hlt 0xa85a2c7b: hlt 0xa85a2c7c: hlt 0xa85a2c7d: hlt 0xa85a2c7e: hlt 0xa85a2c7f: hlt [Exception Handler] [Stub Code] 0xa85a2c80: call 0xa859e860 ; {no_reloc} 0xa85a2c85: push $0x1790172 ; {external_word} 0xa85a2c8a: call 0xa85a2c8f 0xa85a2c8f: pusha 0xa85a2c90: call 0x0150c230 ; {runtime_call} 0xa85a2c95: hlt [Deopt Handler Code] 0xa85a2c96: push $0xa85a2c96 ; {section_word} 0xa85a2c9b: jmp 0xa853c520 ; {runtime_call} Decoding compiled method 0xa85a2188: Code: [Entry Point] [Constants] # {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String' # this: ecx = 'java/lang/String' # parm0: edx = 'java/lang/Object' # [sp+0x20] (sp of caller) 0xa85a22c0: nop 0xa85a22c1: nop 0xa85a22c2: nop 0xa85a22c3: nop 0xa85a22c4: nop 0xa85a22c5: nop 0xa85a22c6: nop 0xa85a22c7: nop 0xa85a22c8: nop 0xa85a22c9: nop 0xa85a22ca: nop 0xa85a22cb: nop 0xa85a22cc: nop 0xa85a22cd: nop 0xa85a22ce: nop 0xa85a22cf: nop 0xa85a22d0: nop 0xa85a22d1: nop 0xa85a22d2: nop 0xa85a22d3: nop 0xa85a22d4: nop 0xa85a22d5: nop 0xa85a22d6: nop 0xa85a22d7: cmp 0x4(%ecx),%eax 0xa85a22da: jne 0xa853b520 ; {runtime_call} [Verified Entry Point] 0xa85a22e0: mov %eax,-0x4000(%esp) 0xa85a22e7: push %ebp 0xa85a22e8: sub $0x18,%esp 0xa85a22eb: mov $0x88a732a8,%eax ; {metadata(method data for {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a22f0: mov 0xa4(%eax),%esi 0xa85a22f6: add $0x8,%esi 0xa85a22f9: mov %esi,0xa4(%eax) 0xa85a22ff: mov $0x8890da98,%eax ; {metadata({method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a2304: and $0x1ff8,%esi 0xa85a230a: cmp $0x0,%esi 0xa85a230d: je 0xa85a2605 ;*aload_0 ; - java.lang.String::equals@0 (line 977) 0xa85a2313: cmp %edx,%ecx 0xa85a2315: mov $0x88a732a8,%eax ; {metadata(method data for {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a231a: mov $0xcc,%esi 0xa85a231f: jne 0xa85a232a 0xa85a2325: mov $0xd4,%esi 0xa85a232a: mov (%eax,%esi,1),%edi 0xa85a232d: lea 0x1(%edi),%edi 0xa85a2330: mov %edi,(%eax,%esi,1) 0xa85a2333: je 0xa85a25f5 ;*if_acmpne ; - java.lang.String::equals@2 (line 977) 0xa85a2339: cmp $0x0,%edx 0xa85a233c: jne 0xa85a2352 0xa85a233e: mov $0x88a732a8,%esi ; {metadata(method data for {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a2343: orl $0x100,0xd8(%esi) 0xa85a234d: jmp 0xa85a23ec 0xa85a2352: cmpl $0x88910190,0x4(%edx) ; {metadata('java/lang/String')} 0xa85a2359: jne 0xa85a23d6 0xa85a235f: mov $0x88a732a8,%esi ; {metadata(method data for {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a2364: mov 0x4(%edx),%edi 0xa85a2367: cmp 0xe0(%esi),%edi 0xa85a236d: jne 0xa85a237b 0xa85a236f: addl $0x1,0xe4(%esi) 0xa85a2376: jmp 0xa85a23f0 0xa85a237b: cmp 0xe8(%esi),%edi 0xa85a2381: jne 0xa85a238f 0xa85a2383: addl $0x1,0xec(%esi) 0xa85a238a: jmp 0xa85a23f0 0xa85a238f: cmpl $0x0,0xe0(%esi) 0xa85a2399: jne 0xa85a23b0 0xa85a239b: mov %edi,0xe0(%esi) 0xa85a23a1: movl $0x1,0xe4(%esi) 0xa85a23ab: jmp 0xa85a23f0 0xa85a23b0: cmpl $0x0,0xe8(%esi) 0xa85a23ba: jne 0xa85a23d1 0xa85a23bc: mov %edi,0xe8(%esi) 0xa85a23c2: movl $0x1,0xec(%esi) 0xa85a23cc: jmp 0xa85a23f0 0xa85a23d1: jmp 0xa85a23f0 0xa85a23d6: mov $0x88a732a8,%esi ; {metadata(method data for {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a23db: subl $0x1,0xdc(%esi) 0xa85a23e2: jmp 0xa85a23ec 0xa85a23e7: jmp 0xa85a23f0 0xa85a23ec: xor %eax,%eax 0xa85a23ee: jmp 0xa85a23f5 0xa85a23f0: mov $0x1,%eax ;*instanceof ; - java.lang.String::equals@8 (line 980) 0xa85a23f5: cmp $0x0,%eax 0xa85a23f8: mov $0x88a732a8,%eax ; {metadata(method data for {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a23fd: mov $0xf4,%esi 0xa85a2402: je 0xa85a240d 0xa85a2408: mov $0xfc,%esi 0xa85a240d: mov (%eax,%esi,1),%edi 0xa85a2410: lea 0x1(%edi),%edi 0xa85a2413: mov %edi,(%eax,%esi,1) 0xa85a2416: je 0xa85a25e5 ;*ifeq ; - java.lang.String::equals@11 (line 980) 0xa85a241c: cmp $0x0,%edx 0xa85a241f: jne 0xa85a2435 0xa85a2421: mov $0x88a732a8,%esi ; {metadata(method data for {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a2426: orl $0x100,0x100(%esi) 0xa85a2430: jmp 0xa85a24cf 0xa85a2435: cmpl $0x88910190,0x4(%edx) ; {metadata('java/lang/String')} 0xa85a243c: jne 0xa85a24b9 0xa85a2442: mov $0x88a732a8,%esi ; {metadata(method data for {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a2447: mov 0x4(%edx),%edi 0xa85a244a: cmp 0x108(%esi),%edi 0xa85a2450: jne 0xa85a245e 0xa85a2452: addl $0x1,0x10c(%esi) 0xa85a2459: jmp 0xa85a24cf 0xa85a245e: cmp 0x110(%esi),%edi 0xa85a2464: jne 0xa85a2472 0xa85a2466: addl $0x1,0x114(%esi) 0xa85a246d: jmp 0xa85a24cf 0xa85a2472: cmpl $0x0,0x108(%esi) 0xa85a247c: jne 0xa85a2493 0xa85a247e: mov %edi,0x108(%esi) 0xa85a2484: movl $0x1,0x10c(%esi) 0xa85a248e: jmp 0xa85a24cf 0xa85a2493: cmpl $0x0,0x110(%esi) 0xa85a249d: jne 0xa85a24b4 0xa85a249f: mov %edi,0x110(%esi) 0xa85a24a5: movl $0x1,0x114(%esi) 0xa85a24af: jmp 0xa85a24cf 0xa85a24b4: jmp 0xa85a24cf 0xa85a24b9: mov $0x88a732a8,%esi ; {metadata(method data for {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a24be: subl $0x1,0x104(%esi) 0xa85a24c5: jmp 0xa85a261a 0xa85a24ca: jmp 0xa85a24cf 0xa85a24cf: mov %edx,%eax ;*checkcast ; - java.lang.String::equals@15 (line 981) 0xa85a24d1: mov 0x8(%ecx),%esi ;*getfield value ; - java.lang.String::equals@20 (line 982) 0xa85a24d4: mov 0x8(%esi),%edi ;*arraylength ; - java.lang.String::equals@23 (line 982) ; implicit exception: dispatches to 0xa85a2622 0xa85a24d7: mov 0x8(%eax),%eax ;*getfield value ; - java.lang.String::equals@27 (line 983) ; implicit exception: dispatches to 0xa85a2627 0xa85a24da: mov 0x8(%eax),%ebx ;*arraylength ; - java.lang.String::equals@30 (line 983) ; implicit exception: dispatches to 0xa85a262c 0xa85a24dd: cmp %ebx,%edi 0xa85a24df: mov $0x88a732a8,%ebx ; {metadata(method data for {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a24e4: mov $0x11c,%edx 0xa85a24e9: jne 0xa85a24f4 0xa85a24ef: mov $0x124,%edx 0xa85a24f4: mov (%ebx,%edx,1),%ecx 0xa85a24f7: lea 0x1(%ecx),%ecx 0xa85a24fa: mov %ecx,(%ebx,%edx,1) 0xa85a24fd: jne 0xa85a25e5 ;*if_icmpne ; - java.lang.String::equals@31 (line 983) 0xa85a2503: mov $0x0,%ebx 0xa85a2508: jmp 0xa85a2592 ;*iload_3 ; - java.lang.String::equals@49 (line 987) 0xa85a250d: xchg %ax,%ax 0xa85a2510: cmp 0x8(%esi),%ebx 0xa85a2513: jae 0xa85a2631 0xa85a2519: movzwl 0xc(%esi,%ebx,2),%edi ;*caload ; - java.lang.String::equals@60 (line 988) 0xa85a251e: cmp 0x8(%eax),%ebx 0xa85a2521: jae 0xa85a2639 0xa85a2527: movzwl 0xc(%eax,%ebx,2),%edx ;*caload ; - java.lang.String::equals@65 (line 988) 0xa85a252c: cmp %edx,%edi 0xa85a252e: mov $0x88a732a8,%edi ; {metadata(method data for {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a2533: mov $0x13c,%edx 0xa85a2538: je 0xa85a2543 0xa85a253e: mov $0x144,%edx 0xa85a2543: mov (%edi,%edx,1),%ecx 0xa85a2546: lea 0x1(%ecx),%ecx 0xa85a2549: mov %ecx,(%edi,%edx,1) 0xa85a254c: jne 0xa85a25c5 ;*if_icmpeq ; - java.lang.String::equals@66 (line 988) 0xa85a2552: mov 0x10(%esp),%edx 0xa85a2556: inc %ebx 0xa85a2557: mov $0x88a732a8,%edi ; {metadata(method data for {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a255c: mov 0xa8(%edi),%ecx 0xa85a2562: add $0x8,%ecx 0xa85a2565: mov %ecx,0xa8(%edi) 0xa85a256b: mov $0x8890da98,%edi ; {metadata({method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a2570: and $0xfff8,%ecx 0xa85a2576: cmp $0x0,%ecx 0xa85a2579: je 0xa85a2641 ; OopMap{eax=Oop esi=Oop off=703} ;*goto ; - java.lang.String::equals@74 (line 990) 0xa85a257f: test %eax,0xb7712100 ; {poll} 0xa85a2585: mov $0x88a732a8,%edi ; {metadata(method data for {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a258a: incl 0x14c(%edi) 0xa85a2590: mov %edx,%edi ;*goto ; - java.lang.String::equals@74 (line 990) 0xa85a2592: mov %edi,%edx 0xa85a2594: dec %edx 0xa85a2595: cmp $0x0,%edi 0xa85a2598: mov $0x88a732a8,%edi ; {metadata(method data for {method} {0x8890da98} 'equals' '(Ljava/lang/Object;)Z' in 'java/lang/String')} 0xa85a259d: mov $0x12c,%ecx 0xa85a25a2: je 0xa85a25ad 0xa85a25a8: mov $0x134,%ecx 0xa85a25ad: mov %edx,0x10(%esp) 0xa85a25b1: mov (%edi,%ecx,1),%edx 0xa85a25b4: lea 0x1(%edx),%edx 0xa85a25b7: mov %edx,(%edi,%ecx,1) 0xa85a25ba: je 0xa85a25d5 0xa85a25c0: jmp 0xa85a2510 ;*ifeq ; - java.lang.String::equals@53 (line 987) 0xa85a25c5: mov $0x0,%eax 0xa85a25ca: add $0x18,%esp 0xa85a25cd: pop %ebp 0xa85a25ce: test %eax,0xb7712100 ; {poll_return} 0xa85a25d4: ret ;*ireturn ; - java.lang.String::equals@70 (line 989) 0xa85a25d5: mov $0x1,%eax 0xa85a25da: add $0x18,%esp 0xa85a25dd: pop %ebp 0xa85a25de: test %eax,0xb7712100 ; {poll_return} 0xa85a25e4: ret ;*ireturn ; - java.lang.String::equals@78 (line 992) 0xa85a25e5: mov $0x0,%eax 0xa85a25ea: add $0x18,%esp 0xa85a25ed: pop %ebp 0xa85a25ee: test %eax,0xb7712100 ; {poll_return} 0xa85a25f4: ret ;*ireturn ; - java.lang.String::equals@80 (line 995) 0xa85a25f5: mov $0x1,%eax 0xa85a25fa: add $0x18,%esp 0xa85a25fd: pop %ebp 0xa85a25fe: test %eax,0xb7712100 ; {poll_return} 0xa85a2604: ret 0xa85a2605: mov %eax,0x4(%esp) 0xa85a2609: movl $0xffffffff,(%esp) 0xa85a2610: call 0xa859fe20 ; OopMap{ecx=Oop edx=Oop off=853} ;*synchronization entry ; - java.lang.String::equals@-1 (line 977) ; {runtime_call} 0xa85a2615: jmp 0xa85a2313 0xa85a261a: mov %edx,(%esp) 0xa85a261d: call 0xa859ea60 ; OopMap{ecx=Oop off=866} ;*checkcast ; - java.lang.String::equals@15 (line 981) ; {runtime_call} 0xa85a2622: call 0xa859d460 ; OopMap{eax=Oop esi=Oop off=871} ;*arraylength ; - java.lang.String::equals@23 (line 982) ; {runtime_call} 0xa85a2627: call 0xa859d460 ; OopMap{esi=Oop off=876} ;*getfield value ; - java.lang.String::equals@27 (line 983) ; {runtime_call} 0xa85a262c: call 0xa859d460 ; OopMap{esi=Oop eax=Oop off=881} ;*arraylength ; - java.lang.String::equals@30 (line 983) ; {runtime_call} 0xa85a2631: mov %ebx,(%esp) 0xa85a2634: call 0xa859d160 ; OopMap{eax=Oop esi=Oop off=889} ;*caload ; - java.lang.String::equals@60 (line 988) ; {runtime_call} 0xa85a2639: mov %ebx,(%esp) 0xa85a263c: call 0xa859d160 ; OopMap{eax=Oop esi=Oop off=897} ;*caload ; - java.lang.String::equals@65 (line 988) ; {runtime_call} 0xa85a2641: mov %edi,0x4(%esp) 0xa85a2645: movl $0x4a,(%esp) 0xa85a264c: call 0xa859fe20 ; OopMap{eax=Oop esi=Oop off=913} ;*goto ; - java.lang.String::equals@74 (line 990) ; {runtime_call} 0xa85a2651: jmp 0xa85a257f 0xa85a2656: nop 0xa85a2657: nop 0xa85a2658: mov %esp,%esi 0xa85a265a: shr $0xc,%esi 0xa85a265d: mov 0x188a440(,%esi,4),%esi ; {external_word} 0xa85a2664: mov 0x19c(%esi),%eax 0xa85a266a: movl $0x0,0x19c(%esi) 0xa85a2674: movl $0x0,0x1a0(%esi) 0xa85a267e: add $0x18,%esp 0xa85a2681: pop %ebp 0xa85a2682: jmp 0xa8556820 ; {runtime_call} 0xa85a2687: hlt 0xa85a2688: hlt 0xa85a2689: hlt 0xa85a268a: hlt 0xa85a268b: hlt 0xa85a268c: hlt 0xa85a268d: hlt 0xa85a268e: hlt 0xa85a268f: hlt 0xa85a2690: hlt 0xa85a2691: hlt 0xa85a2692: hlt 0xa85a2693: hlt 0xa85a2694: hlt 0xa85a2695: hlt 0xa85a2696: hlt 0xa85a2697: hlt 0xa85a2698: hlt 0xa85a2699: hlt 0xa85a269a: hlt 0xa85a269b: hlt 0xa85a269c: hlt 0xa85a269d: hlt 0xa85a269e: hlt 0xa85a269f: hlt [Exception Handler] [Stub Code] 0xa85a26a0: call 0xa859e860 ; {no_reloc} 0xa85a26a5: push $0x1790172 ; {external_word} 0xa85a26aa: call 0xa85a26af 0xa85a26af: pusha 0xa85a26b0: call 0x0150c230 ; {runtime_call} 0xa85a26b5: hlt [Deopt Handler Code] 0xa85a26b6: push $0xa85a26b6 ; {section_word} 0xa85a26bb: jmp 0xa853c520 ; {runtime_call} Decoding compiled method 0xa85a1d48: Code: [Entry Point] [Constants] # {method} {0x8890d450} 'charAt' '(I)C' in 'java/lang/String' # this: ecx = 'java/lang/String' # parm0: edx = int # [sp+0x20] (sp of caller) 0xa85a1e60: nop 0xa85a1e61: nop 0xa85a1e62: nop 0xa85a1e63: nop 0xa85a1e64: nop 0xa85a1e65: nop 0xa85a1e66: nop 0xa85a1e67: nop 0xa85a1e68: nop 0xa85a1e69: nop 0xa85a1e6a: nop 0xa85a1e6b: nop 0xa85a1e6c: nop 0xa85a1e6d: nop 0xa85a1e6e: nop 0xa85a1e6f: nop 0xa85a1e70: nop 0xa85a1e71: nop 0xa85a1e72: nop 0xa85a1e73: nop 0xa85a1e74: nop 0xa85a1e75: nop 0xa85a1e76: nop 0xa85a1e77: cmp 0x4(%ecx),%eax 0xa85a1e7a: jne 0xa853b520 ; {runtime_call} [Verified Entry Point] 0xa85a1e80: mov %eax,-0x4000(%esp) 0xa85a1e87: push %ebp 0xa85a1e88: sub $0x18,%esp 0xa85a1e8b: mov %edx,%esi 0xa85a1e8d: mov $0x88a34c40,%eax ; {metadata(method data for {method} {0x8890d450} 'charAt' '(I)C' in 'java/lang/String')} 0xa85a1e92: mov 0xa4(%eax),%edx 0xa85a1e98: add $0x8,%edx 0xa85a1e9b: mov %edx,0xa4(%eax) 0xa85a1ea1: mov $0x8890d450,%eax ; {metadata({method} {0x8890d450} 'charAt' '(I)C' in 'java/lang/String')} 0xa85a1ea6: and $0x1ff8,%edx 0xa85a1eac: cmp $0x0,%edx 0xa85a1eaf: je 0xa85a1f49 ;*iload_1 ; - java.lang.String::charAt@0 (line 657) 0xa85a1eb5: cmp $0x0,%esi 0xa85a1eb8: mov $0x88a34c40,%eax ; {metadata(method data for {method} {0x8890d450} 'charAt' '(I)C' in 'java/lang/String')} 0xa85a1ebd: mov $0xcc,%edx 0xa85a1ec2: jl 0xa85a1ecd 0xa85a1ec8: mov $0xd4,%edx 0xa85a1ecd: mov (%eax,%edx,1),%edi 0xa85a1ed0: lea 0x1(%edi),%edi 0xa85a1ed3: mov %edi,(%eax,%edx,1) 0xa85a1ed6: jl 0xa85a1f18 ;*iflt ; - java.lang.String::charAt@1 (line 657) 0xa85a1edc: mov 0x8(%ecx),%eax ;*getfield value ; - java.lang.String::charAt@6 (line 657) 0xa85a1edf: mov 0x8(%eax),%edx ;*arraylength ; - java.lang.String::charAt@9 (line 657) ; implicit exception: dispatches to 0xa85a1f5e 0xa85a1ee2: cmp %edx,%esi 0xa85a1ee4: mov $0x88a34c40,%edx ; {metadata(method data for {method} {0x8890d450} 'charAt' '(I)C' in 'java/lang/String')} 0xa85a1ee9: mov $0xdc,%ecx 0xa85a1eee: jl 0xa85a1ef9 0xa85a1ef4: mov $0xe4,%ecx 0xa85a1ef9: mov (%edx,%ecx,1),%edi 0xa85a1efc: lea 0x1(%edi),%edi 0xa85a1eff: mov %edi,(%edx,%ecx,1) 0xa85a1f02: jge 0xa85a1f18 ;*if_icmplt ; - java.lang.String::charAt@10 (line 657) 0xa85a1f08: movzwl 0xc(%eax,%esi,2),%eax ;*caload ; - java.lang.String::charAt@27 (line 660) 0xa85a1f0d: add $0x18,%esp 0xa85a1f10: pop %ebp 0xa85a1f11: test %eax,0xb7712100 ; {poll_return} 0xa85a1f17: ret ;*ireturn ; - java.lang.String::charAt@28 (line 660) 0xa85a1f18: jmp 0xa85a1f6d ; {no_reloc} 0xa85a1f1d: jmp 0xa85a1f77 ;*new ; - java.lang.String::charAt@13 (line 658) 0xa85a1f22: mov %eax,%edx 0xa85a1f24: mov $0x88a34c40,%ecx ; {metadata(method data for {method} {0x8890d450} 'charAt' '(I)C' in 'java/lang/String')} 0xa85a1f29: addl $0x1,0xec(%ecx) 0xa85a1f30: mov %esi,%edx 0xa85a1f32: mov %eax,%ecx ;*invokespecial <init> ; - java.lang.String::charAt@18 (line 658) 0xa85a1f34: mov %eax,0x10(%esp) 0xa85a1f38: nop 0xa85a1f39: nop 0xa85a1f3a: nop 0xa85a1f3b: call 0xa853b760 ; OopMap{[16]=Oop off=224} ;*invokespecial <init> ; - java.lang.String::charAt@18 (line 658) ; {optimized virtual_call} 0xa85a1f40: mov 0x10(%esp),%eax 0xa85a1f44: jmp 0xa85a1fa8 0xa85a1f49: mov %eax,0x4(%esp) 0xa85a1f4d: movl $0xffffffff,(%esp) 0xa85a1f54: call 0xa859fe20 ; OopMap{ecx=Oop off=249} ;*synchronization entry ; - java.lang.String::charAt@-1 (line 657) ; {runtime_call} 0xa85a1f59: jmp 0xa85a1eb5 0xa85a1f5e: call 0xa859d460 ; OopMap{eax=Oop off=259} ;*arraylength ; - java.lang.String::charAt@9 (line 657) ; {runtime_call} 0xa85a1f63: mov $0x0,%edx ; {metadata(NULL)} 0xa85a1f68: mov $0x5050a00,%eax 0xa85a1f6d: call 0xa859f520 ; OopMap{off=274} ;*new ; - java.lang.String::charAt@13 (line 658) ; {runtime_call} 0xa85a1f72: jmp 0xa85a1f18 0xa85a1f74: nop 0xa85a1f75: nop 0xa85a1f76: nop 0xa85a1f77: mov %edx,%edx 0xa85a1f79: call 0xa859d6a0 ; OopMap{off=286} ;*new ; - java.lang.String::charAt@13 (line 658) ; {runtime_call} 0xa85a1f7e: jmp 0xa85a1f22 0xa85a1f80: nop 0xa85a1f81: nop 0xa85a1f82: mov %esp,%esi 0xa85a1f84: shr $0xc,%esi 0xa85a1f87: mov 0x188a440(,%esi,4),%esi ; {external_word} 0xa85a1f8e: mov 0x19c(%esi),%eax 0xa85a1f94: movl $0x0,0x19c(%esi) 0xa85a1f9e: movl $0x0,0x1a0(%esi) 0xa85a1fa8: add $0x18,%esp 0xa85a1fab: pop %ebp 0xa85a1fac: jmp 0xa8556820 ; {runtime_call} 0xa85a1fb1: hlt 0xa85a1fb2: hlt 0xa85a1fb3: hlt 0xa85a1fb4: hlt 0xa85a1fb5: hlt 0xa85a1fb6: hlt 0xa85a1fb7: hlt 0xa85a1fb8: hlt 0xa85a1fb9: hlt 0xa85a1fba: hlt 0xa85a1fbb: hlt 0xa85a1fbc: hlt 0xa85a1fbd: hlt 0xa85a1fbe: hlt 0xa85a1fbf: hlt [Stub Code] 0xa85a1fc0: nop ; {no_reloc} 0xa85a1fc1: nop 0xa85a1fc2: mov $0x0,%ebx ; {static_stub} 0xa85a1fc7: jmp 0xa85a1fc7 ; {runtime_call} [Exception Handler] 0xa85a1fcc: call 0xa859e860 ; {runtime_call} 0xa85a1fd1: push $0x1790172 ; {external_word} 0xa85a1fd6: call 0xa85a1fdb 0xa85a1fdb: pusha 0xa85a1fdc: call 0x0150c230 ; {runtime_call} 0xa85a1fe1: hlt [Deopt Handler Code] 0xa85a1fe2: push $0xa85a1fe2 ; {section_word} 0xa85a1fe7: jmp 0xa853c520 ; {runtime_call} Decoding compiled method 0xa85a1a88: Code: [Entry Point] [Constants] # {method} {0x8890d360} 'length' '()I' in 'java/lang/String' # [sp+0x20] (sp of caller) 0xa85a1ba0: nop 0xa85a1ba1: nop 0xa85a1ba2: nop 0xa85a1ba3: nop 0xa85a1ba4: nop 0xa85a1ba5: nop 0xa85a1ba6: nop 0xa85a1ba7: nop 0xa85a1ba8: nop 0xa85a1ba9: nop 0xa85a1baa: nop 0xa85a1bab: nop 0xa85a1bac: nop 0xa85a1bad: nop 0xa85a1bae: nop 0xa85a1baf: nop 0xa85a1bb0: nop 0xa85a1bb1: nop 0xa85a1bb2: nop 0xa85a1bb3: nop 0xa85a1bb4: nop 0xa85a1bb5: nop 0xa85a1bb6: nop 0xa85a1bb7: cmp 0x4(%ecx),%eax 0xa85a1bba: jne 0xa853b520 ; {runtime_call} [Verified Entry Point] 0xa85a1bc0: mov %eax,-0x4000(%esp) 0xa85a1bc7: push %ebp 0xa85a1bc8: sub $0x18,%esp 0xa85a1bcb: mov $0x88a73a70,%eax ; {metadata(method data for {method} {0x8890d360} 'length' '()I' in 'java/lang/String')} 0xa85a1bd0: mov 0xa4(%eax),%esi 0xa85a1bd6: add $0x8,%esi 0xa85a1bd9: mov %esi,0xa4(%eax) 0xa85a1bdf: mov $0x8890d360,%eax ; {metadata({method} {0x8890d360} 'length' '()I' in 'java/lang/String')} 0xa85a1be4: and $0x1ff8,%esi 0xa85a1bea: cmp $0x0,%esi 0xa85a1bed: je 0xa85a1c04 ;*aload_0 ; - java.lang.String::length@0 (line 623) 0xa85a1bf3: mov 0x8(%ecx),%eax ;*getfield value ; - java.lang.String::length@1 (line 623) 0xa85a1bf6: mov 0x8(%eax),%eax ;*arraylength ; - java.lang.String::length@4 (line 623) ; implicit exception: dispatches to 0xa85a1c16 0xa85a1bf9: add $0x18,%esp 0xa85a1bfc: pop %ebp 0xa85a1bfd: test %eax,0xb7712100 ; {poll_return} 0xa85a1c03: ret 0xa85a1c04: mov %eax,0x4(%esp) 0xa85a1c08: movl $0xffffffff,(%esp) 0xa85a1c0f: call 0xa859fe20 ; OopMap{ecx=Oop off=116} ;*synchronization entry ; - java.lang.String::length@-1 (line 623) ; {runtime_call} 0xa85a1c14: jmp 0xa85a1bf3 0xa85a1c16: call 0xa859d460 ; OopMap{off=123} ;*arraylength ; - java.lang.String::length@4 (line 623) ; {runtime_call} 0xa85a1c1b: nop 0xa85a1c1c: nop 0xa85a1c1d: mov %esp,%esi 0xa85a1c1f: shr $0xc,%esi 0xa85a1c22: mov 0x188a440(,%esi,4),%esi ; {external_word} 0xa85a1c29: mov 0x19c(%esi),%eax 0xa85a1c2f: movl $0x0,0x19c(%esi) 0xa85a1c39: movl $0x0,0x1a0(%esi) 0xa85a1c43: add $0x18,%esp 0xa85a1c46: pop %ebp 0xa85a1c47: jmp 0xa8556820 ; {runtime_call} 0xa85a1c4c: hlt 0xa85a1c4d: hlt 0xa85a1c4e: hlt 0xa85a1c4f: hlt 0xa85a1c50: hlt 0xa85a1c51: hlt 0xa85a1c52: hlt 0xa85a1c53: hlt 0xa85a1c54: hlt 0xa85a1c55: hlt 0xa85a1c56: hlt 0xa85a1c57: hlt 0xa85a1c58: hlt 0xa85a1c59: hlt 0xa85a1c5a: hlt 0xa85a1c5b: hlt 0xa85a1c5c: hlt 0xa85a1c5d: hlt 0xa85a1c5e: hlt 0xa85a1c5f: hlt [Exception Handler] [Stub Code] 0xa85a1c60: call 0xa859e860 ; {no_reloc} 0xa85a1c65: push $0x1790172 ; {external_word} 0xa85a1c6a: call 0xa85a1c6f 0xa85a1c6f: pusha 0xa85a1c70: call 0x0150c230 ; {runtime_call} 0xa85a1c75: hlt [Deopt Handler Code] 0xa85a1c76: push $0xa85a1c76 ; {section_word} 0xa85a1c7b: jmp 0xa853c520 ; {runtime_call} Decoding compiled method 0xa85a1588: Code: [Entry Point] [Constants] # {method} {0x88928b90} 'get' '()Ljava/lang/Object;' in 'java/lang/ref/Reference' # [sp+0x20] (sp of caller) 0xa85a1680: nop 0xa85a1681: nop 0xa85a1682: nop 0xa85a1683: nop 0xa85a1684: nop 0xa85a1685: nop 0xa85a1686: nop 0xa85a1687: nop 0xa85a1688: nop 0xa85a1689: nop 0xa85a168a: nop 0xa85a168b: nop 0xa85a168c: nop 0xa85a168d: nop 0xa85a168e: nop 0xa85a168f: nop 0xa85a1690: nop 0xa85a1691: nop 0xa85a1692: nop 0xa85a1693: nop 0xa85a1694: nop 0xa85a1695: nop 0xa85a1696: nop 0xa85a1697: cmp 0x4(%ecx),%eax 0xa85a169a: jne 0xa853b520 ; {runtime_call} [Verified Entry Point] 0xa85a16a0: mov %eax,-0x4000(%esp) 0xa85a16a7: push %ebp 0xa85a16a8: sub $0x18,%esp 0xa85a16ab: mov 0x8(%ecx),%eax ;*aload_0 ; - java.lang.ref.Reference::get@0 (line 254) 0xa85a16ae: add $0x18,%esp 0xa85a16b1: pop %ebp 0xa85a16b2: test %eax,0xb7712100 ; {poll_return} 0xa85a16b8: ret 0xa85a16b9: nop 0xa85a16ba: nop 0xa85a16bb: mov %esp,%esi 0xa85a16bd: shr $0xc,%esi 0xa85a16c0: mov 0x188a440(,%esi,4),%esi ; {external_word} 0xa85a16c7: mov 0x19c(%esi),%eax 0xa85a16cd: movl $0x0,0x19c(%esi) 0xa85a16d7: movl $0x0,0x1a0(%esi) 0xa85a16e1: add $0x18,%esp 0xa85a16e4: pop %ebp 0xa85a16e5: jmp 0xa8556820 ; {runtime_call} 0xa85a16ea: hlt 0xa85a16eb: hlt 0xa85a16ec: hlt 0xa85a16ed: hlt 0xa85a16ee: hlt 0xa85a16ef: hlt 0xa85a16f0: hlt 0xa85a16f1: hlt 0xa85a16f2: hlt 0xa85a16f3: hlt 0xa85a16f4: hlt 0xa85a16f5: hlt 0xa85a16f6: hlt 0xa85a16f7: hlt 0xa85a16f8: hlt 0xa85a16f9: hlt 0xa85a16fa: hlt 0xa85a16fb: hlt 0xa85a16fc: hlt 0xa85a16fd: hlt 0xa85a16fe: hlt 0xa85a16ff: hlt [Exception Handler] [Stub Code] 0xa85a1700: call 0xa859e860 ; {no_reloc} 0xa85a1705: push $0x1790172 ; {external_word} 0xa85a170a: call 0xa85a170f 0xa85a170f: pusha 0xa85a1710: call 0x0150c230 ; {runtime_call} 0xa85a1715: hlt [Deopt Handler Code] 0xa85a1716: push $0xa85a1716 ; {section_word} 0xa85a171b: jmp 0xa853c520 ; {runtime_call} Decoding compiled method 0xa85a1188: Code: [Entry Point] [Constants] # {method} {0x8890ab68} '<init>' '()V' in 'java/lang/Object' # [sp+0x20] (sp of caller) 0xa85a12a0: nop 0xa85a12a1: nop 0xa85a12a2: nop 0xa85a12a3: nop 0xa85a12a4: nop 0xa85a12a5: nop 0xa85a12a6: nop 0xa85a12a7: nop 0xa85a12a8: nop 0xa85a12a9: nop 0xa85a12aa: nop 0xa85a12ab: nop 0xa85a12ac: nop 0xa85a12ad: nop 0xa85a12ae: nop 0xa85a12af: nop 0xa85a12b0: nop 0xa85a12b1: nop 0xa85a12b2: nop 0xa85a12b3: nop 0xa85a12b4: nop 0xa85a12b5: nop 0xa85a12b6: nop 0xa85a12b7: cmp 0x4(%ecx),%eax 0xa85a12ba: jne 0xa853b520 ; {runtime_call} [Verified Entry Point] 0xa85a12c0: mov %eax,-0x4000(%esp) 0xa85a12c7: push %ebp 0xa85a12c8: sub $0x18,%esp 0xa85a12cb: mov $0x88a1c7c0,%esi ; {metadata(method data for {method} {0x8890ab68} '<init>' '()V' in 'java/lang/Object')} 0xa85a12d0: mov 0xa4(%esi),%edi 0xa85a12d6: add $0x8,%edi 0xa85a12d9: mov %edi,0xa4(%esi) 0xa85a12df: mov $0x8890ab68,%esi ; {metadata({method} {0x8890ab68} '<init>' '()V' in 'java/lang/Object')} 0xa85a12e4: and $0x1ff8,%edi 0xa85a12ea: cmp $0x0,%edi 0xa85a12ed: je 0xa85a130a 0xa85a12f3: mov %ecx,(%esp) ;*return ; - java.lang.Object::<init>@0 (line 37) 0xa85a12f6: mov %ecx,0x10(%esp) 0xa85a12fa: call 0xa859d560 ; OopMap{[16]=Oop off=95} ;*return ; - java.lang.Object::<init>@0 (line 37) ; {runtime_call} 0xa85a12ff: add $0x18,%esp 0xa85a1302: pop %ebp 0xa85a1303: test %eax,0xb7712100 ; {poll_return} 0xa85a1309: ret 0xa85a130a: mov %esi,0x4(%esp) 0xa85a130e: movl $0xffffffff,(%esp) 0xa85a1315: call 0xa859fe20 ; OopMap{ecx=Oop off=122} ;*synchronization entry ; - java.lang.Object::<init>@-1 (line 37) ; {runtime_call} 0xa85a131a: jmp 0xa85a12f3 0xa85a131c: nop 0xa85a131d: nop 0xa85a131e: mov %esp,%esi 0xa85a1320: shr $0xc,%esi 0xa85a1323: mov 0x188a440(,%esi,4),%esi ; {external_word} 0xa85a132a: mov 0x19c(%esi),%eax 0xa85a1330: movl $0x0,0x19c(%esi) 0xa85a133a: movl $0x0,0x1a0(%esi) 0xa85a1344: add $0x18,%esp 0xa85a1347: pop %ebp 0xa85a1348: jmp 0xa8556820 ; {runtime_call} 0xa85a134d: hlt 0xa85a134e: hlt 0xa85a134f: hlt 0xa85a1350: hlt 0xa85a1351: hlt 0xa85a1352: hlt 0xa85a1353: hlt 0xa85a1354: hlt 0xa85a1355: hlt 0xa85a1356: hlt 0xa85a1357: hlt 0xa85a1358: hlt 0xa85a1359: hlt 0xa85a135a: hlt 0xa85a135b: hlt 0xa85a135c: hlt 0xa85a135d: hlt 0xa85a135e: hlt 0xa85a135f: hlt [Exception Handler] [Stub Code] 0xa85a1360: call 0xa859e860 ; {no_reloc} 0xa85a1365: push $0x1790172 ; {external_word} 0xa85a136a: call 0xa85a136f 0xa85a136f: pusha 0xa85a1370: call 0x0150c230 ; {runtime_call} 0xa85a1375: hlt [Deopt Handler Code] 0xa85a1376: push $0xa85a1376 ; {section_word} 0xa85a137b: jmp 0xa853c520 ; {runtime_call} Decoding compiled method 0xa85a0ec8: Code: [Entry Point] # {method} {0x8891cd90} 'arraycopy' '(Ljava/lang/Object;ILjava/lang/Object;II)V' in 'java/lang/System' # parm0: ecx = 'java/lang/Object' # parm1: edx = int # parm2: [sp+0x40] = 'java/lang/Object' (sp of caller) # parm3: [sp+0x44] = int # parm4: [sp+0x48] = int 0xa85a0fe0: cmp 0x4(%ecx),%eax 0xa85a0fe3: je 0xa85a0ff0 0xa85a0fe9: jmp 0xa853b520 ; {runtime_call} 0xa85a0fee: xchg %ax,%ax [Verified Entry Point] 0xa85a0ff0: mov %eax,-0x4000(%esp) 0xa85a0ff7: push %ebp 0xa85a0ff8: mov %esp,%ebp 0xa85a0ffa: sub $0x38,%esp 0xa85a0ffd: mov %esp,%edi 0xa85a0fff: shr $0xc,%edi 0xa85a1002: mov 0x188a440(,%edi,4),%edi ; {external_word} 0xa85a1009: mov %ecx,0x1c(%esp) 0xa85a100d: xor %eax,%eax 0xa85a100f: cmp $0x0,%ecx 0xa85a1012: je 0xa85a101c 0xa85a1018: lea 0x1c(%esp),%eax 0xa85a101c: mov %eax,0x8(%esp) 0xa85a1020: mov %edx,0xc(%esp) 0xa85a1024: xor %eax,%eax 0xa85a1026: cmpl $0x0,0x8(%ebp) 0xa85a102d: je 0xa85a1036 0xa85a1033: lea 0x8(%ebp),%eax 0xa85a1036: mov %eax,0x10(%esp) 0xa85a103a: mov 0xc(%ebp),%eax 0xa85a103d: mov %eax,0x14(%esp) 0xa85a1041: mov 0x10(%ebp),%eax 0xa85a1044: mov %eax,0x18(%esp) 0xa85a1048: mov $0x9e200ab8,%esi ; {oop(a 'java/lang/Class' = 'java/lang/System')} 0xa85a104d: mov %esi,0x24(%esp) 0xa85a1051: lea 0x24(%esp),%esi 0xa85a1055: mov %esi,0x4(%esp) ; OopMap{[28]=Oop [64]=Oop [36]=Oop off=121} 0xa85a1059: movl $0xa85a1059,0x12c(%edi) ; {section_word} 0xa85a1063: mov %esp,0x128(%edi) 0xa85a1069: cmpb $0x0,0x18757c2 ; {external_word} 0xa85a1070: je 0xa85a1085 0xa85a1076: mov $0x8891cd90,%eax ; {metadata({method} {0x8891cd90} 'arraycopy' '(Ljava/lang/Object;ILjava/lang/Object;II)V' in 'java/lang/System')} 0xa85a107b: push %eax 0xa85a107c: push %edi 0xa85a107d: call 0x0165f200 ; {runtime_call} 0xa85a1082: add $0x8,%esp 0xa85a1085: lea 0x138(%edi),%edx 0xa85a108b: mov %edx,(%esp) 0xa85a108e: movl $0x4,0x174(%edi) 0xa85a1098: call 0x0140b220 ; {runtime_call} 0xa85a109d: vzeroupper 0xa85a10a0: movl $0x5,0x174(%edi) 0xa85a10aa: mov %edi,%ecx 0xa85a10ac: shr $0x3,%ecx 0xa85a10af: and $0xffc,%ecx 0xa85a10b5: mov %ecx,-0x488ef000(,%ecx,1) ; {external_word} 0xa85a10bc: cmpl $0x0,0x187fc60 ; {external_word} 0xa85a10c6: jne 0xa85a10d9 0xa85a10cc: cmpl $0x0,0x18(%edi) 0xa85a10d3: je 0xa85a10e2 0xa85a10d9: push %edi 0xa85a10da: call 0x016fad00 ; {runtime_call} 0xa85a10df: add $0x4,%esp 0xa85a10e2: movl $0x8,0x174(%edi) 0xa85a10ec: cmpl $0x1,0x194(%edi) 0xa85a10f6: je 0xa85a114a 0xa85a10fc: cmpb $0x0,0x18757c2 ; {external_word} 0xa85a1103: je 0xa85a1118 0xa85a1109: mov $0x8891cd90,%eax ; {metadata({method} {0x8891cd90} 'arraycopy' '(Ljava/lang/Object;ILjava/lang/Object;II)V' in 'java/lang/System')} 0xa85a110e: push %eax 0xa85a110f: push %edi 0xa85a1110: call 0x0165f1d0 ; {runtime_call} 0xa85a1115: add $0x8,%esp 0xa85a1118: movl $0x0,0x128(%edi) 0xa85a1122: movl $0x0,0x12c(%edi) 0xa85a112c: mov 0x20(%edi),%ecx 0xa85a112f: movl $0x0,0x80(%ecx) 0xa85a1139: cmpl $0x0,0x4(%edi) 0xa85a1140: jne 0xa85a1151 0xa85a1146: mov %ebp,%esp 0xa85a1148: pop %ebp 0xa85a1149: ret 0xa85a114a: call 0x0165f1a0 ; {runtime_call} 0xa85a114f: jmp 0xa85a10fc 0xa85a1151: emms 0xa85a1153: mov %ebp,%esp 0xa85a1155: pop %ebp 0xa85a1156: jmp Stub::forward exception ; {runtime_call} 0xa85a115b: hlt Decoding compiled method 0xa85a0c08: Code: [Entry Point] [Verified Entry Point] [Constants] # {method} {0x889bd9a8} 'min' '(II)I' in 'java/lang/Math' # parm0: ecx = int # parm1: edx = int # [sp+0x20] (sp of caller) 0xa85a0d20: mov %eax,-0x4000(%esp) 0xa85a0d27: push %ebp 0xa85a0d28: sub $0x18,%esp 0xa85a0d2b: mov $0x88a60090,%eax ; {metadata(method data for {method} {0x889bd9a8} 'min' '(II)I' in 'java/lang/Math')} 0xa85a0d30: mov 0xa4(%eax),%esi 0xa85a0d36: add $0x8,%esi 0xa85a0d39: mov %esi,0xa4(%eax) 0xa85a0d3f: mov $0x889bd9a8,%eax ; {metadata({method} {0x889bd9a8} 'min' '(II)I' in 'java/lang/Math')} 0xa85a0d44: and $0x1ff8,%esi 0xa85a0d4a: cmp $0x0,%esi 0xa85a0d4d: je 0xa85a0d98 ;*iload_0 ; - java.lang.Math::min@0 (line 1336) 0xa85a0d53: cmp %edx,%ecx 0xa85a0d55: mov $0x88a60090,%eax ; {metadata(method data for {method} {0x889bd9a8} 'min' '(II)I' in 'java/lang/Math')} 0xa85a0d5a: mov $0xcc,%esi 0xa85a0d5f: jg 0xa85a0d6a 0xa85a0d65: mov $0xd4,%esi 0xa85a0d6a: mov (%eax,%esi,1),%edi 0xa85a0d6d: lea 0x1(%edi),%edi 0xa85a0d70: mov %edi,(%eax,%esi,1) 0xa85a0d73: jg 0xa85a0d89 ;*if_icmpgt ; - java.lang.Math::min@2 (line 1336) 0xa85a0d79: mov $0x88a60090,%eax ; {metadata(method data for {method} {0x889bd9a8} 'min' '(II)I' in 'java/lang/Math')} 0xa85a0d7e: incl 0xdc(%eax) 0xa85a0d84: jmp 0xa85a0d8b ;*goto ; - java.lang.Math::min@6 (line 1336) 0xa85a0d89: mov %edx,%ecx ;*ireturn ; - java.lang.Math::min@10 (line 1336) 0xa85a0d8b: mov %ecx,%eax 0xa85a0d8d: add $0x18,%esp 0xa85a0d90: pop %ebp 0xa85a0d91: test %eax,0xb7712100 ; {poll_return} 0xa85a0d97: ret 0xa85a0d98: mov %eax,0x4(%esp) 0xa85a0d9c: movl $0xffffffff,(%esp) 0xa85a0da3: call 0xa859fe20 ; OopMap{off=136} ;*synchronization entry ; - java.lang.Math::min@-1 (line 1336) ; {runtime_call} 0xa85a0da8: jmp 0xa85a0d53 0xa85a0daa: nop 0xa85a0dab: nop 0xa85a0dac: mov %esp,%esi 0xa85a0dae: shr $0xc,%esi 0xa85a0db1: mov 0x188a440(,%esi,4),%esi ; {external_word} 0xa85a0db8: mov 0x19c(%esi),%eax 0xa85a0dbe: movl $0x0,0x19c(%esi) 0xa85a0dc8: movl $0x0,0x1a0(%esi) 0xa85a0dd2: add $0x18,%esp 0xa85a0dd5: pop %ebp 0xa85a0dd6: jmp 0xa8556820 ; {runtime_call} 0xa85a0ddb: hlt 0xa85a0ddc: hlt 0xa85a0ddd: hlt 0xa85a0dde: hlt 0xa85a0ddf: hlt [Exception Handler] [Stub Code] 0xa85a0de0: call 0xa859e860 ; {no_reloc} 0xa85a0de5: push $0x1790172 ; {external_word} 0xa85a0dea: call 0xa85a0def 0xa85a0def: pusha 0xa85a0df0: call 0x0150c230 ; {runtime_call} 0xa85a0df5: hlt [Deopt Handler Code] 0xa85a0df6: push $0xa85a0df6 ; {section_word} 0xa85a0dfb: jmp 0xa853c520 ; {runtime_call} Decoding compiled method 0xa85a0848: Code: [Entry Point] [Constants] # {method} {0x88961028} 'ensureCapacityInternal' '(I)V' in 'java/lang/AbstractStringBuilder' # this: ecx = 'java/lang/AbstractStringBuilder' # parm0: edx = int # [sp+0x20] (sp of caller) 0xa85a0960: nop 0xa85a0961: nop 0xa85a0962: nop 0xa85a0963: nop 0xa85a0964: nop 0xa85a0965: nop 0xa85a0966: nop 0xa85a0967: nop 0xa85a0968: nop 0xa85a0969: nop 0xa85a096a: nop 0xa85a096b: nop 0xa85a096c: nop 0xa85a096d: nop 0xa85a096e: nop 0xa85a096f: nop 0xa85a0970: nop 0xa85a0971: nop 0xa85a0972: nop 0xa85a0973: nop 0xa85a0974: nop 0xa85a0975: nop 0xa85a0976: nop 0xa85a0977: cmp 0x4(%ecx),%eax 0xa85a097a: jne 0xa853b520 ; {runtime_call} [Verified Entry Point] 0xa85a0980: mov %eax,-0x4000(%esp) 0xa85a0987: push %ebp 0xa85a0988: sub $0x18,%esp 0xa85a098b: mov $0x88a803f0,%esi ; {metadata(method data for {method} {0x88961028} 'ensureCapacityInternal' '(I)V' in 'java/lang/AbstractStringBuilder')} 0xa85a0990: mov 0xa4(%esi),%edi 0xa85a0996: add $0x8,%edi 0xa85a0999: mov %edi,0xa4(%esi) 0xa85a099f: mov $0x88961028,%esi ; {metadata({method} {0x88961028} 'ensureCapacityInternal' '(I)V' in 'java/lang/AbstractStringBuilder')} 0xa85a09a4: and $0x1ff8,%edi 0xa85a09aa: cmp $0x0,%edi 0xa85a09ad: je 0xa85a0a6f ;*iload_1 ; - java.lang.AbstractStringBuilder::ensureCapacityInternal@0 (line 120) 0xa85a09b3: mov 0xc(%ecx),%esi ;*getfield value ; - java.lang.AbstractStringBuilder::ensureCapacityInternal@2 (line 120) 0xa85a09b6: mov 0x8(%esi),%esi ;*arraylength ; - java.lang.AbstractStringBuilder::ensureCapacityInternal@5 (line 120) ; implicit exception: dispatches to 0xa85a0a84 0xa85a09b9: mov %edx,%edi 0xa85a09bb: sub %esi,%edi 0xa85a09bd: cmp $0x0,%edi 0xa85a09c0: mov $0x88a803f0,%esi ; {metadata(method data for {method} {0x88961028} 'ensureCapacityInternal' '(I)V' in 'java/lang/AbstractStringBuilder')} 0xa85a09c5: mov $0xcc,%edi 0xa85a09ca: jle 0xa85a09d5 0xa85a09d0: mov $0xd4,%edi 0xa85a09d5: mov (%esi,%edi,1),%ebx 0xa85a09d8: lea 0x1(%ebx),%ebx 0xa85a09db: mov %ebx,(%esi,%edi,1) 0xa85a09de: jle 0xa85a0a64 ;*ifle ; - java.lang.AbstractStringBuilder::ensureCapacityInternal@7 (line 120) 0xa85a09e4: mov %ecx,%esi 0xa85a09e6: mov $0x88a803f0,%edi ; {metadata(method data for {method} {0x88961028} 'ensureCapacityInternal' '(I)V' in 'java/lang/AbstractStringBuilder')} 0xa85a09eb: mov 0x4(%esi),%esi 0xa85a09ee: cmp 0xe0(%edi),%esi 0xa85a09f4: jne 0xa85a0a02 0xa85a09f6: addl $0x1,0xe4(%edi) 0xa85a09fd: jmp 0xa85a0a5f 0xa85a0a02: cmp 0xe8(%edi),%esi 0xa85a0a08: jne 0xa85a0a16 0xa85a0a0a: addl $0x1,0xec(%edi) 0xa85a0a11: jmp 0xa85a0a5f 0xa85a0a16: cmpl $0x0,0xe0(%edi) 0xa85a0a20: jne 0xa85a0a37 0xa85a0a22: mov %esi,0xe0(%edi) 0xa85a0a28: movl $0x1,0xe4(%edi) 0xa85a0a32: jmp 0xa85a0a5f 0xa85a0a37: cmpl $0x0,0xe8(%edi) 0xa85a0a41: jne 0xa85a0a58 0xa85a0a43: mov %esi,0xe8(%edi) 0xa85a0a49: movl $0x1,0xec(%edi) 0xa85a0a53: jmp 0xa85a0a5f 0xa85a0a58: addl $0x1,0xdc(%edi) 0xa85a0a5f: call 0xa853b760 ; OopMap{off=260} ;*invokevirtual expandCapacity ; - java.lang.AbstractStringBuilder::ensureCapacityInternal@12 (line 121) ; {optimized virtual_call} 0xa85a0a64: add $0x18,%esp 0xa85a0a67: pop %ebp 0xa85a0a68: test %eax,0xb7712100 ; {poll_return} 0xa85a0a6e: ret 0xa85a0a6f: mov %esi,0x4(%esp) 0xa85a0a73: movl $0xffffffff,(%esp) 0xa85a0a7a: call 0xa859fe20 ; OopMap{ecx=Oop off=287} ;*synchronization entry ; - java.lang.AbstractStringBuilder::ensureCapacityInternal@-1 (line 120) ; {runtime_call} 0xa85a0a7f: jmp 0xa85a09b3 0xa85a0a84: call 0xa859d460 ; OopMap{ecx=Oop off=297} ;*arraylength ; - java.lang.AbstractStringBuilder::ensureCapacityInternal@5 (line 120) ; {runtime_call} 0xa85a0a89: nop 0xa85a0a8a: nop 0xa85a0a8b: mov %esp,%esi 0xa85a0a8d: shr $0xc,%esi 0xa85a0a90: mov 0x188a440(,%esi,4),%esi ; {external_word} 0xa85a0a97: mov 0x19c(%esi),%eax 0xa85a0a9d: movl $0x0,0x19c(%esi) 0xa85a0aa7: movl $0x0,0x1a0(%esi) 0xa85a0ab1: add $0x18,%esp 0xa85a0ab4: pop %ebp 0xa85a0ab5: jmp 0xa8556820 ; {runtime_call} 0xa85a0aba: hlt 0xa85a0abb: hlt 0xa85a0abc: hlt 0xa85a0abd: hlt 0xa85a0abe: hlt 0xa85a0abf: hlt [Stub Code] 0xa85a0ac0: nop ; {no_reloc} 0xa85a0ac1: nop 0xa85a0ac2: mov $0x0,%ebx ; {static_stub} 0xa85a0ac7: jmp 0xa85a0ac7 ; {runtime_call} [Exception Handler] 0xa85a0acc: call 0xa859e860 ; {runtime_call} 0xa85a0ad1: push $0x1790172 ; {external_word} 0xa85a0ad6: call 0xa85a0adb 0xa85a0adb: pusha 0xa85a0adc: call 0x0150c230 ; {runtime_call} 0xa85a0ae1: hlt [Deopt Handler Code] 0xa85a0ae2: push $0xa85a0ae2 ; {section_word} 0xa85a0ae7: jmp 0xa853c520 ; {runtime_call} Decoding compiled method 0xa85a7b08: Code: [Entry Point] [Constants] # {method} {0x8890cb58} '<init>' '([CII)V' in 'java/lang/String' # this: ecx = 'java/lang/String' # parm0: edx = '[C' # parm1: [sp+0x40] = int (sp of caller) # parm2: [sp+0x44] = int 0xa85a7c80: nop 0xa85a7c81: nop 0xa85a7c82: nop 0xa85a7c83: nop 0xa85a7c84: nop 0xa85a7c85: nop 0xa85a7c86: nop 0xa85a7c87: nop 0xa85a7c88: nop 0xa85a7c89: nop 0xa85a7c8a: nop 0xa85a7c8b: nop 0xa85a7c8c: nop 0xa85a7c8d: nop 0xa85a7c8e: nop 0xa85a7c8f: nop 0xa85a7c90: nop 0xa85a7c91: nop 0xa85a7c92: nop 0xa85a7c93: nop 0xa85a7c94: nop 0xa85a7c95: nop 0xa85a7c96: nop 0xa85a7c97: cmp 0x4(%ecx),%eax 0xa85a7c9a: jne 0xa853b520 ; {runtime_call} [Verified Entry Point] 0xa85a7ca0: mov %eax,-0x4000(%esp) 0xa85a7ca7: push %ebp 0xa85a7ca8: sub $0x38,%esp 0xa85a7cab: mov %ecx,0x20(%esp) 0xa85a7caf: mov $0x88a817d8,%esi ; {metadata(method data for {method} {0x8890cb58} '<init>' '([CII)V' in 'java/lang/String')} 0xa85a7cb4: mov 0xa4(%esi),%edi 0xa85a7cba: add $0x8,%edi 0xa85a7cbd: mov %edi,0xa4(%esi) 0xa85a7cc3: mov $0x8890cb58,%esi ; {metadata({method} {0x8890cb58} '<init>' '([CII)V' in 'java/lang/String')} 0xa85a7cc8: and $0x1ff8,%edi 0xa85a7cce: cmp $0x0,%edi 0xa85a7cd1: je 0xa85a7ed9 ;*aload_0 ; - java.lang.String::<init>@0 (line 190) 0xa85a7cd7: mov 0x40(%esp),%esi 0xa85a7cdb: mov %ecx,%edi 0xa85a7cdd: mov $0x88a817d8,%ebx ; {metadata(method data for {method} {0x8890cb58} '<init>' '([CII)V' in 'java/lang/String')} 0xa85a7ce2: addl $0x1,0xcc(%ebx) 0xa85a7ce9: mov $0x88a1c7c0,%edi ; {metadata(method data for {method} {0x8890ab68} '<init>' '()V' in 'java/lang/Object')} 0xa85a7cee: mov 0xa4(%edi),%ebx 0xa85a7cf4: add $0x8,%ebx 0xa85a7cf7: mov %ebx,0xa4(%edi) 0xa85a7cfd: mov $0x8890ab68,%edi ; {metadata({method} {0x8890ab68} '<init>' '()V' in 'java/lang/Object')} 0xa85a7d02: and $0x7ffff8,%ebx 0xa85a7d08: cmp $0x0,%ebx 0xa85a7d0b: je 0xa85a7eee 0xa85a7d11: cmp $0x0,%esi 0xa85a7d14: mov $0x88a817d8,%edi ; {metadata(method data for {method} {0x8890cb58} '<init>' '([CII)V' in 'java/lang/String')} 0xa85a7d19: mov $0xd4,%ebx 0xa85a7d1e: jge 0xa85a7d29 0xa85a7d24: mov $0xdc,%ebx 0xa85a7d29: mov (%edi,%ebx,1),%eax 0xa85a7d2c: lea 0x1(%eax),%eax 0xa85a7d2f: mov %eax,(%edi,%ebx,1) 0xa85a7d32: jl 0xa85a7ea1 ;*ifge ; - java.lang.String::<init>@5 (line 191) 0xa85a7d38: mov 0x44(%esp),%edi 0xa85a7d3c: cmp $0x0,%edi 0xa85a7d3f: mov $0x88a817d8,%ebx ; {metadata(method data for {method} {0x8890cb58} '<init>' '([CII)V' in 'java/lang/String')} 0xa85a7d44: mov $0xec,%eax 0xa85a7d49: jg 0xa85a7d54 0xa85a7d4f: mov $0xf4,%eax 0xa85a7d54: mov (%ebx,%eax,1),%ecx 0xa85a7d57: lea 0x1(%ecx),%ecx 0xa85a7d5a: mov %ecx,(%ebx,%eax,1) 0xa85a7d5d: jg 0xa85a7db3 ;*ifgt ; - java.lang.String::<init>@18 (line 194) 0xa85a7d63: cmp $0x0,%edi 0xa85a7d66: mov $0x88a817d8,%ecx ; {metadata(method data for {method} {0x8890cb58} '<init>' '([CII)V' in 'java/lang/String')} 0xa85a7d6b: mov $0xfc,%ebx 0xa85a7d70: jge 0xa85a7d7b 0xa85a7d76: mov $0x104,%ebx 0xa85a7d7b: mov (%ecx,%ebx,1),%eax 0xa85a7d7e: lea 0x1(%eax),%eax 0xa85a7d81: mov %eax,(%ecx,%ebx,1) 0xa85a7d84: jl 0xa85a7e69 ;*ifge ; - java.lang.String::<init>@22 (line 195) 0xa85a7d8a: mov 0x8(%edx),%ecx ;*arraylength ; - java.lang.String::<init>@36 (line 198) ; implicit exception: dispatches to 0xa85a7f03 0xa85a7d8d: cmp %ecx,%esi 0xa85a7d8f: mov $0x88a817d8,%ecx ; {metadata(method data for {method} {0x8890cb58} '<init>' '([CII)V' in 'java/lang/String')} 0xa85a7d94: mov $0x114,%ebx 0xa85a7d99: jg 0xa85a7da4 0xa85a7d9f: mov $0x11c,%ebx 0xa85a7da4: mov (%ecx,%ebx,1),%eax 0xa85a7da7: lea 0x1(%eax),%eax 0xa85a7daa: mov %eax,(%ecx,%ebx,1) 0xa85a7dad: jle 0xa85a7e14 ;*if_icmpgt ; - java.lang.String::<init>@37 (line 198) 0xa85a7db3: mov 0x8(%edx),%ecx ;*arraylength ; - java.lang.String::<init>@52 (line 204) ; implicit exception: dispatches to 0xa85a7f08 0xa85a7db6: sub %edi,%ecx 0xa85a7db8: cmp %ecx,%esi 0xa85a7dba: mov $0x88a817d8,%ecx ; {metadata(method data for {method} {0x8890cb58} '<init>' '([CII)V' in 'java/lang/String')} 0xa85a7dbf: mov $0x124,%ebx 0xa85a7dc4: jle 0xa85a7dcf 0xa85a7dca: mov $0x12c,%ebx 0xa85a7dcf: mov (%ecx,%ebx,1),%eax 0xa85a7dd2: lea 0x1(%eax),%eax 0xa85a7dd5: mov %eax,(%ecx,%ebx,1) 0xa85a7dd8: jg 0xa85a7e38 ;*if_icmple ; - java.lang.String::<init>@55 (line 204) 0xa85a7dde: mov $0x88a817d8,%ebx ; {metadata(method data for {method} {0x8890cb58} '<init>' '([CII)V' in 'java/lang/String')} 0xa85a7de3: addl $0x1,0x13c(%ebx) 0xa85a7dea: add %esi,%edi 0xa85a7dec: mov %edx,%ecx 0xa85a7dee: mov %esi,%edx 0xa85a7df0: mov %edi,(%esp) ;*invokestatic copyOfRange ; - java.lang.String::<init>@75 (line 207) 0xa85a7df3: call 0xa853bbe0 ; OopMap{[32]=Oop off=376} ;*invokestatic copyOfRange ; - java.lang.String::<init>@75 (line 207) ; {static_call} 0xa85a7df8: mov 0x20(%esp),%ecx 0xa85a7dfc: mov %eax,0x8(%ecx) 0xa85a7dff: shr $0x9,%ecx 0xa85a7e02: movb $0x0,-0x58401000(%ecx) ;*putfield value ; - java.lang.String::<init>@78 (line 207) 0xa85a7e09: add $0x38,%esp 0xa85a7e0c: pop %ebp 0xa85a7e0d: test %eax,0xb7712100 ; {poll_return} 0xa85a7e13: ret ;*return ; - java.lang.String::<init>@81 (line 208) 0xa85a7e14: mov 0x20(%esp),%ecx 0xa85a7e18: mov $0x9e209228,%edx ; {oop("")} 0xa85a7e1d: mov 0x8(%edx),%edx ;*getfield value ; - java.lang.String::<init>@43 (line 199) ; implicit exception: dispatches to 0xa85a7f0d 0xa85a7e20: mov %edx,0x8(%ecx) 0xa85a7e23: shr $0x9,%ecx 0xa85a7e26: movb $0x0,-0x58401000(%ecx) ;*putfield value ; - java.lang.String::<init>@46 (line 199) 0xa85a7e2d: add $0x38,%esp 0xa85a7e30: pop %ebp 0xa85a7e31: test %eax,0xb7712100 ; {poll_return} 0xa85a7e37: ret ;*return ; - java.lang.String::<init>@49 (line 200) 0xa85a7e38: jmp 0xa85a7f1c ; {no_reloc} 0xa85a7e3d: jmp 0xa85a7f26 ;*new ; - java.lang.String::<init>@58 (line 205) 0xa85a7e42: mov %eax,%edx 0xa85a7e44: mov $0x88a817d8,%ecx ; {metadata(method data for {method} {0x8890cb58} '<init>' '([CII)V' in 'java/lang/String')} 0xa85a7e49: addl $0x1,0x134(%ecx) 0xa85a7e50: add %esi,%edi 0xa85a7e52: mov %edi,%edx 0xa85a7e54: mov %eax,%ecx ;*invokespecial <init> ; - java.lang.String::<init>@65 (line 205) 0xa85a7e56: mov %eax,0x24(%esp) 0xa85a7e5a: nop 0xa85a7e5b: call 0xa853b760 ; OopMap{[36]=Oop off=480} ;*invokespecial <init> ; - java.lang.String::<init>@65 (line 205) ; {optimized virtual_call} 0xa85a7e60: mov 0x24(%esp),%eax 0xa85a7e64: jmp 0xa85a7f9a ;*athrow ; - java.lang.String::<init>@68 (line 205) 0xa85a7e69: nopl 0x0(%eax) 0xa85a7e70: jmp 0xa85a7f3c ; {no_reloc} 0xa85a7e75: jmp 0xa85a7f46 ;*new ; - java.lang.String::<init>@25 (line 196) 0xa85a7e7a: mov %eax,%edx 0xa85a7e7c: mov $0x88a817d8,%ecx ; {metadata(method data for {method} {0x8890cb58} '<init>' '([CII)V' in 'java/lang/String')} 0xa85a7e81: addl $0x1,0x10c(%ecx) 0xa85a7e88: mov %edi,%edx 0xa85a7e8a: mov %eax,%ecx ;*invokespecial <init> ; - java.lang.String::<init>@30 (line 196) 0xa85a7e8c: mov %eax,0x28(%esp) 0xa85a7e90: nop 0xa85a7e91: nop 0xa85a7e92: nop 0xa85a7e93: call 0xa853b760 ; OopMap{[40]=Oop off=536} ;*invokespecial <init> ; - java.lang.String::<init>@30 (line 196) ; {optimized virtual_call} 0xa85a7e98: mov 0x28(%esp),%eax 0xa85a7e9c: jmp 0xa85a7f9a ;*athrow ; - java.lang.String::<init>@33 (line 196) 0xa85a7ea1: nopl 0x0(%eax) 0xa85a7ea8: jmp 0xa85a7f5c ; {no_reloc} 0xa85a7ead: jmp 0xa85a7f66 ;*new ; - java.lang.String::<init>@8 (line 192) 0xa85a7eb2: mov %eax,%edx 0xa85a7eb4: mov $0x88a817d8,%ecx ; {metadata(method data for {method} {0x8890cb58} '<init>' '([CII)V' in 'java/lang/String')} 0xa85a7eb9: addl $0x1,0xe4(%ecx) 0xa85a7ec0: mov %esi,%edx 0xa85a7ec2: mov %eax,%ecx ;*invokespecial <init> ; - java.lang.String::<init>@13 (line 192) 0xa85a7ec4: mov %eax,0x2c(%esp) 0xa85a7ec8: nop 0xa85a7ec9: nop 0xa85a7eca: nop 0xa85a7ecb: call 0xa853b760 ; OopMap{[44]=Oop off=592} ;*invokespecial <init> ; - java.lang.String::<init>@13 (line 192) ; {optimized virtual_call} 0xa85a7ed0: mov 0x2c(%esp),%eax 0xa85a7ed4: jmp 0xa85a7f9a 0xa85a7ed9: mov %esi,0x4(%esp) 0xa85a7edd: movl $0xffffffff,(%esp) 0xa85a7ee4: call 0xa859fe20 ; OopMap{ecx=Oop [32]=Oop edx=Oop off=617} ;*synchronization entry ; - java.lang.String::<init>@-1 (line 190) ; {runtime_call} 0xa85a7ee9: jmp 0xa85a7cd7 0xa85a7eee: mov %edi,0x4(%esp) 0xa85a7ef2: movl $0xffffffff,(%esp) 0xa85a7ef9: call 0xa859fe20 ; OopMap{ecx=Oop [32]=Oop edx=Oop off=638} ;*synchronization entry ; - java.lang.Object::<init>@-1 (line 37) ; - java.lang.String::<init>@1 (line 190) ; {runtime_call} 0xa85a7efe: jmp 0xa85a7d11 0xa85a7f03: call 0xa859d460 ; OopMap{edx=Oop [32]=Oop off=648} ;*arraylength ; - java.lang.String::<init>@36 (line 198) ; {runtime_call} 0xa85a7f08: call 0xa859d460 ; OopMap{edx=Oop [32]=Oop off=653} ;*arraylength ; - java.lang.String::<init>@52 (line 204) ; {runtime_call} 0xa85a7f0d: call 0xa859d460 ; OopMap{ecx=Oop [32]=Oop off=658} ;*getfield value ; - java.lang.String::<init>@43 (line 199) ; {runtime_call} 0xa85a7f12: mov $0x0,%edx ; {metadata(NULL)} 0xa85a7f17: mov $0x5050a00,%eax 0xa85a7f1c: call 0xa859f520 ; OopMap{off=673} ;*new ; - java.lang.String::<init>@58 (line 205) ; {runtime_call} 0xa85a7f21: jmp 0xa85a7e38 0xa85a7f26: mov %edx,%edx 0xa85a7f28: call 0xa859d6a0 ; OopMap{off=685} ;*new ; - java.lang.String::<init>@58 (line 205) ; {runtime_call} 0xa85a7f2d: jmp 0xa85a7e42 0xa85a7f32: mov $0x0,%edx ; {metadata(NULL)} 0xa85a7f37: mov $0x5050a00,%eax 0xa85a7f3c: call 0xa859f520 ; OopMap{off=705} ;*new ; - java.lang.String::<init>@25 (line 196) ; {runtime_call} 0xa85a7f41: jmp 0xa85a7e70 0xa85a7f46: mov %edx,%edx 0xa85a7f48: call 0xa859d6a0 ; OopMap{off=717} ;*new ; - java.lang.String::<init>@25 (line 196) ; {runtime_call} 0xa85a7f4d: jmp 0xa85a7e7a 0xa85a7f52: mov $0x0,%edx ; {metadata(NULL)} 0xa85a7f57: mov $0x5050a00,%eax 0xa85a7f5c: call 0xa859f520 ; OopMap{off=737} ;*new ; - java.lang.String::<init>@8 (line 192) ; {runtime_call} 0xa85a7f61: jmp 0xa85a7ea8 0xa85a7f66: mov %edx,%edx 0xa85a7f68: call 0xa859d6a0 ; OopMap{off=749} ;*new ; - java.lang.String::<init>@8 (line 192) ; {runtime_call} 0xa85a7f6d: jmp 0xa85a7eb2 0xa85a7f72: nop 0xa85a7f73: nop 0xa85a7f74: mov %esp,%esi 0xa85a7f76: shr $0xc,%esi 0xa85a7f79: mov 0x188a440(,%esi,4),%esi ; {external_word} 0xa85a7f80: mov 0x19c(%esi),%eax 0xa85a7f86: movl $0x0,0x19c(%esi) 0xa85a7f90: movl $0x0,0x1a0(%esi) 0xa85a7f9a: add $0x38,%esp 0xa85a7f9d: pop %ebp 0xa85a7f9e: jmp 0xa8556820 ; {runtime_call} 0xa85a7fa3: hlt 0xa85a7fa4: hlt 0xa85a7fa5: hlt 0xa85a7fa6: hlt 0xa85a7fa7: hlt 0xa85a7fa8: hlt 0xa85a7fa9: hlt 0xa85a7faa: hlt 0xa85a7fab: hlt 0xa85a7fac: hlt 0xa85a7fad: hlt 0xa85a7fae: hlt 0xa85a7faf: hlt 0xa85a7fb0: hlt 0xa85a7fb1: hlt 0xa85a7fb2: hlt 0xa85a7fb3: hlt 0xa85a7fb4: hlt 0xa85a7fb5: hlt 0xa85a7fb6: hlt 0xa85a7fb7: hlt 0xa85a7fb8: hlt 0xa85a7fb9: hlt 0xa85a7fba: hlt 0xa85a7fbb: hlt 0xa85a7fbc: hlt 0xa85a7fbd: hlt 0xa85a7fbe: hlt 0xa85a7fbf: hlt [Stub Code] 0xa85a7fc0: nop ; {no_reloc} 0xa85a7fc1: nop 0xa85a7fc2: mov $0x0,%ebx ; {static_stub} 0xa85a7fc7: jmp 0xa85a7fc7 ; {runtime_call} 0xa85a7fcc: nop 0xa85a7fcd: nop 0xa85a7fce: mov $0x0,%ebx ; {static_stub} 0xa85a7fd3: jmp 0xa85a7fd3 ; {runtime_call} 0xa85a7fd8: nop 0xa85a7fd9: nop 0xa85a7fda: mov $0x0,%ebx ; {static_stub} 0xa85a7fdf: jmp 0xa85a7fdf ; {runtime_call} 0xa85a7fe4: nop 0xa85a7fe5: nop 0xa85a7fe6: mov $0x0,%ebx ; {static_stub} 0xa85a7feb: jmp 0xa85a7feb ; {runtime_call} [Exception Handler] 0xa85a7ff0: call 0xa859e860 ; {runtime_call} 0xa85a7ff5: push $0x1790172 ; {external_word} 0xa85a7ffa: call 0xa85a7fff 0xa85a7fff: pusha 0xa85a8000: call 0x0150c230 ; {runtime_call} 0xa85a8005: hlt [Deopt Handler Code] 0xa85a8006: push $0xa85a8006 ; {section_word} 0xa85a800b: jmp 0xa853c520 ; {runtime_call} Decoding compiled method 0xa85a0648: Code: [Entry Point] [Verified Entry Point] [Constants] # {method} {0x889c8d40} 'access$400' '(Ljava/lang/ThreadLocal;)I' in 'java/lang/ThreadLocal' # parm0: ecx = 'java/lang/ThreadLocal' # [sp+0x20] (sp of caller) 0xa85a0740: mov %eax,-0x4000(%esp) 0xa85a0747: push %ebp 0xa85a0748: sub $0x18,%esp ;*aload_0 ; - java.lang.ThreadLocal::access$400@0 (line 74) 0xa85a074b: mov 0x8(%ecx),%eax ;*getfield threadLocalHashCode ; - java.lang.ThreadLocal::access$400@1 (line 74) ; implicit exception: dispatches to 0xa85a0759 0xa85a074e: add $0x18,%esp 0xa85a0751: pop %ebp 0xa85a0752: test %eax,0xb7712100 ; {poll_return} 0xa85a0758: ret 0xa85a0759: call 0xa859d460 ; OopMap{off=30} ;*getfield threadLocalHashCode ; - java.lang.ThreadLocal::access$400@1 (line 74) ; {runtime_call} 0xa85a075e: nop 0xa85a075f: nop 0xa85a0760: mov %esp,%esi 0xa85a0762: shr $0xc,%esi 0xa85a0765: mov 0x188a440(,%esi,4),%esi ; {external_word} 0xa85a076c: mov 0x19c(%esi),%eax 0xa85a0772: movl $0x0,0x19c(%esi) 0xa85a077c: movl $0x0,0x1a0(%esi) 0xa85a0786: add $0x18,%esp 0xa85a0789: pop %ebp 0xa85a078a: jmp 0xa8556820 ; {runtime_call} 0xa85a078f: hlt 0xa85a0790: hlt 0xa85a0791: hlt 0xa85a0792: hlt 0xa85a0793: hlt 0xa85a0794: hlt 0xa85a0795: hlt 0xa85a0796: hlt 0xa85a0797: hlt 0xa85a0798: hlt 0xa85a0799: hlt 0xa85a079a: hlt 0xa85a079b: hlt 0xa85a079c: hlt 0xa85a079d: hlt 0xa85a079e: hlt 0xa85a079f: hlt [Exception Handler] [Stub Code] 0xa85a07a0: call 0xa859e860 ; {no_reloc} 0xa85a07a5: push $0x1790172 ; {external_word} 0xa85a07aa: call 0xa85a07af 0xa85a07af: pusha 0xa85a07b0: call 0x0150c230 ; {runtime_call} 0xa85a07b5: hlt [Deopt Handler Code] 0xa85a07b6: push $0xa85a07b6 ; {section_word} 0xa85a07bb: jmp 0xa853c520 ; {runtime_call} Decoding compiled method 0xa85a8408: Code: [Entry Point] [Constants] # {method} {0x88961698} 'append' '(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' in 'java/lang/AbstractStringBuilder' # this: ecx = 'java/lang/AbstractStringBuilder' # parm0: edx = 'java/lang/String' # [sp+0x40] (sp of caller) 0xa85a8560: nop 0xa85a8561: nop 0xa85a8562: nop 0xa85a8563: nop 0xa85a8564: nop 0xa85a8565: nop 0xa85a8566: nop 0xa85a8567: nop 0xa85a8568: nop 0xa85a8569: nop 0xa85a856a: nop 0xa85a856b: nop 0xa85a856c: nop 0xa85a856d: nop 0xa85a856e: nop 0xa85a856f: nop 0xa85a8570: nop 0xa85a8571: nop 0xa85a8572: nop 0xa85a8573: nop 0xa85a8574: nop 0xa85a8575: nop 0xa85a8576: nop 0xa85a8577: cmp 0x4(%ecx),%eax 0xa85a857a: jne 0xa853b520 ; {runtime_call} [Verified Entry Point] 0xa85a8580: mov %eax,-0x4000(%esp) 0xa85a8587: push %ebp 0xa85a8588: sub $0x38,%esp 0xa85a858b: mov %ecx,0x2c(%esp) 0xa85a858f: mov %edx,0x30(%esp) 0xa85a8593: mov $0x88a8ffa8,%esi ; {metadata(method data for {method} {0x88961698} 'append' '(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' in 'java/lang/AbstractStringBuilder')} 0xa85a8598: mov 0xa4(%esi),%edi 0xa85a859e: add $0x8,%edi 0xa85a85a1: mov %edi,0xa4(%esi) 0xa85a85a7: mov $0x88961698,%esi ; {metadata({method} {0x88961698} 'append' '(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' in 'java/lang/AbstractStringBuilder')} 0xa85a85ac: and $0x1ff8,%edi 0xa85a85b2: cmp $0x0,%edi 0xa85a85b5: je 0xa85a8867 ;*aload_1 ; - java.lang.AbstractStringBuilder::append@0 (line 418) 0xa85a85bb: cmp $0x0,%edx 0xa85a85be: mov $0x88a8ffa8,%esi ; {metadata(method data for {method} {0x88961698} 'append' '(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' in 'java/lang/AbstractStringBuilder')} 0xa85a85c3: mov $0xcc,%edi 0xa85a85c8: jne 0xa85a85d3 0xa85a85ce: mov $0xd4,%edi 0xa85a85d3: mov (%esi,%edi,1),%ebx 0xa85a85d6: lea 0x1(%ebx),%ebx 0xa85a85d9: mov %ebx,(%esi,%edi,1) 0xa85a85dc: je 0xa85a8847 ;*ifnonnull ; - java.lang.AbstractStringBuilder::append@1 (line 418) 0xa85a85e2: cmp (%edx),%eax ;*invokevirtual length ; - java.lang.AbstractStringBuilder::append@10 (line 420) ; implicit exception: dispatches to 0xa85a887c 0xa85a85e4: mov %edx,%esi 0xa85a85e6: mov $0x88a8ffa8,%edi ; {metadata(method data for {method} {0x88961698} 'append' '(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' in 'java/lang/AbstractStringBuilder')} 0xa85a85eb: mov 0x4(%esi),%esi 0xa85a85ee: cmp 0xe8(%edi),%esi 0xa85a85f4: jne 0xa85a8602 0xa85a85f6: addl $0x1,0xec(%edi) 0xa85a85fd: jmp 0xa85a865f 0xa85a8602: cmp 0xf0(%edi),%esi 0xa85a8608: jne 0xa85a8616 0xa85a860a: addl $0x1,0xf4(%edi) 0xa85a8611: jmp 0xa85a865f 0xa85a8616: cmpl $0x0,0xe8(%edi) 0xa85a8620: jne 0xa85a8637 0xa85a8622: mov %esi,0xe8(%edi) 0xa85a8628: movl $0x1,0xec(%edi) 0xa85a8632: jmp 0xa85a865f 0xa85a8637: cmpl $0x0,0xf0(%edi) 0xa85a8641: jne 0xa85a8658 0xa85a8643: mov %esi,0xf0(%edi) 0xa85a8649: movl $0x1,0xf4(%edi) 0xa85a8653: jmp 0xa85a865f 0xa85a8658: addl $0x1,0xe4(%edi) 0xa85a865f: mov $0x88a73a70,%esi ; {metadata(method data for {method} {0x8890d360} 'length' '()I' in 'java/lang/String')} 0xa85a8664: mov 0xa4(%esi),%edi 0xa85a866a: add $0x8,%edi 0xa85a866d: mov %edi,0xa4(%esi) 0xa85a8673: mov $0x8890d360,%esi ; {metadata({method} {0x8890d360} 'length' '()I' in 'java/lang/String')} 0xa85a8678: and $0x7ffff8,%edi 0xa85a867e: cmp $0x0,%edi 0xa85a8681: je 0xa85a8881 0xa85a8687: mov 0x8(%edx),%esi ;*getfield value ; - java.lang.String::length@1 (line 623) ; - java.lang.AbstractStringBuilder::append@10 (line 420) 0xa85a868a: mov 0x8(%esi),%esi ;*arraylength ; - java.lang.String::length@4 (line 623) ; - java.lang.AbstractStringBuilder::append@10 (line 420) ; implicit exception: dispatches to 0xa85a8896 0xa85a868d: mov %esi,0x28(%esp) 0xa85a8691: mov 0x8(%ecx),%edi ;*getfield count ; - java.lang.AbstractStringBuilder::append@16 (line 421) 0xa85a8694: add %esi,%edi 0xa85a8696: mov %ecx,%ebx 0xa85a8698: mov $0x88a8ffa8,%eax ; {metadata(method data for {method} {0x88961698} 'append' '(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' in 'java/lang/AbstractStringBuilder')} 0xa85a869d: addl $0x1,0xfc(%eax) 0xa85a86a4: mov $0x88a803f0,%esi ; {metadata(method data for {method} {0x88961028} 'ensureCapacityInternal' '(I)V' in 'java/lang/AbstractStringBuilder')} 0xa85a86a9: mov 0xa4(%esi),%ebx 0xa85a86af: add $0x8,%ebx 0xa85a86b2: mov %ebx,0xa4(%esi) 0xa85a86b8: mov $0x88961028,%esi ; {metadata({method} {0x88961028} 'ensureCapacityInternal' '(I)V' in 'java/lang/AbstractStringBuilder')} 0xa85a86bd: and $0x7ffff8,%ebx 0xa85a86c3: cmp $0x0,%ebx 0xa85a86c6: je 0xa85a889b 0xa85a86cc: mov 0xc(%ecx),%esi ;*getfield value ; - java.lang.AbstractStringBuilder::ensureCapacityInternal@2 (line 120) ; - java.lang.AbstractStringBuilder::append@21 (line 421) 0xa85a86cf: mov 0x8(%esi),%esi ;*arraylength ; - java.lang.AbstractStringBuilder::ensureCapacityInternal@5 (line 120) ; - java.lang.AbstractStringBuilder::append@21 (line 421) ; implicit exception: dispatches to 0xa85a88b0 0xa85a86d2: mov %edi,%ebx 0xa85a86d4: sub %esi,%ebx 0xa85a86d6: cmp $0x0,%ebx 0xa85a86d9: mov $0x88a803f0,%esi ; {metadata(method data for {method} {0x88961028} 'ensureCapacityInternal' '(I)V' in 'java/lang/AbstractStringBuilder')} 0xa85a86de: mov $0xcc,%ebx 0xa85a86e3: jle 0xa85a86ee 0xa85a86e9: mov $0xd4,%ebx 0xa85a86ee: mov (%esi,%ebx,1),%eax 0xa85a86f1: lea 0x1(%eax),%eax 0xa85a86f4: mov %eax,(%esi,%ebx,1) 0xa85a86f7: jle 0xa85a8784 ;*ifle ; - java.lang.AbstractStringBuilder::ensureCapacityInternal@7 (line 120) ; - java.lang.AbstractStringBuilder::append@21 (line 421) 0xa85a86fd: mov %ecx,%ebx 0xa85a86ff: mov $0x88a803f0,%eax ; {metadata(method data for {method} {0x88961028} 'ensureCapacityInternal' '(I)V' in 'java/lang/AbstractStringBuilder')} 0xa85a8704: mov 0x4(%ebx),%ebx 0xa85a8707: cmp 0xe0(%eax),%ebx 0xa85a870d: jne 0xa85a871b 0xa85a870f: addl $0x1,0xe4(%eax) 0xa85a8716: jmp 0xa85a8778 0xa85a871b: cmp 0xe8(%eax),%ebx 0xa85a8721: jne 0xa85a872f 0xa85a8723: addl $0x1,0xec(%eax) 0xa85a872a: jmp 0xa85a8778 0xa85a872f: cmpl $0x0,0xe0(%eax) 0xa85a8739: jne 0xa85a8750 0xa85a873b: mov %ebx,0xe0(%eax) 0xa85a8741: movl $0x1,0xe4(%eax) 0xa85a874b: jmp 0xa85a8778 0xa85a8750: cmpl $0x0,0xe8(%eax) 0xa85a875a: jne 0xa85a8771 0xa85a875c: mov %ebx,0xe8(%eax) 0xa85a8762: movl $0x1,0xec(%eax) 0xa85a876c: jmp 0xa85a8778 0xa85a8771: addl $0x1,0xdc(%eax) 0xa85a8778: mov %edi,%edx 0xa85a877a: mov %ecx,%edi 0xa85a877c: mov %edi,%ecx ;*invokevirtual expandCapacity ; - java.lang.AbstractStringBuilder::ensureCapacityInternal@12 (line 121) ; - java.lang.AbstractStringBuilder::append@21 (line 421) 0xa85a877e: nop 0xa85a877f: call 0xa853b760 ; OopMap{[44]=Oop [48]=Oop off=548} ;*invokevirtual expandCapacity ; - java.lang.AbstractStringBuilder::ensureCapacityInternal@12 (line 121) ; - java.lang.AbstractStringBuilder::append@21 (line 421) ; {optimized virtual_call} 0xa85a8784: mov 0x28(%esp),%edi 0xa85a8788: mov 0x30(%esp),%esi 0xa85a878c: mov 0x2c(%esp),%ecx 0xa85a8790: mov 0xc(%ecx),%ebx ;*getfield value ; - java.lang.AbstractStringBuilder::append@28 (line 422) 0xa85a8793: mov 0x8(%ecx),%eax ;*getfield count ; - java.lang.AbstractStringBuilder::append@32 (line 422) 0xa85a8796: mov %esi,%edx 0xa85a8798: mov $0x88a8ffa8,%esi ; {metadata(method data for {method} {0x88961698} 'append' '(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' in 'java/lang/AbstractStringBuilder')} 0xa85a879d: mov 0x4(%edx),%edx 0xa85a87a0: cmp 0x108(%esi),%edx 0xa85a87a6: jne 0xa85a87b4 0xa85a87a8: addl $0x1,0x10c(%esi) 0xa85a87af: jmp 0xa85a8811 0xa85a87b4: cmp 0x110(%esi),%edx 0xa85a87ba: jne 0xa85a87c8 0xa85a87bc: addl $0x1,0x114(%esi) 0xa85a87c3: jmp 0xa85a8811 0xa85a87c8: cmpl $0x0,0x108(%esi) 0xa85a87d2: jne 0xa85a87e9 0xa85a87d4: mov %edx,0x108(%esi) 0xa85a87da: movl $0x1,0x10c(%esi) 0xa85a87e4: jmp 0xa85a8811 0xa85a87e9: cmpl $0x0,0x110(%esi) 0xa85a87f3: jne 0xa85a880a 0xa85a87f5: mov %edx,0x110(%esi) 0xa85a87fb: movl $0x1,0x114(%esi) 0xa85a8805: jmp 0xa85a8811 0xa85a880a: addl $0x1,0x104(%esi) 0xa85a8811: mov $0x0,%edx 0xa85a8816: mov %edi,(%esp) 0xa85a8819: mov %ebx,0x4(%esp) 0xa85a881d: mov %eax,0x8(%esp) 0xa85a8821: mov 0x30(%esp),%ecx ;*invokevirtual getChars ; - java.lang.AbstractStringBuilder::append@35 (line 422) 0xa85a8825: nop 0xa85a8826: nop 0xa85a8827: call 0xa853b760 ; OopMap{[44]=Oop off=716} ;*invokevirtual getChars ; - java.lang.AbstractStringBuilder::append@35 (line 422) ; {optimized virtual_call} 0xa85a882c: mov 0x2c(%esp),%ecx 0xa85a8830: mov 0x8(%ecx),%eax ;*getfield count ; - java.lang.AbstractStringBuilder::append@40 (line 423) 0xa85a8833: add 0x28(%esp),%eax 0xa85a8837: mov %eax,0x8(%ecx) ;*putfield count ; - java.lang.AbstractStringBuilder::append@45 (line 423) 0xa85a883a: mov %ecx,%eax 0xa85a883c: add $0x38,%esp 0xa85a883f: pop %ebp 0xa85a8840: test %eax,0xb7712100 ; {poll_return} 0xa85a8846: ret ;*areturn ; - java.lang.AbstractStringBuilder::append@49 (line 424) 0xa85a8847: mov %ecx,%esi 0xa85a8849: mov $0x88a8ffa8,%edi ; {metadata(method data for {method} {0x88961698} 'append' '(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' in 'java/lang/AbstractStringBuilder')} 0xa85a884e: addl $0x1,0xdc(%edi) 0xa85a8855: nop 0xa85a8856: nop 0xa85a8857: call 0xa853b760 ; OopMap{off=764} ;*invokespecial appendNull ; - java.lang.AbstractStringBuilder::append@5 (line 419) ; {optimized virtual_call} 0xa85a885c: add $0x38,%esp 0xa85a885f: pop %ebp 0xa85a8860: test %eax,0xb7712100 ; {poll_return} 0xa85a8866: ret 0xa85a8867: mov %esi,0x4(%esp) 0xa85a886b: movl $0xffffffff,(%esp) 0xa85a8872: call 0xa859fe20 ; OopMap{ecx=Oop [44]=Oop edx=Oop [48]=Oop off=791} ;*synchronization entry ; - java.lang.AbstractStringBuilder::append@-1 (line 418) ; {runtime_call} 0xa85a8877: jmp 0xa85a85bb 0xa85a887c: call 0xa859d460 ; OopMap{ecx=Oop [44]=Oop edx=Oop [48]=Oop off=801} ;*invokevirtual length ; - java.lang.AbstractStringBuilder::append@10 (line 420) ; {runtime_call} 0xa85a8881: mov %esi,0x4(%esp) 0xa85a8885: movl $0xffffffff,(%esp) 0xa85a888c: call 0xa859fe20 ; OopMap{ecx=Oop [44]=Oop edx=Oop [48]=Oop off=817} ;*synchronization entry ; - java.lang.String::length@-1 (line 623) ; - java.lang.AbstractStringBuilder::append@10 (line 420) ; {runtime_call} 0xa85a8891: jmp 0xa85a8687 0xa85a8896: call 0xa859d460 ; OopMap{ecx=Oop [44]=Oop edx=Oop [48]=Oop off=827} ;*arraylength ; - java.lang.String::length@4 (line 623) ; - java.lang.AbstractStringBuilder::append@10 (line 420) ; {runtime_call} 0xa85a889b: mov %esi,0x4(%esp) 0xa85a889f: movl $0xffffffff,(%esp) 0xa85a88a6: call 0xa859fe20 ; OopMap{ecx=Oop [44]=Oop edx=Oop [48]=Oop off=843} ;*synchronization entry ; - java.lang.AbstractStringBuilder::ensureCapacityInternal@-1 (line 120) ; - java.lang.AbstractStringBuilder::append@21 (line 421) ; {runtime_call} 0xa85a88ab: jmp 0xa85a86cc 0xa85a88b0: call 0xa859d460 ; OopMap{ecx=Oop [44]=Oop edx=Oop [48]=Oop off=853} ;*arraylength ; - java.lang.AbstractStringBuilder::ensureCapacityInternal@5 (line 120) ; - java.lang.AbstractStringBuilder::append@21 (line 421) ; {runtime_call} 0xa85a88b5: nop 0xa85a88b6: nop 0xa85a88b7: mov %esp,%esi 0xa85a88b9: shr $0xc,%esi 0xa85a88bc: mov 0x188a440(,%esi,4),%esi ; {external_word} 0xa85a88c3: mov 0x19c(%esi),%eax 0xa85a88c9: movl $0x0,0x19c(%esi) 0xa85a88d3: movl $0x0,0x1a0(%esi) 0xa85a88dd: add $0x38,%esp 0xa85a88e0: pop %ebp 0xa85a88e1: jmp 0xa8556820 ; {runtime_call} 0xa85a88e6: hlt 0xa85a88e7: hlt 0xa85a88e8: hlt 0xa85a88e9: hlt 0xa85a88ea: hlt 0xa85a88eb: hlt 0xa85a88ec: hlt 0xa85a88ed: hlt 0xa85a88ee: hlt 0xa85a88ef: hlt 0xa85a88f0: hlt 0xa85a88f1: hlt 0xa85a88f2: hlt 0xa85a88f3: hlt 0xa85a88f4: hlt 0xa85a88f5: hlt 0xa85a88f6: hlt 0xa85a88f7: hlt 0xa85a88f8: hlt 0xa85a88f9: hlt 0xa85a88fa: hlt 0xa85a88fb: hlt 0xa85a88fc: hlt 0xa85a88fd: hlt 0xa85a88fe: hlt 0xa85a88ff: hlt [Stub Code] 0xa85a8900: nop ; {no_reloc} 0xa85a8901: nop 0xa85a8902: mov $0x0,%ebx ; {static_stub} 0xa85a8907: jmp 0xa85a8907 ; {runtime_call} 0xa85a890c: nop 0xa85a890d: nop 0xa85a890e: mov $0x0,%ebx ; {static_stub} 0xa85a8913: jmp 0xa85a8913 ; {runtime_call} 0xa85a8918: nop 0xa85a8919: nop 0xa85a891a: mov $0x0,%ebx ; {static_stub} 0xa85a891f: jmp 0xa85a891f ; {runtime_call} [Exception Handler] 0xa85a8924: call 0xa859e860 ; {runtime_call} 0xa85a8929: push $0x1790172 ; {external_word} 0xa85a892e: call 0xa85a8933 0xa85a8933: pusha 0xa85a8934: call 0x0150c230 ; {runtime_call} 0xa85a8939: hlt [Deopt Handler Code] 0xa85a893a: push $0xa85a893a ; {section_word} 0xa85a893f: jmp 0xa853c520 ; {runtime_call} Decoding compiled method 0xa85a8c48: Code: [Entry Point] [Constants] # {method} {0x8890d788} 'getChars' '(II[CI)V' in 'java/lang/String' # this: ecx = 'java/lang/String' # parm0: edx = int # parm1: [sp+0x40] = int (sp of caller) # parm2: [sp+0x44] = '[C' # parm3: [sp+0x48] = int 0xa85a8da0: nop 0xa85a8da1: nop 0xa85a8da2: nop 0xa85a8da3: nop 0xa85a8da4: nop 0xa85a8da5: nop 0xa85a8da6: nop 0xa85a8da7: nop 0xa85a8da8: nop 0xa85a8da9: nop 0xa85a8daa: nop 0xa85a8dab: nop 0xa85a8dac: nop 0xa85a8dad: nop 0xa85a8dae: nop 0xa85a8daf: nop 0xa85a8db0: nop 0xa85a8db1: nop 0xa85a8db2: nop 0xa85a8db3: nop 0xa85a8db4: nop 0xa85a8db5: nop 0xa85a8db6: nop 0xa85a8db7: cmp 0x4(%ecx),%eax 0xa85a8dba: jne 0xa853b520 ; {runtime_call} [Verified Entry Point] 0xa85a8dc0: mov %eax,-0x4000(%esp) 0xa85a8dc7: push %ebp 0xa85a8dc8: sub $0x38,%esp 0xa85a8dcb: mov %edx,%esi 0xa85a8dcd: mov $0x88a91580,%edx ; {metadata(method data for {method} {0x8890d788} 'getChars' '(II[CI)V' in 'java/lang/String')} 0xa85a8dd2: mov 0xa4(%edx),%eax 0xa85a8dd8: add $0x8,%eax 0xa85a8ddb: mov %eax,0xa4(%edx) 0xa85a8de1: mov $0x8890d788,%edx ; {metadata({method} {0x8890d788} 'getChars' '(II[CI)V' in 'java/lang/String')} 0xa85a8de6: and $0x1ff8,%eax 0xa85a8dec: cmp $0x0,%eax 0xa85a8def: je 0xa85a8f91 ;*iload_1 ; - java.lang.String::getChars@0 (line 817) 0xa85a8df5: cmp $0x0,%esi 0xa85a8df8: mov $0x88a91580,%edx ; {metadata(method data for {method} {0x8890d788} 'getChars' '(II[CI)V' in 'java/lang/String')} 0xa85a8dfd: mov $0xcc,%eax 0xa85a8e02: jge 0xa85a8e0d 0xa85a8e08: mov $0xd4,%eax 0xa85a8e0d: mov (%edx,%eax,1),%ebx 0xa85a8e10: lea 0x1(%ebx),%ebx 0xa85a8e13: mov %ebx,(%edx,%eax,1) 0xa85a8e16: jl 0xa85a8f59 ;*ifge ; - java.lang.String::getChars@1 (line 817) 0xa85a8e1c: mov 0x40(%esp),%edi 0xa85a8e20: mov 0x8(%ecx),%ecx ;*getfield value ; - java.lang.String::getChars@15 (line 820) 0xa85a8e23: mov 0x8(%ecx),%edx ;*arraylength ; - java.lang.String::getChars@18 (line 820) ; implicit exception: dispatches to 0xa85a8fa6 0xa85a8e26: cmp %edx,%edi 0xa85a8e28: mov $0x88a91580,%edx ; {metadata(method data for {method} {0x8890d788} 'getChars' '(II[CI)V' in 'java/lang/String')} 0xa85a8e2d: mov $0xe4,%eax 0xa85a8e32: jle 0xa85a8e3d 0xa85a8e38: mov $0xec,%eax 0xa85a8e3d: mov (%edx,%eax,1),%ebx 0xa85a8e40: lea 0x1(%ebx),%ebx 0xa85a8e43: mov %ebx,(%edx,%eax,1) 0xa85a8e46: jg 0xa85a8f21 ;*if_icmple ; - java.lang.String::getChars@19 (line 820) 0xa85a8e4c: cmp %edi,%esi 0xa85a8e4e: mov $0x88a91580,%edx ; {metadata(method data for {method} {0x8890d788} 'getChars' '(II[CI)V' in 'java/lang/String')} 0xa85a8e53: mov $0xfc,%eax 0xa85a8e58: jle 0xa85a8e63 0xa85a8e5e: mov $0x104,%eax 0xa85a8e63: mov (%edx,%eax,1),%ebx 0xa85a8e66: lea 0x1(%ebx),%ebx 0xa85a8e69: mov %ebx,(%edx,%eax,1) 0xa85a8e6c: jg 0xa85a8eeb ;*if_icmple ; - java.lang.String::getChars@33 (line 823) 0xa85a8e72: mov 0x44(%esp),%eax 0xa85a8e76: mov $0x88a91580,%edx ; {metadata(method data for {method} {0x8890d788} 'getChars' '(II[CI)V' in 'java/lang/String')} 0xa85a8e7b: addl $0x1,0x114(%edx) 0xa85a8e82: sub %esi,%edi 0xa85a8e84: mov %esi,%edx 0xa85a8e86: mov 0x48(%esp),%ebx 0xa85a8e8a: test %eax,%eax 0xa85a8e8c: je 0xa85a8fab 0xa85a8e92: test %edx,%edx 0xa85a8e94: jl 0xa85a8fab 0xa85a8e9a: test %ebx,%ebx 0xa85a8e9c: jl 0xa85a8fab 0xa85a8ea2: lea (%edx,%edi,1),%esi 0xa85a8ea5: cmp 0x8(%ecx),%esi 0xa85a8ea8: ja 0xa85a8fab 0xa85a8eae: lea (%ebx,%edi,1),%esi 0xa85a8eb1: cmp 0x8(%eax),%esi 0xa85a8eb4: ja 0xa85a8fab 0xa85a8eba: test %edi,%edi 0xa85a8ebc: jl 0xa85a8fab 0xa85a8ec2: je 0xa85a8ee0 0xa85a8ec8: lea 0xc(%ecx,%edx,2),%esi 0xa85a8ecc: mov %esi,(%esp) 0xa85a8ecf: lea 0xc(%eax,%ebx,2),%esi 0xa85a8ed3: mov %esi,0x4(%esp) 0xa85a8ed7: mov %edi,0x8(%esp) 0xa85a8edb: call Stub::jshort_arraycopy ;*invokestatic arraycopy ; - java.lang.String::getChars@58 (line 826) ; {runtime_call} 0xa85a8ee0: add $0x38,%esp 0xa85a8ee3: pop %ebp 0xa85a8ee4: test %eax,0xb7712100 ; {poll_return} 0xa85a8eea: ret ;*return ; - java.lang.String::getChars@61 (line 827) 0xa85a8eeb: nopl 0x0(%eax,%eax,1) 0xa85a8ef0: jmp 0xa85a8fcb ; {no_reloc} 0xa85a8ef5: jmp 0xa85a8fd5 ;*new ; - java.lang.String::getChars@36 (line 824) 0xa85a8efa: mov %eax,%edx 0xa85a8efc: mov $0x88a91580,%ecx ; {metadata(method data for {method} {0x8890d788} 'getChars' '(II[CI)V' in 'java/lang/String')} 0xa85a8f01: addl $0x1,0x10c(%ecx) 0xa85a8f08: sub %esi,%edi 0xa85a8f0a: mov %edi,%edx 0xa85a8f0c: mov %eax,%ecx ;*invokespecial <init> ; - java.lang.String::getChars@43 (line 824) 0xa85a8f0e: mov %eax,0x20(%esp) 0xa85a8f12: nop 0xa85a8f13: call 0xa853b760 ; OopMap{[32]=Oop off=376} ;*invokespecial <init> ; - java.lang.String::getChars@43 (line 824) ; {optimized virtual_call} 0xa85a8f18: mov 0x20(%esp),%eax 0xa85a8f1c: jmp 0xa85a9049 ;*athrow ; - java.lang.String::getChars@46 (line 824) 0xa85a8f21: nopl 0x0(%eax) 0xa85a8f28: jmp 0xa85a8feb ; {no_reloc} 0xa85a8f2d: jmp 0xa85a8ff5 ;*new ; - java.lang.String::getChars@22 (line 821) 0xa85a8f32: mov %eax,%edx 0xa85a8f34: mov $0x88a91580,%ecx ; {metadata(method data for {method} {0x8890d788} 'getChars' '(II[CI)V' in 'java/lang/String')} 0xa85a8f39: addl $0x1,0xf4(%ecx) 0xa85a8f40: mov %edi,%edx 0xa85a8f42: mov %eax,%ecx ;*invokespecial <init> ; - java.lang.String::getChars@27 (line 821) 0xa85a8f44: mov %eax,0x24(%esp) 0xa85a8f48: nop 0xa85a8f49: nop 0xa85a8f4a: nop 0xa85a8f4b: call 0xa853b760 ; OopMap{[36]=Oop off=432} ;*invokespecial <init> ; - java.lang.String::getChars@27 (line 821) ; {optimized virtual_call} 0xa85a8f50: mov 0x24(%esp),%eax 0xa85a8f54: jmp 0xa85a9049 ;*athrow ; - java.lang.String::getChars@30 (line 821) 0xa85a8f59: nopl 0x0(%eax) 0xa85a8f60: jmp 0xa85a900b ; {no_reloc} 0xa85a8f65: jmp 0xa85a9015 ;*new ; - java.lang.String::getChars@4 (line 818) 0xa85a8f6a: mov %eax,%edx 0xa85a8f6c: mov $0x88a91580,%ecx ; {metadata(method data for {method} {0x8890d788} 'getChars' '(II[CI)V' in 'java/lang/String')} 0xa85a8f71: addl $0x1,0xdc(%ecx) 0xa85a8f78: mov %esi,%edx 0xa85a8f7a: mov %eax,%ecx ;*invokespecial <init> ; - java.lang.String::getChars@9 (line 818) 0xa85a8f7c: mov %eax,0x28(%esp) 0xa85a8f80: nop 0xa85a8f81: nop 0xa85a8f82: nop 0xa85a8f83: call 0xa853b760 ; OopMap{[40]=Oop off=488} ;*invokespecial <init> ; - java.lang.String::getChars@9 (line 818) ; {optimized virtual_call} 0xa85a8f88: mov 0x28(%esp),%eax 0xa85a8f8c: jmp 0xa85a9049 0xa85a8f91: mov %edx,0x4(%esp) 0xa85a8f95: movl $0xffffffff,(%esp) 0xa85a8f9c: call 0xa859fe20 ; OopMap{ecx=Oop [68]=Oop off=513} ;*synchronization entry ; - java.lang.String::getChars@-1 (line 817) ; {runtime_call} 0xa85a8fa1: jmp 0xa85a8df5 0xa85a8fa6: call 0xa859d460 ; OopMap{[68]=Oop ecx=Oop off=523} ;*arraylength ; - java.lang.String::getChars@18 (line 820) ; {runtime_call} 0xa85a8fab: mov %eax,(%esp) 0xa85a8fae: mov %ebx,0x4(%esp) 0xa85a8fb2: mov %edi,0x8(%esp) 0xa85a8fb6: nop 0xa85a8fb7: call 0xa853bbe0 ; OopMap{off=540} ;*invokestatic arraycopy ; - java.lang.String::getChars@58 (line 826) ; {static_call} 0xa85a8fbc: jmp 0xa85a8ee0 0xa85a8fc1: mov $0x0,%edx ; {metadata(NULL)} 0xa85a8fc6: mov $0x5050a00,%eax 0xa85a8fcb: call 0xa859f520 ; OopMap{off=560} ;*new ; - java.lang.String::getChars@36 (line 824) ; {runtime_call} 0xa85a8fd0: jmp 0xa85a8ef0 0xa85a8fd5: mov %edx,%edx 0xa85a8fd7: call 0xa859d6a0 ; OopMap{off=572} ;*new ; - java.lang.String::getChars@36 (line 824) ; {runtime_call} 0xa85a8fdc: jmp 0xa85a8efa 0xa85a8fe1: mov $0x0,%edx ; {metadata(NULL)} 0xa85a8fe6: mov $0x5050a00,%eax 0xa85a8feb: call 0xa859f520 ; OopMap{off=592} ;*new ; - java.lang.String::getChars@22 (line 821) ; {runtime_call} 0xa85a8ff0: jmp 0xa85a8f28 0xa85a8ff5: mov %edx,%edx 0xa85a8ff7: call 0xa859d6a0 ; OopMap{off=604} ;*new ; - java.lang.String::getChars@22 (line 821) ; {runtime_call} 0xa85a8ffc: jmp 0xa85a8f32 0xa85a9001: mov $0x0,%edx ; {metadata(NULL)} 0xa85a9006: mov $0x5050a00,%eax 0xa85a900b: call 0xa859f520 ; OopMap{off=624} ;*new ; - java.lang.String::getChars@4 (line 818) ; {runtime_call} 0xa85a9010: jmp 0xa85a8f60 0xa85a9015: mov %edx,%edx 0xa85a9017: call 0xa859d6a0 ; OopMap{off=636} ;*new ; - java.lang.String::getChars@4 (line 818) ; {runtime_call} 0xa85a901c: jmp 0xa85a8f6a 0xa85a9021: nop 0xa85a9022: nop 0xa85a9023: mov %esp,%esi 0xa85a9025: shr $0xc,%esi 0xa85a9028: mov 0x188a440(,%esi,4),%esi ; {external_word} 0xa85a902f: mov 0x19c(%esi),%eax 0xa85a9035: movl $0x0,0x19c(%esi) 0xa85a903f: movl $0x0,0x1a0(%esi) 0xa85a9049: add $0x38,%esp 0xa85a904c: pop %ebp 0xa85a904d: jmp 0xa8556820 ; {runtime_call} 0xa85a9052: hlt 0xa85a9053: hlt 0xa85a9054: hlt 0xa85a9055: hlt 0xa85a9056: hlt 0xa85a9057: hlt 0xa85a9058: hlt 0xa85a9059: hlt 0xa85a905a: hlt 0xa85a905b: hlt 0xa85a905c: hlt 0xa85a905d: hlt 0xa85a905e: hlt 0xa85a905f: hlt [Stub Code] 0xa85a9060: nop ; {no_reloc} 0xa85a9061: nop 0xa85a9062: mov $0x0,%ebx ; {static_stub} 0xa85a9067: jmp 0xa85a9067 ; {runtime_call} 0xa85a906c: nop 0xa85a906d: nop 0xa85a906e: mov $0x0,%ebx ; {static_stub} 0xa85a9073: jmp 0xa85a9073 ; {runtime_call} 0xa85a9078: nop 0xa85a9079: nop 0xa85a907a: mov $0x0,%ebx ; {static_stub} 0xa85a907f: jmp 0xa85a907f ; {runtime_call} 0xa85a9084: nop 0xa85a9085: nop 0xa85a9086: mov $0x0,%ebx ; {static_stub} 0xa85a908b: jmp 0xa85a908b ; {runtime_call} [Exception Handler] 0xa85a9090: call 0xa859e860 ; {runtime_call} 0xa85a9095: push $0x1790172 ; {external_word} 0xa85a909a: call 0xa85a909f 0xa85a909f: pusha 0xa85a90a0: call 0x0150c230 ; {runtime_call} 0xa85a90a5: hlt [Deopt Handler Code] 0xa85a90a6: push $0xa85a90a6 ; {section_word} 0xa85a90ab: jmp 0xa853c520 ; {runtime_call}
标签:
原文地址:http://blog.csdn.net/pacosonswjtu/article/details/51056045