Rémi Forax explained what OptimizeStringConcat is. http://markmail.org/message/4wn7ympz43b4k4cw
Created
August 29, 2011 09:15
-
-
Save rednaxelafx/1178066 to your computer and use it in GitHub Desktop.
OptimizeStringConcat on HotSpot 22.0-b02
This file contains 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
exclude * main |
This file contains 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
+UnlockDiagnosticVMOptions | |
+LogCompilation | |
+PrintCompilation | |
+AggressiveOpts |
This file contains 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
OpenJDK 64-Bit Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output | |
VM option '+UnlockDiagnosticVMOptions' | |
VM option '+LogCompilation' | |
VM option '+PrintCompilation' | |
VM option '+AggressiveOpts' | |
VM option '+PrintAssembly' | |
CompilerOracle: exclude *.main | |
Loaded disassembler from /home/sajia/jdk/6u25_x64/jre/lib/amd64/server/hsdis-amd64.so | |
Decoding compiled method 0x00002aaaab117510: | |
Code: | |
[Disassembling for mach='i386:x86-64'] | |
[Entry Point] | |
# {method} 'arraycopy' '(Ljava/lang/Object;ILjava/lang/Object;II)V' in 'java/lang/System' | |
# parm0: rsi:rsi = 'java/lang/Object' | |
# parm1: rdx = int | |
# parm2: rcx:rcx = 'java/lang/Object' | |
# parm3: r8 = int | |
# parm4: r9 = int | |
# [sp+0x60] (sp of caller) | |
0x00002aaaab1176a0: mov 0x8(%rsi),%r10d | |
0x00002aaaab1176a4: cmp %r10,%rax | |
0x00002aaaab1176a7: je 0x00002aaaab1176b2 | |
0x00002aaaab1176ad: jmpq 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab1176b2: nop | |
0x00002aaaab1176b3: nop | |
0x00002aaaab1176b4: nop | |
0x00002aaaab1176b5: nop | |
0x00002aaaab1176b6: nop | |
0x00002aaaab1176b7: nop | |
[Verified Entry Point] | |
0x00002aaaab1176b8: mov %eax,-0x8000(%rsp) | |
0x00002aaaab1176bf: push %rbp | |
0x00002aaaab1176c0: mov %rsp,%rbp | |
0x00002aaaab1176c3: sub $0x50,%rsp | |
0x00002aaaab1176c7: mov %rsp,%rax | |
0x00002aaaab1176ca: and $0xfffffffffffffff0,%rax | |
0x00002aaaab1176ce: cmp %rsp,%rax | |
0x00002aaaab1176d1: je 0x00002aaaab117756 | |
0x00002aaaab1176d7: mov %rsp,-0x28(%rsp) | |
0x00002aaaab1176dc: sub $0x80,%rsp | |
0x00002aaaab1176e3: mov %rax,0x78(%rsp) | |
0x00002aaaab1176e8: mov %rcx,0x70(%rsp) | |
0x00002aaaab1176ed: mov %rdx,0x68(%rsp) | |
0x00002aaaab1176f2: mov %rbx,0x60(%rsp) | |
0x00002aaaab1176f7: mov %rbp,0x50(%rsp) | |
0x00002aaaab1176fc: mov %rsi,0x48(%rsp) | |
0x00002aaaab117701: mov %rdi,0x40(%rsp) | |
0x00002aaaab117706: mov %r8,0x38(%rsp) | |
0x00002aaaab11770b: mov %r9,0x30(%rsp) | |
0x00002aaaab117710: mov %r10,0x28(%rsp) | |
0x00002aaaab117715: mov %r11,0x20(%rsp) | |
0x00002aaaab11771a: mov %r12,0x18(%rsp) | |
0x00002aaaab11771f: mov %r13,0x10(%rsp) | |
0x00002aaaab117724: mov %r14,0x8(%rsp) | |
0x00002aaaab117729: mov %r15,(%rsp) | |
0x00002aaaab11772d: mov $0x2ae74d6d4c26,%rdi ; {external_word} | |
0x00002aaaab117737: mov $0x2aaaab1176d7,%rsi ; {internal_word} | |
0x00002aaaab117741: mov %rsp,%rdx | |
0x00002aaaab117744: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab117748: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab117752: rex.WB callq *%r10 | |
0x00002aaaab117755: hlt | |
0x00002aaaab117756: mov %r9,(%rsp) | |
0x00002aaaab11775a: mov %r8,%r9 | |
0x00002aaaab11775d: mov %rcx,0x18(%rsp) | |
0x00002aaaab117762: cmp $0x0,%rcx | |
0x00002aaaab117766: lea 0x18(%rsp),%r8 | |
0x00002aaaab11776b: cmove 0x18(%rsp),%r8 | |
0x00002aaaab117771: mov %rdx,%rcx | |
0x00002aaaab117774: mov %rsi,0x8(%rsp) | |
0x00002aaaab117779: cmp $0x0,%rsi | |
0x00002aaaab11777d: lea 0x8(%rsp),%rdx | |
0x00002aaaab117782: cmove 0x8(%rsp),%rdx | |
0x00002aaaab117788: mov $0xedc00d08,%r14 ; {oop(a 'java/lang/Class' = 'java/lang/System')} | |
0x00002aaaab117792: mov %r14,0x38(%rsp) | |
0x00002aaaab117797: lea 0x38(%rsp),%r14 | |
0x00002aaaab11779c: mov %r14,%rsi ; OopMap{[24]=Oop [8]=Oop [56]=Oop off=255} | |
0x00002aaaab11779f: mov $0x2aaaab11779f,%r10 ; {section_word} | |
0x00002aaaab1177a9: mov %r10,0x1e8(%r15) | |
0x00002aaaab1177b0: mov %rsp,0x1e0(%r15) | |
0x00002aaaab1177b7: mov $0x2ae74db32d12,%r10 ; {external_word} | |
0x00002aaaab1177c1: cmpb $0x0,(%r10) | |
0x00002aaaab1177c5: je 0x00002aaaab117819 | |
0x00002aaaab1177cb: push %rsi | |
0x00002aaaab1177cc: push %rdx | |
0x00002aaaab1177cd: push %rcx | |
0x00002aaaab1177ce: push %r8 | |
0x00002aaaab1177d0: push %r9 | |
0x00002aaaab1177d2: mov $0xc421ede0,%rsi ; {oop({method} 'arraycopy' '(Ljava/lang/Object;ILjava/lang/Object;II)V' in 'java/lang/System')} | |
0x00002aaaab1177dc: mov %r15,%rdi | |
0x00002aaaab1177df: test $0xf,%esp | |
0x00002aaaab1177e5: je 0x00002aaaab117805 | |
0x00002aaaab1177eb: sub $0x8,%rsp | |
0x00002aaaab1177ef: mov $0x2ae74d439480,%r10 ; {runtime_call} | |
0x00002aaaab1177f9: rex.WB callq *%r10 | |
0x00002aaaab1177fc: add $0x8,%rsp | |
0x00002aaaab117800: jmpq 0x00002aaaab117812 | |
0x00002aaaab117805: mov $0x2ae74d439480,%r10 ; {runtime_call} | |
0x00002aaaab11780f: rex.WB callq *%r10 | |
0x00002aaaab117812: pop %r9 | |
0x00002aaaab117814: pop %r8 | |
0x00002aaaab117816: pop %rcx | |
0x00002aaaab117817: pop %rdx | |
0x00002aaaab117818: pop %rsi | |
0x00002aaaab117819: lea 0x200(%r15),%rdi | |
0x00002aaaab117820: movl $0x4,0x278(%r15) | |
0x00002aaaab11782b: mov $0x2ae74d0a99d0,%r10 ; {runtime_call} | |
0x00002aaaab117835: rex.WB callq *%r10 | |
0x00002aaaab117838: movl $0x5,0x278(%r15) | |
0x00002aaaab117843: mov %r15d,%ecx | |
0x00002aaaab117846: shr $0x4,%ecx | |
0x00002aaaab117849: and $0xffc,%ecx | |
0x00002aaaab11784f: mov $0x2aaaaacf9000,%r10 ; {external_word} | |
0x00002aaaab117859: mov %ecx,(%r10,%rcx,1) | |
0x00002aaaab11785d: mov $0x2ae74db42080,%r10 ; {external_word} | |
0x00002aaaab117867: cmpl $0x0,(%r10) | |
0x00002aaaab11786e: jne 0x00002aaaab117882 | |
0x00002aaaab117874: cmpl $0x0,0x30(%r15) | |
0x00002aaaab11787c: je 0x00002aaaab1178ad | |
0x00002aaaab117882: mov %r15,%rdi | |
0x00002aaaab117885: mov %rsp,%r12 | |
0x00002aaaab117888: sub $0x0,%rsp | |
0x00002aaaab11788c: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab117890: mov $0x2ae74d50c1b0,%r10 ; {runtime_call} | |
0x00002aaaab11789a: rex.WB callq *%r10 | |
0x00002aaaab11789d: mov %r12,%rsp | |
0x00002aaaab1178a0: mov $0x2ae74dadc700,%r10 ; {external_word} | |
0x00002aaaab1178aa: mov (%r10),%r12 | |
0x00002aaaab1178ad: movl $0x8,0x278(%r15) | |
0x00002aaaab1178b8: cmpl $0x1,0x2a0(%r15) | |
0x00002aaaab1178c3: je 0x00002aaaab117963 | |
0x00002aaaab1178c9: mov $0x2ae74db32d12,%r10 ; {external_word} | |
0x00002aaaab1178d3: cmpb $0x0,(%r10) | |
0x00002aaaab1178d7: je 0x00002aaaab11791d | |
0x00002aaaab1178dd: mov $0xc421ede0,%rsi ; {oop({method} 'arraycopy' '(Ljava/lang/Object;ILjava/lang/Object;II)V' in 'java/lang/System')} | |
0x00002aaaab1178e7: mov %r15,%rdi | |
0x00002aaaab1178ea: test $0xf,%esp | |
0x00002aaaab1178f0: je 0x00002aaaab117910 | |
0x00002aaaab1178f6: sub $0x8,%rsp | |
0x00002aaaab1178fa: mov $0x2ae74d4395d0,%r10 ; {runtime_call} | |
0x00002aaaab117904: rex.WB callq *%r10 | |
0x00002aaaab117907: add $0x8,%rsp | |
0x00002aaaab11790b: jmpq 0x00002aaaab11791d | |
0x00002aaaab117910: mov $0x2ae74d4395d0,%r10 ; {runtime_call} | |
0x00002aaaab11791a: rex.WB callq *%r10 | |
0x00002aaaab11791d: mov $0x0,%r10 | |
0x00002aaaab117927: mov %r10,0x1e0(%r15) | |
0x00002aaaab11792e: mov $0x0,%r10 | |
0x00002aaaab117938: mov %r10,0x1e8(%r15) | |
0x00002aaaab11793f: mov 0x38(%r15),%rcx | |
0x00002aaaab117943: movq $0x0,0x108(%rcx) | |
0x00002aaaab11794e: leaveq | |
0x00002aaaab11794f: cmpq $0x0,0x8(%r15) | |
0x00002aaaab117957: jne 0x00002aaaab11795e | |
0x00002aaaab11795d: retq | |
0x00002aaaab11795e: jmpq Stub::forward exception ; {runtime_call} | |
0x00002aaaab117963: mov %rsp,%r12 | |
0x00002aaaab117966: sub $0x0,%rsp | |
0x00002aaaab11796a: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab11796e: mov $0x2ae74d438530,%r10 ; {runtime_call} | |
0x00002aaaab117978: rex.WB callq *%r10 | |
0x00002aaaab11797b: mov %r12,%rsp | |
0x00002aaaab11797e: mov $0x2ae74dadc700,%r10 ; {external_word} | |
0x00002aaaab117988: mov (%r10),%r12 | |
0x00002aaaab11798b: jmpq 0x00002aaaab1178c9 | |
460 2 n java.lang.System::arraycopy (0 bytes) (static) | |
480 1 java.lang.Object::<init> (1 bytes) | |
Decoding compiled method 0x00002aaaab1194d0: | |
Code: | |
[Entry Point] | |
[Constants] | |
# {method} '<init>' '()V' in 'java/lang/Object' | |
# [sp+0x20] (sp of caller) | |
;; N44: # B1 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab119600: mov 0x8(%rsi),%r10d | |
0x00002aaaab119604: cmp %r10,%rax | |
0x00002aaaab119607: jne 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab11960d: nop | |
0x00002aaaab11960e: nop | |
0x00002aaaab11960f: nop | |
[Verified Entry Point] | |
;; B1: # B3 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab119610: mov %eax,-0x8000(%rsp) | |
0x00002aaaab119617: push %rbp | |
0x00002aaaab119618: sub $0x10,%rsp ;*synchronization entry | |
; - java.lang.Object::<init>@-1 (line 20) | |
0x00002aaaab11961c: mov 0x8(%rsi),%r10d | |
0x00002aaaab119620: mov $0x40000000,%r8d | |
0x00002aaaab119626: test %r8d,0x9c(%r10) | |
0x00002aaaab11962d: je 0x00002aaaab119638 ;*return | |
; - java.lang.Object::<init>@0 (line 20) | |
;; B2: # B4 B3 <- B1 Freq: 0.999999 | |
0x00002aaaab11962f: mov %rsi,%rbp | |
0x00002aaaab119632: nop | |
0x00002aaaab119633: callq 0x00002aaaab11b120 ; OopMap{rbp=Oop off=56} | |
;*return | |
; - java.lang.Object::<init>@0 (line 20) | |
; {runtime_call} | |
;; B3: # N44 <- B1 B2 Freq: 0.99998 | |
0x00002aaaab119638: add $0x10,%rsp | |
0x00002aaaab11963c: pop %rbp | |
0x00002aaaab11963d: test %eax,-0x421643(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab119643: retq ;*return | |
; - java.lang.Object::<init>@0 (line 20) | |
;; B4: # N44 <- B2 Freq: 9.99999e-06 | |
0x00002aaaab119644: mov %rax,%rsi | |
0x00002aaaab119647: add $0x10,%rsp | |
0x00002aaaab11964b: pop %rbp | |
0x00002aaaab11964c: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab119651: hlt | |
0x00002aaaab119652: hlt | |
0x00002aaaab119653: hlt | |
0x00002aaaab119654: hlt | |
0x00002aaaab119655: hlt | |
0x00002aaaab119656: hlt | |
0x00002aaaab119657: hlt | |
0x00002aaaab119658: hlt | |
0x00002aaaab119659: hlt | |
0x00002aaaab11965a: hlt | |
0x00002aaaab11965b: hlt | |
0x00002aaaab11965c: hlt | |
0x00002aaaab11965d: hlt | |
0x00002aaaab11965e: hlt | |
0x00002aaaab11965f: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x00002aaaab119660: jmpq 0x00002aaaab101c20 ; {no_reloc} | |
[Deopt Handler Code] | |
0x00002aaaab119665: callq 0x00002aaaab11966a | |
0x00002aaaab11966a: subq $0x5,(%rsp) | |
0x00002aaaab11966f: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab119674: int3 | |
0x00002aaaab119675: int3 | |
0x00002aaaab119676: int3 | |
0x00002aaaab119677: int3 | |
499 3 java.lang.AbstractStringBuilder::stringSizeOfInt (21 bytes) | |
Decoding compiled method 0x00002aaaab119110: | |
Code: | |
[Entry Point] | |
[Verified Entry Point] | |
[Constants] | |
# {method} 'stringSizeOfInt' '(I)I' in 'java/lang/AbstractStringBuilder' | |
# parm0: rsi = int | |
# [sp+0x30] (sp of caller) | |
;; N1: # B1 <- B21 B22 Freq: 1 | |
;; B1: # B20 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab119240: mov %eax,-0x8000(%rsp) | |
0x00002aaaab119247: push %rbp | |
0x00002aaaab119248: sub $0x20,%rsp ;*synchronization entry | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@-1 (line 608) | |
0x00002aaaab11924c: mov $0xedc022f8,%r10 ; {oop(a 'java/lang/Class' = 'java/lang/AbstractStringBuilder')} | |
0x00002aaaab119256: mov 0x70(%r10),%r9d ;*getstatic sizeTable | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@3 (line 609) | |
0x00002aaaab11925a: mov 0x10(%r9),%r10d | |
0x00002aaaab11925e: cmp %r10d,%esi | |
0x00002aaaab119261: jle 0x00002aaaab1192fb | |
;; B2: # B19 B3 <- B1 Freq: 0.499949 | |
0x00002aaaab119267: mov 0x14(%r9),%r11d | |
0x00002aaaab11926b: cmp %r11d,%esi | |
0x00002aaaab11926e: jle 0x00002aaaab1192f4 | |
;; B3: # B18 B4 <- B2 Freq: 0.249949 | |
0x00002aaaab119274: mov 0x18(%r9),%r11d | |
0x00002aaaab119278: cmp %r11d,%esi | |
0x00002aaaab11927b: jle 0x00002aaaab1192ed | |
;; B4: # B17 B5 <- B3 Freq: 0.124962 | |
0x00002aaaab11927d: mov 0x1c(%r9),%r11d | |
0x00002aaaab119281: cmp %r11d,%esi | |
0x00002aaaab119284: jle 0x00002aaaab1192e6 | |
;; B5: # B16 B6 <- B4 Freq: 0.0624747 | |
0x00002aaaab119286: mov 0x20(%r9),%r11d | |
0x00002aaaab11928a: cmp %r11d,%esi | |
0x00002aaaab11928d: jle 0x00002aaaab1192df ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
;; B6: # B15 B7 <- B5 Freq: 0.0312342 | |
0x00002aaaab11928f: mov 0x24(%r9),%r11d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
0x00002aaaab119293: cmp %r11d,%esi | |
0x00002aaaab119296: jle 0x00002aaaab1192d8 ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
;; B7: # B14 B8 <- B6 Freq: 0.0156155 | |
0x00002aaaab119298: mov 0x28(%r9),%r11d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
0x00002aaaab11929c: cmp %r11d,%esi | |
0x00002aaaab11929f: jle 0x00002aaaab1192d1 ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
;; B8: # B13 B9 <- B7 Freq: 0.00780696 | |
0x00002aaaab1192a1: mov 0x2c(%r9),%r11d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
0x00002aaaab1192a5: cmp %r11d,%esi | |
0x00002aaaab1192a8: jle 0x00002aaaab1192ca ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
;; B9: # B12 B10 <- B8 Freq: 0.00390308 | |
0x00002aaaab1192aa: mov 0x30(%r9),%r11d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
0x00002aaaab1192ae: cmp %r11d,%esi | |
0x00002aaaab1192b1: jle 0x00002aaaab1192c3 ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
;; B10: # B22 B11 <- B9 Freq: 0.00195134 | |
0x00002aaaab1192b3: mov 0x34(%r9),%r10d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
0x00002aaaab1192b7: cmp %r10d,%esi | |
0x00002aaaab1192ba: jg 0x00002aaaab11930c ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
;; B11: # B21 <- B10 Freq: 0.00195134 | |
0x00002aaaab1192bc: mov $0xa,%eax | |
0x00002aaaab1192c1: jmp 0x00002aaaab119300 | |
;; B12: # B21 <- B9 Freq: 0.00195174 | |
0x00002aaaab1192c3: mov $0x9,%eax | |
0x00002aaaab1192c8: jmp 0x00002aaaab119300 | |
;; B13: # B21 <- B8 Freq: 0.00390388 | |
0x00002aaaab1192ca: mov $0x8,%eax | |
0x00002aaaab1192cf: jmp 0x00002aaaab119300 | |
;; B14: # B21 <- B7 Freq: 0.00780854 | |
0x00002aaaab1192d1: mov $0x7,%eax | |
0x00002aaaab1192d6: jmp 0x00002aaaab119300 | |
;; B15: # B21 <- B6 Freq: 0.0156187 | |
0x00002aaaab1192d8: mov $0x6,%eax | |
0x00002aaaab1192dd: jmp 0x00002aaaab119300 | |
;; B16: # B21 <- B5 Freq: 0.0312405 | |
0x00002aaaab1192df: mov $0x5,%eax | |
0x00002aaaab1192e4: jmp 0x00002aaaab119300 | |
;; B17: # B21 <- B4 Freq: 0.0624873 | |
0x00002aaaab1192e6: mov $0x4,%eax | |
0x00002aaaab1192eb: jmp 0x00002aaaab119300 | |
;; B18: # B21 <- B3 Freq: 0.124987 | |
0x00002aaaab1192ed: mov $0x3,%eax | |
0x00002aaaab1192f2: jmp 0x00002aaaab119300 | |
;; B19: # B21 <- B2 Freq: 0.25 | |
0x00002aaaab1192f4: mov $0x2,%eax | |
0x00002aaaab1192f9: jmp 0x00002aaaab119300 | |
;; B20: # B21 <- B1 Freq: 0.500051 | |
0x00002aaaab1192fb: mov $0x1,%eax ;*iadd | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@13 (line 610) | |
;; B21: # N1 <- B19 B18 B14 B16 B12 B17 B13 B15 B11 B20 Freq: 1 | |
0x00002aaaab119300: add $0x20,%rsp | |
0x00002aaaab119304: pop %rbp | |
0x00002aaaab119305: test %eax,-0x42130b(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab11930b: retq | |
;; B22: # N1 <- B10 Freq: 1.97726e-09 | |
0x00002aaaab11930c: mov %esi,(%rsp) | |
0x00002aaaab11930f: mov %r9d,0x4(%rsp) | |
0x00002aaaab119314: mov $0xffffffe4,%esi | |
0x00002aaaab119319: nop | |
0x00002aaaab11931a: nop | |
0x00002aaaab11931b: callq 0x00002aaaab0f3fa0 ; OopMap{[4]=NarrowOop off=224} | |
;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; {runtime_call} | |
0x00002aaaab119320: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11932a: rex.WB callq *%r10 ;*iinc | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@15 (line 608) | |
0x00002aaaab11932d: hlt | |
0x00002aaaab11932e: hlt | |
0x00002aaaab11932f: hlt | |
0x00002aaaab119330: hlt | |
0x00002aaaab119331: hlt | |
0x00002aaaab119332: hlt | |
0x00002aaaab119333: hlt | |
0x00002aaaab119334: hlt | |
0x00002aaaab119335: hlt | |
0x00002aaaab119336: hlt | |
0x00002aaaab119337: hlt | |
0x00002aaaab119338: hlt | |
0x00002aaaab119339: hlt | |
0x00002aaaab11933a: hlt | |
0x00002aaaab11933b: hlt | |
0x00002aaaab11933c: hlt | |
0x00002aaaab11933d: hlt | |
0x00002aaaab11933e: hlt | |
0x00002aaaab11933f: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x00002aaaab119340: jmpq 0x00002aaaab101c20 ; {no_reloc} | |
[Deopt Handler Code] | |
0x00002aaaab119345: callq 0x00002aaaab11934a | |
0x00002aaaab11934a: subq $0x5,(%rsp) | |
0x00002aaaab11934f: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab119354: int3 | |
0x00002aaaab119355: int3 | |
0x00002aaaab119356: int3 | |
0x00002aaaab119357: int3 | |
514 4 java.lang.Integer::getChars (131 bytes) | |
Decoding compiled method 0x00002aaaab11bbd0: | |
Code: | |
[Entry Point] | |
[Verified Entry Point] | |
[Constants] | |
# {method} 'getChars' '(II[C)V' in 'java/lang/Integer' | |
# parm0: rsi = int | |
# parm1: rdx = int | |
# parm2: rcx:rcx = '[C' | |
# [sp+0x50] (sp of caller) | |
;; N1: # B1 <- B61 B19 B31 B37 B33 B15 B36 B16 B60 B17 B18 Freq: 1 | |
;; B1: # B20 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11bd40: mov %eax,-0x8000(%rsp) | |
0x00002aaaab11bd47: push %rbp | |
0x00002aaaab11bd48: sub $0x40,%rsp ;*synchronization entry | |
; - java.lang.Integer::getChars@-1 (line 324) | |
0x00002aaaab11bd4c: mov %rcx,0x18(%rsp) | |
0x00002aaaab11bd51: test %esi,%esi | |
0x00002aaaab11bd53: jl 0x00002aaaab11bf2d ;*ifge | |
; - java.lang.Integer::getChars@7 (line 327) | |
;; B2: # B3 <- B1 Freq: 1 | |
0x00002aaaab11bd59: xor %r14d,%r14d ;*iload_0 | |
; - java.lang.Integer::getChars@17 (line 333) | |
;; B3: # B21 B4 <- B20 B2 Freq: 1 | |
0x00002aaaab11bd5c: mov %edx,%ecx | |
0x00002aaaab11bd5e: dec %ecx ;*iinc | |
; - java.lang.Integer::getChars@47 (line 338) | |
0x00002aaaab11bd60: mov $0xedc02b00,%r9 ; {oop(a 'java/lang/Class' = 'java/lang/Integer')} | |
0x00002aaaab11bd6a: cmp $0x10000,%esi | |
0x00002aaaab11bd70: jge 0x00002aaaab11bf3a ;*if_icmplt | |
; - java.lang.Integer::getChars@20 (line 333) | |
;; B4: # B16 B5 <- B27 B3 Freq: 1 | |
0x00002aaaab11bd76: mov 0x74(%r9),%edi ;*getstatic digits | |
; - java.lang.Integer::getChars@100 (line 347) | |
0x00002aaaab11bd7a: imul $0xcccd,%esi,%eax | |
0x00002aaaab11bd80: shr $0x13,%eax ;*iushr | |
; - java.lang.Integer::getChars@81 (line 345) | |
0x00002aaaab11bd83: mov %eax,%r11d | |
0x00002aaaab11bd86: shl %r11d ;*ishl | |
; - java.lang.Integer::getChars@89 (line 346) | |
0x00002aaaab11bd89: mov %eax,%r9d | |
0x00002aaaab11bd8c: shl $0x3,%r9d ;*ishl | |
; - java.lang.Integer::getChars@86 (line 346) | |
0x00002aaaab11bd90: mov %r9d,%ebx | |
0x00002aaaab11bd93: add %r11d,%ebx | |
0x00002aaaab11bd96: mov %esi,%r8d | |
0x00002aaaab11bd99: sub %ebx,%r8d ;*isub | |
; - java.lang.Integer::getChars@91 (line 346) | |
0x00002aaaab11bd9c: cmp $0x24,%r8d | |
0x00002aaaab11bda0: jae 0x00002aaaab11be5a | |
;; B5: # B60 B6 <- B4 Freq: 0.999999 | |
0x00002aaaab11bda6: movslq %r9d,%r10 | |
0x00002aaaab11bda9: movslq %r11d,%r11 | |
0x00002aaaab11bdac: add %r11,%r10 | |
0x00002aaaab11bdaf: movslq %esi,%r11 | |
0x00002aaaab11bdb2: sub %r10,%r11 | |
0x00002aaaab11bdb5: movzwl 0x10(%rdi,%r11,2),%r8d ;*caload | |
; - java.lang.Integer::getChars@105 (line 347) | |
0x00002aaaab11bdbb: mov 0x18(%rsp),%r10 | |
0x00002aaaab11bdc0: mov 0xc(%r10),%r10d ; implicit exception: dispatches to 0x00002aaaab11c29d | |
;; B6: # B17 B7 <- B5 Freq: 0.999998 | |
0x00002aaaab11bdc4: cmp %r10d,%ecx | |
0x00002aaaab11bdc7: jae 0x00002aaaab11be91 | |
;; B7: # B10 B8 <- B6 Freq: 0.999997 | |
0x00002aaaab11bdcd: mov 0x18(%rsp),%r11 | |
0x00002aaaab11bdd2: mov %r8w,0xe(%r11,%rdx,2) ;*castore | |
; - java.lang.Integer::getChars@106 (line 347) | |
0x00002aaaab11bdd8: test %eax,%eax | |
0x00002aaaab11bdda: jne 0x00002aaaab11bde3 ;*ifne | |
; - java.lang.Integer::getChars@110 (line 349) | |
;; B8: # B14 <- B7 Freq: 0.500043 | |
0x00002aaaab11bddc: jmp 0x00002aaaab11be45 | |
;; B9: # B10 <- B12 Freq: 0.499862 | |
0x00002aaaab11bdde: mov %ebx,%eax | |
0x00002aaaab11bde0: mov %r9d,%ecx ;*iload_0 | |
; - java.lang.Integer::getChars@75 (line 345) | |
;; B10: # B18 B11 <- B7 B9 Loop: B10-B9 inner partial_peel_failed Freq: 0.999815 | |
0x00002aaaab11bde3: imul $0xcccd,%eax,%ebx | |
0x00002aaaab11bde9: mov %ecx,%r9d | |
0x00002aaaab11bdec: dec %r9d ;*iinc | |
; - java.lang.Integer::getChars@95 (line 347) | |
0x00002aaaab11bdef: shr $0x13,%ebx ;*iushr | |
; - java.lang.Integer::getChars@81 (line 345) | |
0x00002aaaab11bdf2: mov %ebx,%ebp | |
0x00002aaaab11bdf4: shl %ebp ;*ishl | |
; - java.lang.Integer::getChars@89 (line 346) | |
0x00002aaaab11bdf6: mov %ebx,%edx | |
0x00002aaaab11bdf8: shl $0x3,%edx ;*ishl | |
; - java.lang.Integer::getChars@86 (line 346) | |
0x00002aaaab11bdfb: mov %edx,%esi | |
0x00002aaaab11bdfd: add %ebp,%esi | |
0x00002aaaab11bdff: mov %eax,%r11d | |
0x00002aaaab11be02: sub %esi,%r11d ;*isub | |
; - java.lang.Integer::getChars@91 (line 346) | |
0x00002aaaab11be05: cmp $0x24,%r11d | |
0x00002aaaab11be09: jae 0x00002aaaab11bec1 | |
;; B11: # B19 B12 <- B10 Freq: 0.999814 | |
0x00002aaaab11be0f: movslq %edx,%r11 | |
0x00002aaaab11be12: movslq %eax,%r8 | |
0x00002aaaab11be15: movslq %ebp,%rdx | |
0x00002aaaab11be18: add %rdx,%r11 | |
0x00002aaaab11be1b: sub %r11,%r8 | |
0x00002aaaab11be1e: movzwl 0x10(%rdi,%r8,2),%r8d ;*caload | |
; - java.lang.Integer::getChars@105 (line 347) | |
0x00002aaaab11be24: cmp %r10d,%r9d | |
0x00002aaaab11be27: jae 0x00002aaaab11bef9 | |
;; B12: # B9 B13 <- B11 Freq: 0.999813 | |
0x00002aaaab11be2d: mov 0x18(%rsp),%r11 | |
0x00002aaaab11be32: mov %r8w,0xe(%r11,%rcx,2) ; OopMap{rdi=NarrowOop [24]=Oop off=248} | |
;*ifne | |
; - java.lang.Integer::getChars@110 (line 349) | |
0x00002aaaab11be38: test %eax,-0x423e3e(%rip) # 0x00002aaaaacf8000 | |
; {poll} | |
0x00002aaaab11be3e: test %ebx,%ebx | |
0x00002aaaab11be40: jne 0x00002aaaab11bdde ;*ifne | |
; - java.lang.Integer::getChars@110 (line 349) | |
;; B13: # B14 <- B12 Freq: 0.499951 | |
0x00002aaaab11be42: mov %r9d,%ecx ;*goto | |
; - java.lang.Integer::getChars@113 (line 349) | |
;; B14: # B28 B15 <- B13 B8 Freq: 0.999995 | |
0x00002aaaab11be45: test %r14d,%r14d | |
0x00002aaaab11be48: jne 0x00002aaaab11bfe5 ;*synchronization entry | |
; - java.lang.Integer::getChars@-1 (line 324) | |
;; B15: # N1 <- B29 B14 Freq: 0.999995 | |
0x00002aaaab11be4e: add $0x40,%rsp | |
0x00002aaaab11be52: pop %rbp | |
0x00002aaaab11be53: test %eax,-0x423e59(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab11be59: retq | |
;; B16: # N1 <- B4 Freq: 1.01328e-06 | |
0x00002aaaab11be5a: mov $0xffffffe4,%esi | |
0x00002aaaab11be5f: mov %eax,(%rsp) | |
0x00002aaaab11be62: mov %r14d,0x8(%rsp) | |
0x00002aaaab11be67: pushq 0x18(%rsp) | |
0x00002aaaab11be6b: popq 0x10(%rsp) | |
0x00002aaaab11be6f: mov %ecx,0xc(%rsp) | |
0x00002aaaab11be73: mov %edi,0x18(%rsp) | |
0x00002aaaab11be77: mov %r8d,0x1c(%rsp) | |
0x00002aaaab11be7c: nop | |
0x00002aaaab11be7d: nop | |
0x00002aaaab11be7e: nop | |
0x00002aaaab11be7f: callq 0x00002aaaab0f3fa0 ; OopMap{[16]=Oop [24]=NarrowOop off=324} | |
;*caload | |
; - java.lang.Integer::getChars@105 (line 347) | |
; {runtime_call} | |
0x00002aaaab11be84: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11be8e: rex.WB callq *%r10 | |
;; B17: # N1 <- B6 Freq: 1.01328e-06 | |
0x00002aaaab11be91: mov $0xffffffe4,%esi | |
0x00002aaaab11be96: mov %eax,(%rsp) | |
0x00002aaaab11be99: mov %r14d,0x8(%rsp) | |
0x00002aaaab11be9e: pushq 0x18(%rsp) | |
0x00002aaaab11bea2: popq 0x10(%rsp) | |
0x00002aaaab11bea6: mov %ecx,0xc(%rsp) | |
0x00002aaaab11beaa: mov %r8d,0x18(%rsp) | |
0x00002aaaab11beaf: callq 0x00002aaaab0f3fa0 ; OopMap{[16]=Oop off=372} | |
;*castore | |
; - java.lang.Integer::getChars@106 (line 347) | |
; {runtime_call} | |
0x00002aaaab11beb4: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11bebe: rex.WB callq *%r10 | |
;; B18: # N1 <- B10 Freq: 1.01309e-06 | |
0x00002aaaab11bec1: mov $0xffffffe4,%esi | |
0x00002aaaab11bec6: mov %ebx,(%rsp) | |
0x00002aaaab11bec9: mov %r14d,0x8(%rsp) | |
0x00002aaaab11bece: pushq 0x18(%rsp) | |
0x00002aaaab11bed2: popq 0x10(%rsp) | |
0x00002aaaab11bed6: mov %r9d,0xc(%rsp) | |
0x00002aaaab11bedb: mov %edi,0x18(%rsp) | |
0x00002aaaab11bedf: mov %r11d,0x1c(%rsp) | |
0x00002aaaab11bee4: nop | |
0x00002aaaab11bee5: nop | |
0x00002aaaab11bee6: nop | |
0x00002aaaab11bee7: callq 0x00002aaaab0f3fa0 ; OopMap{[16]=Oop [24]=NarrowOop off=428} | |
;*caload | |
; - java.lang.Integer::getChars@105 (line 347) | |
; {runtime_call} | |
0x00002aaaab11beec: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11bef6: rex.WB callq *%r10 | |
;; B19: # N1 <- B11 Freq: 1.01309e-06 | |
0x00002aaaab11bef9: mov $0xffffffe4,%esi | |
0x00002aaaab11befe: mov %ebx,(%rsp) | |
0x00002aaaab11bf01: mov %r14d,0x8(%rsp) | |
0x00002aaaab11bf06: pushq 0x18(%rsp) | |
0x00002aaaab11bf0a: popq 0x10(%rsp) | |
0x00002aaaab11bf0e: mov %r9d,0xc(%rsp) | |
0x00002aaaab11bf13: mov %r8d,0x18(%rsp) | |
0x00002aaaab11bf18: nop | |
0x00002aaaab11bf19: nop | |
0x00002aaaab11bf1a: nop | |
0x00002aaaab11bf1b: callq 0x00002aaaab0f3fa0 ; OopMap{[16]=Oop off=480} | |
;*castore | |
; - java.lang.Integer::getChars@106 (line 347) | |
; {runtime_call} | |
0x00002aaaab11bf20: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11bf2a: rex.WB callq *%r10 ;*castore | |
; - java.lang.Integer::getChars@106 (line 347) | |
;; B20: # B3 <- B1 Freq: 4.76837e-07 | |
0x00002aaaab11bf2d: neg %esi ;*ineg | |
; - java.lang.Integer::getChars@15 (line 329) | |
0x00002aaaab11bf2f: mov $0x2d,%r14d | |
0x00002aaaab11bf35: jmpq 0x00002aaaab11bd5c | |
;; B21: # B61 B22 <- B3 Freq: 4.76837e-07 | |
0x00002aaaab11bf3a: mov 0x18(%rsp),%r10 | |
0x00002aaaab11bf3f: mov 0xc(%r10),%ebx ;*castore | |
; - java.lang.Integer::getChars@58 (line 338) | |
; implicit exception: dispatches to 0x00002aaaab11c2bd | |
;; B22: # B30 B23 <- B21 Freq: 4.76837e-07 | |
0x00002aaaab11bf43: mov 0x7c(%r9),%r8d ;*getstatic DigitOnes | |
; - java.lang.Integer::getChars@52 (line 338) | |
0x00002aaaab11bf47: movslq %esi,%r11 | |
0x00002aaaab11bf4a: mov %esi,%r10d | |
0x00002aaaab11bf4d: sar $0x1f,%r10d | |
0x00002aaaab11bf51: imul $0x51eb851f,%r11,%r11 | |
0x00002aaaab11bf58: sar $0x25,%r11 | |
0x00002aaaab11bf5c: mov %r11d,%ebp | |
0x00002aaaab11bf5f: sub %r10d,%ebp ;*idiv | |
; - java.lang.Integer::getChars@26 (line 334) | |
0x00002aaaab11bf62: mov %ebp,%r10d | |
0x00002aaaab11bf65: shl $0x2,%r10d | |
0x00002aaaab11bf69: mov %ebp,%edi | |
0x00002aaaab11bf6b: shl $0x5,%edi | |
0x00002aaaab11bf6e: mov %ebp,%r11d | |
0x00002aaaab11bf71: shl $0x6,%r11d | |
0x00002aaaab11bf75: add %edi,%r11d | |
0x00002aaaab11bf78: add %r10d,%r11d | |
0x00002aaaab11bf7b: sub %r11d,%esi ;*isub | |
; - java.lang.Integer::getChars@41 (line 336) | |
0x00002aaaab11bf7e: cmp $0x64,%esi | |
0x00002aaaab11bf81: jae 0x00002aaaab11c002 | |
;; B23: # B32 B24 <- B22 Freq: 4.76836e-07 | |
0x00002aaaab11bf83: movzwl 0x10(%r8,%rsi,2),%r10d ;*caload | |
; - java.lang.Integer::getChars@57 (line 338) | |
0x00002aaaab11bf89: cmp %ebx,%ecx | |
0x00002aaaab11bf8b: jae 0x00002aaaab11c031 | |
;; B24: # B34 B25 <- B23 Freq: 4.76836e-07 | |
0x00002aaaab11bf91: mov 0x18(%rsp),%r11 | |
0x00002aaaab11bf96: mov %r10w,0xe(%r11,%rdx,2) ;*castore | |
; - java.lang.Integer::getChars@58 (line 338) | |
0x00002aaaab11bf9c: mov 0x78(%r9),%r11d ;*getstatic DigitTens | |
; - java.lang.Integer::getChars@65 (line 339) | |
0x00002aaaab11bfa0: movzwl 0x10(%r11,%rsi,2),%ecx ;*caload | |
; - java.lang.Integer::getChars@70 (line 339) | |
0x00002aaaab11bfa6: mov %edx,%r13d | |
0x00002aaaab11bfa9: add $0xfffffffffffffffe,%r13d | |
;*iinc | |
; - java.lang.Integer::getChars@60 (line 339) | |
0x00002aaaab11bfad: test %r13d,%r13d | |
0x00002aaaab11bfb0: jl 0x00002aaaab11c05d ;*iload_0 | |
; - java.lang.Integer::getChars@23 (line 334) | |
;; B25: # B36 B26 <- B24 B41 Loop: B25-B41 inner pre of N694 Freq: 4.76835e-07 | |
0x00002aaaab11bfb6: cmp %ebx,%r13d | |
0x00002aaaab11bfb9: jae 0x00002aaaab11c061 | |
;; B26: # B38 B27 <- B25 Freq: 4.76835e-07 | |
0x00002aaaab11bfbf: mov 0x18(%rsp),%r10 | |
0x00002aaaab11bfc4: mov %cx,0x10(%r10,%r13,2) ;*castore | |
; - java.lang.Integer::getChars@71 (line 339) | |
0x00002aaaab11bfca: mov %r13d,%ecx | |
0x00002aaaab11bfcd: dec %ecx ;*iinc | |
; - java.lang.Integer::getChars@47 (line 338) | |
0x00002aaaab11bfcf: cmp $0x10000,%ebp | |
0x00002aaaab11bfd5: jge 0x00002aaaab11c0ad ;*iinc | |
; - java.lang.Integer::getChars@95 (line 347) | |
;; B27: # B4 <- B50 B26 B44 Freq: 4.76835e-07 | |
0x00002aaaab11bfdb: mov %r13d,%edx | |
0x00002aaaab11bfde: mov %ebp,%esi | |
0x00002aaaab11bfe0: jmpq 0x00002aaaab11bd76 | |
;; B28: # B37 B29 <- B14 Freq: 4.76835e-07 | |
0x00002aaaab11bfe5: mov %ecx,%ebp | |
0x00002aaaab11bfe7: dec %ebp ;*iinc | |
; - java.lang.Integer::getChars@122 (line 352) | |
0x00002aaaab11bfe9: cmp %r10d,%ebp | |
0x00002aaaab11bfec: jae 0x00002aaaab11c091 | |
;; B29: # B15 <- B28 Freq: 4.76834e-07 | |
0x00002aaaab11bff2: mov 0x18(%rsp),%r10 | |
0x00002aaaab11bff7: mov %r14w,0xe(%r10,%rcx,2) ;*castore | |
; - java.lang.Integer::getChars@129 (line 352) | |
0x00002aaaab11bffd: jmpq 0x00002aaaab11be4e | |
;; B30: # B31 <- B22 Freq: 4.83169e-13 | |
0x00002aaaab11c002: mov %ebp,%edi | |
0x00002aaaab11c004: mov %esi,%ebp | |
;; B31: # N1 <- B30 B51 B46 Freq: 4.83169e-13 | |
0x00002aaaab11c006: mov $0xffffffe4,%esi | |
0x00002aaaab11c00b: mov %edi,(%rsp) | |
0x00002aaaab11c00e: mov %r14d,0x10(%rsp) | |
0x00002aaaab11c013: mov %ecx,0x14(%rsp) | |
0x00002aaaab11c017: mov %r8d,0x20(%rsp) | |
0x00002aaaab11c01c: nop | |
0x00002aaaab11c01d: nop | |
0x00002aaaab11c01e: nop | |
0x00002aaaab11c01f: callq 0x00002aaaab0f3fa0 ; OopMap{[24]=Oop [32]=NarrowOop off=740} | |
;*caload | |
; - java.lang.Integer::getChars@57 (line 338) | |
; {runtime_call} | |
0x00002aaaab11c024: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11c02e: rex.WB callq *%r10 ;*caload | |
; - java.lang.Integer::getChars@57 (line 338) | |
;; B32: # B33 <- B23 Freq: 4.83168e-13 | |
0x00002aaaab11c031: mov %ebp,%edi | |
0x00002aaaab11c033: mov %esi,%ebp | |
;; B33: # N1 <- B32 B52 B39 Freq: 4.83168e-13 | |
0x00002aaaab11c035: mov $0xffffffe4,%esi | |
0x00002aaaab11c03a: mov %edi,(%rsp) | |
0x00002aaaab11c03d: mov %r14d,0x10(%rsp) | |
0x00002aaaab11c042: mov %ecx,0x14(%rsp) | |
0x00002aaaab11c046: mov %r10d,0x20(%rsp) | |
0x00002aaaab11c04b: callq 0x00002aaaab0f3fa0 ; OopMap{[24]=Oop off=784} | |
;*castore | |
; - java.lang.Integer::getChars@58 (line 338) | |
; {runtime_call} | |
0x00002aaaab11c050: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11c05a: rex.WB callq *%r10 ;*castore | |
; - java.lang.Integer::getChars@58 (line 338) | |
;; B34: # B35 <- B24 Freq: 4.76836e-13 | |
0x00002aaaab11c05d: mov %ebp,%edi | |
;; B35: # B36 <- B34 B53 B58 Freq: 4.76836e-13 | |
0x00002aaaab11c05f: mov %edi,%ebp | |
;; B36: # N1 <- B49 B25 B35 Freq: 9.60003e-13 | |
0x00002aaaab11c061: mov $0xffffffe4,%esi | |
0x00002aaaab11c066: mov %r14d,0xc(%rsp) | |
0x00002aaaab11c06b: pushq 0x18(%rsp) | |
0x00002aaaab11c06f: popq 0x10(%rsp) | |
0x00002aaaab11c073: mov %r13d,0x18(%rsp) | |
0x00002aaaab11c078: mov %ecx,0x1c(%rsp) | |
0x00002aaaab11c07c: nop | |
0x00002aaaab11c07d: nop | |
0x00002aaaab11c07e: nop | |
0x00002aaaab11c07f: callq 0x00002aaaab0f3fa0 ; OopMap{[16]=Oop off=836} | |
;*castore | |
; - java.lang.Integer::getChars@71 (line 339) | |
; {runtime_call} | |
0x00002aaaab11c084: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11c08e: rex.WB callq *%r10 | |
;; B37: # N1 <- B28 Freq: 4.83167e-13 | |
0x00002aaaab11c091: mov $0xffffffe4,%esi | |
0x00002aaaab11c096: mov %r14d,0x8(%rsp) | |
0x00002aaaab11c09b: callq 0x00002aaaab0f3fa0 ; OopMap{[24]=Oop off=864} | |
;*castore | |
; - java.lang.Integer::getChars@129 (line 352) | |
; {runtime_call} | |
0x00002aaaab11c0a0: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11c0aa: rex.WB callq *%r10 ;*iload_0 | |
; - java.lang.Integer::getChars@23 (line 334) | |
;; B38: # B45 B39 <- B26 Freq: 2.27373e-13 | |
0x00002aaaab11c0ad: mov %ebp,%esi | |
0x00002aaaab11c0af: sar $0x1f,%esi | |
0x00002aaaab11c0b2: movslq %ebp,%r10 | |
0x00002aaaab11c0b5: imul $0x51eb851f,%r10,%r10 | |
0x00002aaaab11c0bc: sar $0x25,%r10 | |
0x00002aaaab11c0c0: mov %r10d,%edi | |
0x00002aaaab11c0c3: sub %esi,%edi ;*idiv | |
; - java.lang.Integer::getChars@26 (line 334) | |
0x00002aaaab11c0c5: mov %edi,%esi | |
0x00002aaaab11c0c7: shl $0x2,%esi | |
0x00002aaaab11c0ca: mov %edi,%r10d | |
0x00002aaaab11c0cd: shl $0x5,%r10d | |
0x00002aaaab11c0d1: mov %edi,%eax | |
0x00002aaaab11c0d3: shl $0x6,%eax | |
0x00002aaaab11c0d6: add %r10d,%eax | |
0x00002aaaab11c0d9: add %esi,%eax | |
0x00002aaaab11c0db: sub %eax,%ebp ;*isub | |
; - java.lang.Integer::getChars@41 (line 336) | |
0x00002aaaab11c0dd: cmp $0x64,%ebp | |
0x00002aaaab11c0e0: jae 0x00002aaaab11c15d | |
;; B39: # B33 B40 <- B38 Freq: 2.27372e-13 | |
0x00002aaaab11c0e2: movzwl 0x10(%r8,%rbp,2),%r10d ;*caload | |
; - java.lang.Integer::getChars@57 (line 338) | |
0x00002aaaab11c0e8: cmp %ebx,%ecx | |
0x00002aaaab11c0ea: jae 0x00002aaaab11c035 | |
;; B40: # B42 B41 <- B39 Freq: 2.27372e-13 | |
0x00002aaaab11c0f0: mov 0x18(%rsp),%rcx | |
0x00002aaaab11c0f5: mov %r10w,0xe(%rcx,%r13,2) ;*castore | |
; - java.lang.Integer::getChars@58 (line 338) | |
0x00002aaaab11c0fb: movzwl 0x10(%r11,%rbp,2),%ecx ;*caload | |
; - java.lang.Integer::getChars@70 (line 339) | |
0x00002aaaab11c101: mov %r13d,%eax | |
0x00002aaaab11c104: add $0xfffffffffffffffe,%eax ;*iinc | |
; - java.lang.Integer::getChars@60 (line 339) | |
0x00002aaaab11c107: mov %ebx,%esi | |
0x00002aaaab11c109: dec %esi | |
0x00002aaaab11c10b: mov %edx,%r10d | |
0x00002aaaab11c10e: add $0xfffffffffffffffc,%r10d | |
0x00002aaaab11c112: cmp %esi,%r10d | |
0x00002aaaab11c115: cmovg %esi,%r10d | |
0x00002aaaab11c119: mov $0xffffffff,%ebp | |
0x00002aaaab11c11e: cmp %ebp,%r10d | |
0x00002aaaab11c121: cmovl %ebp,%r10d | |
0x00002aaaab11c125: cmp %r10d,%eax | |
0x00002aaaab11c128: jle 0x00002aaaab11c134 | |
;; B41: # B25 <- B40 Freq: 2.04635e-13 | |
0x00002aaaab11c12a: mov %edi,%ebp | |
0x00002aaaab11c12c: mov %eax,%r13d | |
0x00002aaaab11c12f: jmpq 0x00002aaaab11bfb6 | |
;; B42: # B47 B43 <- B40 Freq: 2.27372e-14 | |
0x00002aaaab11c134: test %eax,%eax | |
0x00002aaaab11c136: jle 0x00002aaaab11c176 ;*iload_0 | |
; - java.lang.Integer::getChars@23 (line 334) | |
;; B43: # B55 B44 <- B42 B57 Loop: B43-B57 inner main of N175 Freq: 2.27372e-14 | |
0x00002aaaab11c138: mov 0x18(%rsp),%r10 | |
0x00002aaaab11c13d: mov %cx,0x10(%r10,%rax,2) ;*castore | |
; - java.lang.Integer::getChars@71 (line 339) | |
0x00002aaaab11c143: cmp $0x10000,%edi | |
0x00002aaaab11c149: jge 0x00002aaaab11c220 ;*if_icmplt | |
; - java.lang.Integer::getChars@20 (line 333) | |
;; B44: # B27 <- B43 Freq: 2.27372e-14 | |
0x00002aaaab11c14f: mov %eax,%ecx | |
0x00002aaaab11c151: dec %ecx ;*iinc | |
; - java.lang.Integer::getChars@47 (line 338) | |
0x00002aaaab11c153: mov %eax,%r13d | |
0x00002aaaab11c156: mov %edi,%ebp | |
0x00002aaaab11c158: jmpq 0x00002aaaab11bfdb | |
;; B45: # B46 <- B38 Freq: 2.30392e-19 | |
0x00002aaaab11c15d: mov %ecx,%eax | |
0x00002aaaab11c15f: mov %ebp,%r10d | |
0x00002aaaab11c162: mov %edi,%ebp | |
0x00002aaaab11c164: mov %r10d,%edi | |
;; B46: # B31 <- B45 B59 Freq: 2.30392e-19 | |
0x00002aaaab11c167: mov %eax,%ecx | |
0x00002aaaab11c169: mov %edi,%r11d | |
0x00002aaaab11c16c: mov %ebp,%edi | |
0x00002aaaab11c16e: mov %r11d,%ebp | |
0x00002aaaab11c171: jmpq 0x00002aaaab11c006 | |
;; B47: # B48 <- B42 Freq: 2.30391e-20 | |
0x00002aaaab11c176: mov %edi,%ebp | |
0x00002aaaab11c178: mov %r13d,%r10d | |
0x00002aaaab11c17b: mov %eax,%r13d | |
0x00002aaaab11c17e: mov %r10d,%eax | |
;; B48: # B58 B49 <- B47 B56 Freq: 2.30392e-20 | |
0x00002aaaab11c181: cmp $0xffffffffffffffff,%r13d | |
0x00002aaaab11c185: jle 0x00002aaaab11c288 | |
0x00002aaaab11c18b: nop ;*iload_0 | |
; - java.lang.Integer::getChars@23 (line 334) | |
;; B49: # B36 B50 <- B48 B54 Loop: B49-B54 inner post of N694 Freq: 2.30391e-20 | |
0x00002aaaab11c18c: cmp %ebx,%r13d | |
0x00002aaaab11c18f: jae 0x00002aaaab11c061 | |
;; B50: # B27 B51 <- B49 Freq: 2.30391e-20 | |
0x00002aaaab11c195: mov 0x18(%rsp),%r10 | |
0x00002aaaab11c19a: mov %cx,0x10(%r10,%r13,2) ;*castore | |
; - java.lang.Integer::getChars@71 (line 339) | |
0x00002aaaab11c1a0: mov %r13d,%ecx | |
0x00002aaaab11c1a3: dec %ecx ;*iinc | |
; - java.lang.Integer::getChars@47 (line 338) | |
0x00002aaaab11c1a5: cmp $0x10000,%ebp | |
0x00002aaaab11c1ab: jl 0x00002aaaab11bfdb ;*iload_0 | |
; - java.lang.Integer::getChars@23 (line 334) | |
;; B51: # B31 B52 <- B50 Freq: 1.09859e-26 | |
0x00002aaaab11c1b1: mov %ebp,%r10d | |
0x00002aaaab11c1b4: sar $0x1f,%r10d | |
0x00002aaaab11c1b8: movslq %ebp,%rdi | |
0x00002aaaab11c1bb: imul $0x51eb851f,%rdi,%rdi | |
0x00002aaaab11c1c2: sar $0x25,%rdi | |
0x00002aaaab11c1c6: mov %edi,%edi | |
0x00002aaaab11c1c8: sub %r10d,%edi ;*idiv | |
; - java.lang.Integer::getChars@26 (line 334) | |
0x00002aaaab11c1cb: mov %edi,%r10d | |
0x00002aaaab11c1ce: shl $0x2,%r10d | |
0x00002aaaab11c1d2: mov %edi,%esi | |
0x00002aaaab11c1d4: shl $0x5,%esi | |
0x00002aaaab11c1d7: mov %edi,%edx | |
0x00002aaaab11c1d9: shl $0x6,%edx | |
0x00002aaaab11c1dc: add %esi,%edx | |
0x00002aaaab11c1de: add %r10d,%edx | |
0x00002aaaab11c1e1: sub %edx,%ebp ;*isub | |
; - java.lang.Integer::getChars@41 (line 336) | |
0x00002aaaab11c1e3: cmp $0x64,%ebp | |
0x00002aaaab11c1e6: jae 0x00002aaaab11c006 | |
;; B52: # B33 B53 <- B51 Freq: 1.09859e-26 | |
0x00002aaaab11c1ec: movzwl 0x10(%r8,%rbp,2),%r10d ;*caload | |
; - java.lang.Integer::getChars@57 (line 338) | |
0x00002aaaab11c1f2: cmp %ebx,%ecx | |
0x00002aaaab11c1f4: jae 0x00002aaaab11c035 | |
;; B53: # B35 B54 <- B52 Freq: 1.09859e-26 | |
0x00002aaaab11c1fa: mov 0x18(%rsp),%rcx | |
0x00002aaaab11c1ff: mov %r10w,0xe(%rcx,%r13,2) ;*castore | |
; - java.lang.Integer::getChars@58 (line 338) | |
0x00002aaaab11c205: movzwl 0x10(%r11,%rbp,2),%ecx ;*caload | |
; - java.lang.Integer::getChars@70 (line 339) | |
0x00002aaaab11c20b: add $0xfffffffffffffffe,%r13d | |
;*iinc | |
; - java.lang.Integer::getChars@60 (line 339) | |
0x00002aaaab11c20f: cmp $0xffffffffffffffff,%r13d | |
0x00002aaaab11c213: jle 0x00002aaaab11c05f | |
;; B54: # B49 <- B53 Freq: 1.09859e-26 | |
0x00002aaaab11c219: mov %edi,%ebp | |
0x00002aaaab11c21b: jmpq 0x00002aaaab11c18c ;*iload_0 | |
; - java.lang.Integer::getChars@23 (line 334) | |
;; B55: # B59 B56 <- B43 Freq: 1.08419e-20 | |
0x00002aaaab11c220: mov %edi,%r10d | |
0x00002aaaab11c223: sar $0x1f,%r10d | |
0x00002aaaab11c227: movslq %edi,%rcx | |
0x00002aaaab11c22a: imul $0x51eb851f,%rcx,%rcx | |
0x00002aaaab11c231: sar $0x25,%rcx | |
0x00002aaaab11c235: mov %ecx,%ebp | |
0x00002aaaab11c237: sub %r10d,%ebp ;*idiv | |
; - java.lang.Integer::getChars@26 (line 334) | |
0x00002aaaab11c23a: mov %ebp,%r10d | |
0x00002aaaab11c23d: shl $0x2,%r10d | |
0x00002aaaab11c241: mov %ebp,%ecx | |
0x00002aaaab11c243: shl $0x5,%ecx | |
0x00002aaaab11c246: mov %ebp,%esi | |
0x00002aaaab11c248: shl $0x6,%esi | |
0x00002aaaab11c24b: add %ecx,%esi | |
0x00002aaaab11c24d: add %r10d,%esi | |
0x00002aaaab11c250: sub %esi,%edi ;*isub | |
; - java.lang.Integer::getChars@41 (line 336) | |
0x00002aaaab11c252: cmp $0x64,%edi | |
0x00002aaaab11c255: jae 0x00002aaaab11c296 ;*caload | |
; - java.lang.Integer::getChars@57 (line 338) | |
;; B56: # B48 B57 <- B55 Freq: 1.08419e-20 | |
0x00002aaaab11c257: movzwl 0x10(%r8,%rdi,2),%r10d | |
0x00002aaaab11c25d: mov 0x18(%rsp),%rcx | |
0x00002aaaab11c262: mov %r10w,0xe(%rcx,%rax,2) ;*castore | |
; - java.lang.Integer::getChars@58 (line 338) | |
0x00002aaaab11c268: movzwl 0x10(%r11,%rdi,2),%ecx ;*caload | |
; - java.lang.Integer::getChars@70 (line 339) | |
0x00002aaaab11c26e: mov %eax,%r13d | |
0x00002aaaab11c271: add $0xfffffffffffffffe,%r13d | |
0x00002aaaab11c275: test %r13d,%r13d | |
0x00002aaaab11c278: jle 0x00002aaaab11c181 | |
;; B57: # B43 <- B56 Freq: 1.08419e-20 | |
0x00002aaaab11c27e: mov %r13d,%eax | |
0x00002aaaab11c281: mov %ebp,%edi | |
0x00002aaaab11c283: jmpq 0x00002aaaab11c138 | |
;; B58: # B35 <- B48 Freq: 2.30392e-26 | |
0x00002aaaab11c288: mov %eax,%r13d | |
0x00002aaaab11c28b: add $0xfffffffffffffffe,%r13d | |
;*iinc | |
; - java.lang.Integer::getChars@60 (line 339) | |
0x00002aaaab11c28f: mov %ebp,%edi | |
0x00002aaaab11c291: jmpq 0x00002aaaab11c05f | |
;; B59: # B46 <- B55 Freq: 1.09859e-26 | |
0x00002aaaab11c296: dec %eax ;*iinc | |
; - java.lang.Integer::getChars@47 (line 338) | |
0x00002aaaab11c298: jmpq 0x00002aaaab11c167 | |
;; B60: # N1 <- B5 Freq: 1.01328e-06 | |
0x00002aaaab11c29d: mov $0xfffffff6,%esi | |
0x00002aaaab11c2a2: mov %ecx,%ebp | |
0x00002aaaab11c2a4: mov %r8d,(%rsp) | |
0x00002aaaab11c2a8: nop | |
0x00002aaaab11c2a9: nop | |
0x00002aaaab11c2aa: nop | |
0x00002aaaab11c2ab: callq 0x00002aaaab0f3fa0 ; OopMap{off=1392} | |
;*castore | |
; - java.lang.Integer::getChars@106 (line 347) | |
; {runtime_call} | |
0x00002aaaab11c2b0: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11c2ba: rex.WB callq *%r10 ;*castore | |
; - java.lang.Integer::getChars@106 (line 347) | |
;; B61: # N1 <- B21 Freq: 4.83169e-13 | |
0x00002aaaab11c2bd: mov %esi,%ebp | |
0x00002aaaab11c2bf: mov %edx,0x8(%rsp) | |
0x00002aaaab11c2c3: mov %r14d,0xc(%rsp) | |
0x00002aaaab11c2c8: mov $0xffffff86,%esi | |
0x00002aaaab11c2cd: nop | |
0x00002aaaab11c2ce: nop | |
0x00002aaaab11c2cf: callq 0x00002aaaab0f3fa0 ; OopMap{[24]=Oop off=1428} | |
;*iload_0 | |
; - java.lang.Integer::getChars@23 (line 334) | |
; {runtime_call} | |
0x00002aaaab11c2d4: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11c2de: rex.WB callq *%r10 ;*iinc | |
; - java.lang.Integer::getChars@60 (line 339) | |
0x00002aaaab11c2e1: hlt | |
0x00002aaaab11c2e2: hlt | |
0x00002aaaab11c2e3: hlt | |
0x00002aaaab11c2e4: hlt | |
0x00002aaaab11c2e5: hlt | |
0x00002aaaab11c2e6: hlt | |
0x00002aaaab11c2e7: hlt | |
0x00002aaaab11c2e8: hlt | |
0x00002aaaab11c2e9: hlt | |
0x00002aaaab11c2ea: hlt | |
0x00002aaaab11c2eb: hlt | |
0x00002aaaab11c2ec: hlt | |
0x00002aaaab11c2ed: hlt | |
0x00002aaaab11c2ee: hlt | |
0x00002aaaab11c2ef: hlt | |
0x00002aaaab11c2f0: hlt | |
0x00002aaaab11c2f1: hlt | |
0x00002aaaab11c2f2: hlt | |
0x00002aaaab11c2f3: hlt | |
0x00002aaaab11c2f4: hlt | |
0x00002aaaab11c2f5: hlt | |
0x00002aaaab11c2f6: hlt | |
0x00002aaaab11c2f7: hlt | |
0x00002aaaab11c2f8: hlt | |
0x00002aaaab11c2f9: hlt | |
0x00002aaaab11c2fa: hlt | |
0x00002aaaab11c2fb: hlt | |
0x00002aaaab11c2fc: hlt | |
0x00002aaaab11c2fd: hlt | |
0x00002aaaab11c2fe: hlt | |
0x00002aaaab11c2ff: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x00002aaaab11c300: jmpq 0x00002aaaab101c20 ; {no_reloc} | |
[Deopt Handler Code] | |
0x00002aaaab11c305: callq 0x00002aaaab11c30a | |
0x00002aaaab11c30a: subq $0x5,(%rsp) | |
0x00002aaaab11c30f: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab11c314: int3 | |
0x00002aaaab11c315: int3 | |
0x00002aaaab11c316: int3 | |
0x00002aaaab11c317: int3 | |
567 5 java.lang.String::length (5 bytes) | |
Decoding compiled method 0x00002aaaab11cdd0: | |
Code: | |
[Entry Point] | |
[Constants] | |
# {method} 'length' '()I' in 'java/lang/String' | |
# [sp+0x20] (sp of caller) | |
;; N16: # B1 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11cf00: mov 0x8(%rsi),%r10d | |
0x00002aaaab11cf04: cmp %r10,%rax | |
0x00002aaaab11cf07: jne 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab11cf0d: nop | |
0x00002aaaab11cf0e: nop | |
0x00002aaaab11cf0f: nop | |
[Verified Entry Point] | |
;; B1: # N16 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11cf10: push %rbp | |
0x00002aaaab11cf11: sub $0x10,%rsp | |
0x00002aaaab11cf15: nop ;*synchronization entry | |
; - java.lang.String::length@-1 (line 651) | |
0x00002aaaab11cf16: mov 0x14(%rsi),%eax ;*getfield count | |
; - java.lang.String::length@1 (line 651) | |
0x00002aaaab11cf19: add $0x10,%rsp | |
0x00002aaaab11cf1d: pop %rbp | |
0x00002aaaab11cf1e: test %eax,-0x424f24(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab11cf24: retq | |
0x00002aaaab11cf25: hlt | |
0x00002aaaab11cf26: hlt | |
0x00002aaaab11cf27: hlt | |
0x00002aaaab11cf28: hlt | |
0x00002aaaab11cf29: hlt | |
0x00002aaaab11cf2a: hlt | |
0x00002aaaab11cf2b: hlt | |
0x00002aaaab11cf2c: hlt | |
0x00002aaaab11cf2d: hlt | |
0x00002aaaab11cf2e: hlt | |
0x00002aaaab11cf2f: hlt | |
0x00002aaaab11cf30: hlt | |
0x00002aaaab11cf31: hlt | |
0x00002aaaab11cf32: hlt | |
0x00002aaaab11cf33: hlt | |
0x00002aaaab11cf34: hlt | |
0x00002aaaab11cf35: hlt | |
0x00002aaaab11cf36: hlt | |
0x00002aaaab11cf37: hlt | |
0x00002aaaab11cf38: hlt | |
0x00002aaaab11cf39: hlt | |
0x00002aaaab11cf3a: hlt | |
0x00002aaaab11cf3b: hlt | |
0x00002aaaab11cf3c: hlt | |
0x00002aaaab11cf3d: hlt | |
0x00002aaaab11cf3e: hlt | |
0x00002aaaab11cf3f: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x00002aaaab11cf40: jmpq 0x00002aaaab101c20 ; {no_reloc} | |
[Deopt Handler Code] | |
0x00002aaaab11cf45: callq 0x00002aaaab11cf4a | |
0x00002aaaab11cf4a: subq $0x5,(%rsp) | |
0x00002aaaab11cf4f: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab11cf54: int3 | |
0x00002aaaab11cf55: int3 | |
0x00002aaaab11cf56: int3 | |
0x00002aaaab11cf57: int3 | |
573 6 java.lang.StringBuilder::append (8 bytes) | |
573 7 java.lang.AbstractStringBuilder::append (40 bytes) | |
Warning: TraceDependencies results may be inflated by VerifyDependencies | |
Decoding compiled method 0x00002aaaab11b750: | |
Code: | |
[Entry Point] | |
[Constants] | |
# {method} 'append' '(C)Ljava/lang/AbstractStringBuilder;' in 'java/lang/AbstractStringBuilder' | |
# this: rsi:rsi = 'java/lang/AbstractStringBuilder' | |
# parm0: rdx = char | |
# [sp+0x30] (sp of caller) | |
;; N120: # B1 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11b8a0: mov 0x8(%rsi),%r10d | |
0x00002aaaab11b8a4: cmp %r10,%rax | |
0x00002aaaab11b8a7: jne 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab11b8ad: nop | |
0x00002aaaab11b8ae: nop | |
0x00002aaaab11b8af: nop | |
[Verified Entry Point] | |
;; B1: # B10 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11b8b0: mov %eax,-0x8000(%rsp) | |
0x00002aaaab11b8b7: push %rbp | |
0x00002aaaab11b8b8: sub $0x20,%rsp ;*synchronization entry | |
; - java.lang.AbstractStringBuilder::append@-1 (line 570) | |
0x00002aaaab11b8bc: mov %edx,0xc(%rsp) | |
0x00002aaaab11b8c0: mov %rsi,(%rsp) | |
0x00002aaaab11b8c4: mov 0x10(%rsi),%r8d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@9 (line 571) | |
0x00002aaaab11b8c8: mov 0xc(%r8),%r10d ; implicit exception: dispatches to 0x00002aaaab11b959 | |
;; B2: # B7 B3 <- B1 Freq: 0.999999 | |
0x00002aaaab11b8cc: mov 0xc(%rsi),%ebp ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@1 (line 570) | |
0x00002aaaab11b8cf: mov %ebp,%edx | |
0x00002aaaab11b8d1: inc %edx ;*iadd | |
; - java.lang.AbstractStringBuilder::append@5 (line 570) | |
0x00002aaaab11b8d3: cmp %r10d,%edx | |
0x00002aaaab11b8d6: jg 0x00002aaaab11b91d ;*if_icmple | |
; - java.lang.AbstractStringBuilder::append@13 (line 571) | |
;; B3: # B4 <- B2 Freq: 0.999999 | |
0x00002aaaab11b8d8: mov %edx,0xc(%rsi) ;*putfield count | |
; - java.lang.AbstractStringBuilder::append@33 (line 573) | |
;; B4: # B6 B5 <- B8 B3 Freq: 0.999999 | |
0x00002aaaab11b8db: mov 0xc(%r8),%r10d | |
0x00002aaaab11b8df: cmp %r10d,%ebp | |
0x00002aaaab11b8e2: jae 0x00002aaaab11b8ff | |
;; B5: # N120 <- B4 Freq: 0.999998 | |
0x00002aaaab11b8e4: mov 0xc(%rsp),%r11d | |
0x00002aaaab11b8e9: mov %r11w,0x10(%r8,%rbp,2) ;*synchronization entry | |
; - java.lang.AbstractStringBuilder::append@-1 (line 570) | |
0x00002aaaab11b8ef: mov (%rsp),%rax | |
0x00002aaaab11b8f3: add $0x20,%rsp | |
0x00002aaaab11b8f7: pop %rbp | |
0x00002aaaab11b8f8: test %eax,-0x4238fe(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab11b8fe: retq | |
;; B6: # N120 <- B4 Freq: 1.01328e-06 | |
0x00002aaaab11b8ff: mov $0xffffffe4,%esi | |
0x00002aaaab11b904: mov %r8d,0x8(%rsp) | |
0x00002aaaab11b909: nop | |
0x00002aaaab11b90a: nop | |
0x00002aaaab11b90b: callq 0x00002aaaab0f3fa0 ; OopMap{[0]=Oop [8]=NarrowOop off=112} | |
;*castore | |
; - java.lang.AbstractStringBuilder::append@37 (line 573) | |
; {runtime_call} | |
0x00002aaaab11b910: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11b91a: rex.WB callq *%r10 ;*castore | |
; - java.lang.AbstractStringBuilder::append@37 (line 573) | |
;; B7: # B11 B8 <- B2 Freq: 4.76837e-07 | |
0x00002aaaab11b91d: mov %rsi,%rbp | |
0x00002aaaab11b920: nop | |
0x00002aaaab11b921: nop | |
0x00002aaaab11b922: nop | |
0x00002aaaab11b923: callq 0x00002aaaab0f2b20 ; OopMap{rbp=Oop [0]=Oop off=136} | |
;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@18 (line 572) | |
; {optimized virtual_call} | |
;; B8: # B4 B9 <- B7 Freq: 4.76827e-07 | |
0x00002aaaab11b928: mov 0xc(%rbp),%ebp ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@27 (line 573) | |
0x00002aaaab11b92b: mov (%rsp),%r10 | |
0x00002aaaab11b92f: mov 0x10(%r10),%r8d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@22 (line 573) | |
0x00002aaaab11b933: mov %ebp,%r11d | |
0x00002aaaab11b936: inc %r11d | |
0x00002aaaab11b939: mov %r11d,0xc(%r10) ;*putfield count | |
; - java.lang.AbstractStringBuilder::append@33 (line 573) | |
0x00002aaaab11b93d: test %r8d,%r8d | |
0x00002aaaab11b940: jne 0x00002aaaab11b8db | |
;; B9: # N120 <- B8 Freq: 4.83159e-13 | |
0x00002aaaab11b942: mov $0xfffffff6,%esi | |
0x00002aaaab11b947: callq 0x00002aaaab0f3fa0 ; OopMap{off=172} | |
;*castore | |
; - java.lang.AbstractStringBuilder::append@37 (line 573) | |
; {runtime_call} | |
0x00002aaaab11b94c: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11b956: rex.WB callq *%r10 ;*castore | |
; - java.lang.AbstractStringBuilder::append@37 (line 573) | |
;; B10: # N120 <- B1 Freq: 1.01328e-06 | |
0x00002aaaab11b959: mov $0xfffffff6,%esi | |
0x00002aaaab11b95e: nop | |
0x00002aaaab11b95f: callq 0x00002aaaab0f3fa0 ; OopMap{off=196} | |
;*arraylength | |
; - java.lang.AbstractStringBuilder::append@12 (line 571) | |
; {runtime_call} | |
0x00002aaaab11b964: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11b96e: rex.WB callq *%r10 ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@18 (line 572) | |
;; B11: # N120 <- B7 Freq: 4.76837e-12 | |
0x00002aaaab11b971: mov %rax,%rsi | |
0x00002aaaab11b974: add $0x20,%rsp | |
0x00002aaaab11b978: pop %rbp | |
0x00002aaaab11b979: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab11b97e: hlt | |
0x00002aaaab11b97f: hlt | |
[Stub Code] | |
0x00002aaaab11b980: mov $0x0,%rbx ; {no_reloc} | |
0x00002aaaab11b98a: jmpq 0x00002aaaab11b98a ; {runtime_call} | |
[Exception Handler] | |
0x00002aaaab11b98f: jmpq 0x00002aaaab101c20 ; {runtime_call} | |
[Deopt Handler Code] | |
0x00002aaaab11b994: callq 0x00002aaaab11b999 | |
0x00002aaaab11b999: subq $0x5,(%rsp) | |
0x00002aaaab11b99e: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab11b9a3: int3 | |
0x00002aaaab11b9a4: int3 | |
0x00002aaaab11b9a5: int3 | |
0x00002aaaab11b9a6: int3 | |
0x00002aaaab11b9a7: int3 | |
Decoding compiled method 0x00002aaaab11b1d0: | |
Code: | |
[Entry Point] | |
[Constants] | |
# {method} 'append' '(C)Ljava/lang/StringBuilder;' in 'java/lang/StringBuilder' | |
# this: rsi:rsi = 'java/lang/StringBuilder' | |
# parm0: rdx = char | |
# [sp+0x40] (sp of caller) | |
;; N122: # B1 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11b320: mov 0x8(%rsi),%r10d | |
0x00002aaaab11b324: cmp %r10,%rax | |
0x00002aaaab11b327: jne 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab11b32d: nop | |
0x00002aaaab11b32e: nop | |
0x00002aaaab11b32f: nop | |
[Verified Entry Point] | |
;; B1: # B10 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11b330: mov %eax,-0x8000(%rsp) | |
0x00002aaaab11b337: push %rbp | |
0x00002aaaab11b338: sub $0x30,%rsp ;*synchronization entry | |
; - java.lang.StringBuilder::append@-1 (line 203) | |
0x00002aaaab11b33c: mov %edx,0x14(%rsp) | |
0x00002aaaab11b340: mov %rsi,(%rsp) | |
0x00002aaaab11b344: mov 0x10(%rsi),%r8d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@9 (line 571) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
0x00002aaaab11b348: mov 0xc(%r8),%r10d ; implicit exception: dispatches to 0x00002aaaab11b3d9 | |
;; B2: # B7 B3 <- B1 Freq: 0.999999 | |
0x00002aaaab11b34c: mov 0xc(%rsi),%ebp ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@1 (line 570) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
0x00002aaaab11b34f: mov %ebp,%edx | |
0x00002aaaab11b351: inc %edx ;*iadd | |
; - java.lang.AbstractStringBuilder::append@5 (line 570) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
0x00002aaaab11b353: cmp %r10d,%edx | |
0x00002aaaab11b356: jg 0x00002aaaab11b39d ;*if_icmple | |
; - java.lang.AbstractStringBuilder::append@13 (line 571) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
;; B3: # B4 <- B2 Freq: 0.999999 | |
0x00002aaaab11b358: mov %edx,0xc(%rsi) ;*putfield count | |
; - java.lang.AbstractStringBuilder::append@33 (line 573) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
;; B4: # B6 B5 <- B8 B3 Freq: 0.999999 | |
0x00002aaaab11b35b: mov 0xc(%r8),%r10d | |
0x00002aaaab11b35f: cmp %r10d,%ebp | |
0x00002aaaab11b362: jae 0x00002aaaab11b37f | |
;; B5: # N122 <- B4 Freq: 0.999998 | |
0x00002aaaab11b364: mov 0x14(%rsp),%r11d | |
0x00002aaaab11b369: mov %r11w,0x10(%r8,%rbp,2) ;*synchronization entry | |
; - java.lang.StringBuilder::append@-1 (line 203) | |
0x00002aaaab11b36f: mov (%rsp),%rax | |
0x00002aaaab11b373: add $0x30,%rsp | |
0x00002aaaab11b377: pop %rbp | |
0x00002aaaab11b378: test %eax,-0x42337e(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab11b37e: retq | |
;; B6: # N122 <- B4 Freq: 1.01328e-06 | |
0x00002aaaab11b37f: mov $0xffffffe4,%esi | |
0x00002aaaab11b384: mov %r8d,0x10(%rsp) | |
0x00002aaaab11b389: nop | |
0x00002aaaab11b38a: nop | |
0x00002aaaab11b38b: callq 0x00002aaaab0f3fa0 ; OopMap{[0]=Oop [16]=NarrowOop off=112} | |
;*castore | |
; - java.lang.AbstractStringBuilder::append@37 (line 573) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
; {runtime_call} | |
0x00002aaaab11b390: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11b39a: rex.WB callq *%r10 ;*castore | |
; - java.lang.AbstractStringBuilder::append@37 (line 573) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
;; B7: # B11 B8 <- B2 Freq: 4.76837e-07 | |
0x00002aaaab11b39d: mov %rsi,%rbp | |
0x00002aaaab11b3a0: nop | |
0x00002aaaab11b3a1: nop | |
0x00002aaaab11b3a2: nop | |
0x00002aaaab11b3a3: callq 0x00002aaaab0f2b20 ; OopMap{rbp=Oop [0]=Oop off=136} | |
;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@18 (line 572) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
; {optimized virtual_call} | |
;; B8: # B4 B9 <- B7 Freq: 4.76827e-07 | |
0x00002aaaab11b3a8: mov 0xc(%rbp),%ebp ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@27 (line 573) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
0x00002aaaab11b3ab: mov (%rsp),%r10 | |
0x00002aaaab11b3af: mov 0x10(%r10),%r8d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@22 (line 573) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
0x00002aaaab11b3b3: mov %ebp,%r11d | |
0x00002aaaab11b3b6: inc %r11d | |
0x00002aaaab11b3b9: mov %r11d,0xc(%r10) ;*putfield count | |
; - java.lang.AbstractStringBuilder::append@33 (line 573) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
0x00002aaaab11b3bd: test %r8d,%r8d | |
0x00002aaaab11b3c0: jne 0x00002aaaab11b35b | |
;; B9: # N122 <- B8 Freq: 4.83159e-13 | |
0x00002aaaab11b3c2: mov $0xfffffff6,%esi | |
0x00002aaaab11b3c7: callq 0x00002aaaab0f3fa0 ; OopMap{off=172} | |
;*castore | |
; - java.lang.AbstractStringBuilder::append@37 (line 573) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
; {runtime_call} | |
0x00002aaaab11b3cc: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11b3d6: rex.WB callq *%r10 ;*castore | |
; - java.lang.AbstractStringBuilder::append@37 (line 573) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
;; B10: # N122 <- B1 Freq: 1.01328e-06 | |
0x00002aaaab11b3d9: mov $0xfffffff6,%esi | |
0x00002aaaab11b3de: nop | |
0x00002aaaab11b3df: callq 0x00002aaaab0f3fa0 ; OopMap{off=196} | |
;*arraylength | |
; - java.lang.AbstractStringBuilder::append@12 (line 571) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
; {runtime_call} | |
0x00002aaaab11b3e4: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11b3ee: rex.WB callq *%r10 ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@18 (line 572) | |
; - java.lang.StringBuilder::append@2 (line 203) | |
;; B11: # N122 <- B7 Freq: 4.76837e-12 | |
0x00002aaaab11b3f1: mov %rax,%rsi | |
0x00002aaaab11b3f4: add $0x30,%rsp | |
0x00002aaaab11b3f8: pop %rbp | |
0x00002aaaab11b3f9: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab11b3fe: hlt | |
0x00002aaaab11b3ff: hlt | |
[Stub Code] | |
0x00002aaaab11b400: mov $0x0,%rbx ; {no_reloc} | |
0x00002aaaab11b40a: jmpq 0x00002aaaab11b40a ; {runtime_call} | |
[Exception Handler] | |
0x00002aaaab11b40f: jmpq 0x00002aaaab101c20 ; {runtime_call} | |
[Deopt Handler Code] | |
0x00002aaaab11b414: callq 0x00002aaaab11b419 | |
0x00002aaaab11b419: subq $0x5,(%rsp) | |
0x00002aaaab11b41e: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab11b423: int3 | |
0x00002aaaab11b424: int3 | |
0x00002aaaab11b425: int3 | |
0x00002aaaab11b426: int3 | |
0x00002aaaab11b427: int3 | |
592 8 java.lang.Math::min (11 bytes) | |
Decoding compiled method 0x00002aaaab11cbd0: | |
Code: | |
[Entry Point] | |
[Verified Entry Point] | |
[Constants] | |
# {method} 'min' '(II)I' in 'java/lang/Math' | |
# parm0: rsi = int | |
# parm1: rdx = int | |
# [sp+0x20] (sp of caller) | |
;; N1: # B1 <- B3 Freq: 1 | |
;; B1: # B4 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11cd00: push %rbp | |
0x00002aaaab11cd01: sub $0x10,%rsp | |
0x00002aaaab11cd05: nop ;*synchronization entry | |
; - java.lang.Math::min@-1 (line 863) | |
0x00002aaaab11cd06: cmp %edx,%esi | |
0x00002aaaab11cd08: jle 0x00002aaaab11cd18 ;*if_icmpgt | |
; - java.lang.Math::min@2 (line 863) | |
;; B2: # B3 <- B1 Freq: 1 | |
0x00002aaaab11cd0a: mov %edx,%eax ;*ireturn | |
; - java.lang.Math::min@10 (line 863) | |
;; B3: # N1 <- B2 B4 Freq: 1 | |
0x00002aaaab11cd0c: add $0x10,%rsp | |
0x00002aaaab11cd10: pop %rbp | |
0x00002aaaab11cd11: test %eax,-0x424d17(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab11cd17: retq | |
;; B4: # B3 <- B1 Freq: 4.76837e-07 | |
0x00002aaaab11cd18: mov %esi,%eax | |
0x00002aaaab11cd1a: jmp 0x00002aaaab11cd0c | |
0x00002aaaab11cd1c: hlt | |
0x00002aaaab11cd1d: hlt | |
0x00002aaaab11cd1e: hlt | |
0x00002aaaab11cd1f: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x00002aaaab11cd20: jmpq 0x00002aaaab101c20 ; {no_reloc} | |
[Deopt Handler Code] | |
0x00002aaaab11cd25: callq 0x00002aaaab11cd2a | |
0x00002aaaab11cd2a: subq $0x5,(%rsp) | |
0x00002aaaab11cd2f: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab11cd34: int3 | |
0x00002aaaab11cd35: int3 | |
0x00002aaaab11cd36: int3 | |
0x00002aaaab11cd37: int3 | |
596 9 java.lang.String::getChars (66 bytes) | |
596 10 java.lang.AbstractStringBuilder::append (60 bytes) | |
Decoding compiled method 0x00002aaaab118bd0: | |
Code: | |
[Entry Point] | |
[Constants] | |
# {method} 'getChars' '(II[CI)V' in 'java/lang/String' | |
# this: rsi:rsi = 'java/lang/String' | |
# parm0: rdx = int | |
# parm1: rcx = int | |
# parm2: r8:r8 = '[C' | |
# parm3: r9 = int | |
# [sp+0x30] (sp of caller) | |
;; N201: # B1 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab118d20: mov 0x8(%rsi),%r10d | |
0x00002aaaab118d24: cmp %r10,%rax | |
0x00002aaaab118d27: jne 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab118d2d: nop | |
0x00002aaaab118d2e: nop | |
0x00002aaaab118d2f: nop | |
[Verified Entry Point] | |
;; B1: # B16 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab118d30: mov %eax,-0x8000(%rsp) | |
0x00002aaaab118d37: push %rbp | |
0x00002aaaab118d38: sub $0x20,%rsp ;*synchronization entry | |
; - java.lang.String::getChars@-1 (line 845) | |
0x00002aaaab118d3c: test %edx,%edx | |
0x00002aaaab118d3e: jl 0x00002aaaab118dce ;*ifge | |
; - java.lang.String::getChars@1 (line 845) | |
;; B2: # B17 B3 <- B1 Freq: 1 | |
0x00002aaaab118d44: mov 0x14(%rsi),%r10d | |
0x00002aaaab118d48: cmp %r10d,%ecx | |
0x00002aaaab118d4b: jg 0x00002aaaab118de9 ;*if_icmple | |
; - java.lang.String::getChars@18 (line 848) | |
;; B3: # B18 B4 <- B2 Freq: 0.999999 | |
0x00002aaaab118d51: cmp %ecx,%edx | |
0x00002aaaab118d53: jg 0x00002aaaab118e05 ;*if_icmple | |
; - java.lang.String::getChars@32 (line 851) | |
;; B4: # B19 B5 <- B3 Freq: 0.999999 | |
0x00002aaaab118d59: mov %ecx,%r10d | |
0x00002aaaab118d5c: sub %edx,%r10d ;*isub | |
; - java.lang.String::getChars@61 (line 854) | |
0x00002aaaab118d5f: mov 0xc(%rsi),%ebp ;*getfield value | |
; - java.lang.String::getChars@47 (line 854) | |
0x00002aaaab118d62: mov 0x10(%rsi),%r11d ;*getfield offset | |
; - java.lang.String::getChars@51 (line 854) | |
0x00002aaaab118d66: add %r11d,%edx ;*iadd | |
; - java.lang.String::getChars@55 (line 854) | |
0x00002aaaab118d69: mov 0xc(%rbp),%eax ; implicit exception: dispatches to 0x00002aaaab118e21 | |
;; B5: # B20 B6 <- B4 Freq: 0.999998 | |
0x00002aaaab118d6c: mov 0xc(%r8),%ebx ; implicit exception: dispatches to 0x00002aaaab118e49 | |
;; B6: # B14 B7 <- B5 Freq: 0.999997 | |
0x00002aaaab118d70: mov %rbp,%rsi ;*getfield value | |
; - java.lang.String::getChars@47 (line 854) | |
0x00002aaaab118d73: test %edx,%edx | |
0x00002aaaab118d75: jl 0x00002aaaab118dbd | |
;; B7: # B14 B8 <- B6 Freq: 0.999996 | |
0x00002aaaab118d77: test %r9d,%r9d | |
0x00002aaaab118d7a: jl 0x00002aaaab118dbd | |
;; B8: # B14 B9 <- B7 Freq: 0.999995 | |
0x00002aaaab118d7c: add %r11d,%ecx | |
0x00002aaaab118d7f: cmp %ecx,%eax | |
0x00002aaaab118d81: jb 0x00002aaaab118dbd | |
;; B9: # B14 B10 <- B8 Freq: 0.999994 | |
0x00002aaaab118d83: mov %r9d,%ecx | |
0x00002aaaab118d86: add %r10d,%ecx | |
0x00002aaaab118d89: cmp %ecx,%ebx | |
0x00002aaaab118d8b: jb 0x00002aaaab118dbd | |
;; B10: # B13 B11 <- B9 Freq: 0.999992 | |
0x00002aaaab118d8d: test %r10d,%r10d | |
0x00002aaaab118d90: jle 0x00002aaaab118db8 | |
;; B11: # B12 <- B10 Freq: 0.999991 | |
0x00002aaaab118d92: lea 0x10(%rbp,%rdx,2),%rdi | |
0x00002aaaab118d97: lea 0x10(%r8,%r9,2),%rsi | |
0x00002aaaab118d9c: movslq %r10d,%rdx | |
0x00002aaaab118d9f: mov $0x2aaaab0fce80,%r10 | |
0x00002aaaab118da9: callq *%r10 | |
;; B12: # N201 <- B11 B13 B15 Freq: 0.999996 | |
0x00002aaaab118dac: add $0x20,%rsp | |
0x00002aaaab118db0: pop %rbp | |
0x00002aaaab118db1: test %eax,-0x420db7(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab118db7: retq | |
;; B13: # B12 B14 <- B10 Freq: 9.99992e-07 | |
0x00002aaaab118db8: test %r10d,%r10d | |
0x00002aaaab118dbb: jge 0x00002aaaab118dac | |
;; B14: # B21 B15 <- B6 B7 B8 B9 B13 Freq: 3.99998e-06 | |
0x00002aaaab118dbd: mov %r8,%rcx | |
0x00002aaaab118dc0: mov %r9d,%r8d | |
0x00002aaaab118dc3: mov %r10d,%r9d | |
0x00002aaaab118dc6: nop | |
0x00002aaaab118dc7: callq 0x00002aaaab11b020 ; OopMap{off=172} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; {runtime_call} | |
;; B15: # B12 <- B14 Freq: 3.9999e-06 | |
0x00002aaaab118dcc: jmp 0x00002aaaab118dac | |
;; B16: # N201 <- B1 Freq: 4.76837e-07 | |
0x00002aaaab118dce: mov $0xce,%esi | |
0x00002aaaab118dd3: mov %edx,%ebp | |
0x00002aaaab118dd5: nop | |
0x00002aaaab118dd6: nop | |
0x00002aaaab118dd7: callq 0x00002aaaab0f3fa0 ; OopMap{off=188} | |
;*new ; - java.lang.String::getChars@4 (line 846) | |
; {runtime_call} | |
0x00002aaaab118ddc: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab118de6: rex.WB callq *%r10 ;*new ; - java.lang.String::getChars@4 (line 846) | |
;; B17: # N201 <- B2 Freq: 4.76837e-07 | |
0x00002aaaab118de9: mov $0xce,%esi | |
0x00002aaaab118dee: mov %ecx,%ebp | |
0x00002aaaab118df0: nop | |
0x00002aaaab118df1: nop | |
0x00002aaaab118df2: nop | |
0x00002aaaab118df3: callq 0x00002aaaab0f3fa0 ; OopMap{off=216} | |
;*new ; - java.lang.String::getChars@21 (line 849) | |
; {runtime_call} | |
0x00002aaaab118df8: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab118e02: rex.WB callq *%r10 ;*new ; - java.lang.String::getChars@21 (line 849) | |
;; B18: # N201 <- B3 Freq: 4.76837e-07 | |
0x00002aaaab118e05: mov $0xce,%esi | |
0x00002aaaab118e0a: mov %edx,%ebp | |
0x00002aaaab118e0c: mov %ecx,(%rsp) | |
0x00002aaaab118e0f: callq 0x00002aaaab0f3fa0 ; OopMap{off=244} | |
;*new ; - java.lang.String::getChars@35 (line 852) | |
; {runtime_call} | |
0x00002aaaab118e14: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab118e1e: rex.WB callq *%r10 ;*new ; - java.lang.String::getChars@35 (line 852) | |
;; B19: # N201 <- B4 Freq: 1.01328e-06 | |
0x00002aaaab118e21: mov $0xfffffff6,%esi | |
0x00002aaaab118e26: mov %edx,%ebp | |
0x00002aaaab118e28: mov %r8,(%rsp) | |
0x00002aaaab118e2c: mov %r9d,0x8(%rsp) | |
0x00002aaaab118e31: mov %r10d,0xc(%rsp) | |
0x00002aaaab118e36: nop | |
0x00002aaaab118e37: callq 0x00002aaaab0f3fa0 ; OopMap{[0]=Oop off=284} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; {runtime_call} | |
0x00002aaaab118e3c: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab118e46: rex.WB callq *%r10 | |
;; B20: # N201 <- B5 Freq: 1.01328e-06 | |
0x00002aaaab118e49: mov $0xfffffff6,%esi | |
0x00002aaaab118e4e: mov %edx,(%rsp) | |
0x00002aaaab118e51: mov %r9d,0x4(%rsp) | |
0x00002aaaab118e56: mov %r10d,0x8(%rsp) | |
0x00002aaaab118e5b: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=NarrowOop off=320} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; {runtime_call} | |
0x00002aaaab118e60: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab118e6a: rex.WB callq *%r10 ;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
;; B21: # N201 <- B14 Freq: 3.99998e-11 | |
0x00002aaaab118e6d: mov %rax,%rsi | |
0x00002aaaab118e70: add $0x20,%rsp | |
0x00002aaaab118e74: pop %rbp | |
0x00002aaaab118e75: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab118e7a: hlt | |
0x00002aaaab118e7b: hlt | |
0x00002aaaab118e7c: hlt | |
0x00002aaaab118e7d: hlt | |
0x00002aaaab118e7e: hlt | |
0x00002aaaab118e7f: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x00002aaaab118e80: jmpq 0x00002aaaab101c20 ; {no_reloc} | |
[Deopt Handler Code] | |
0x00002aaaab118e85: callq 0x00002aaaab118e8a | |
0x00002aaaab118e8a: subq $0x5,(%rsp) | |
0x00002aaaab118e8f: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab118e94: int3 | |
0x00002aaaab118e95: int3 | |
0x00002aaaab118e96: int3 | |
0x00002aaaab118e97: int3 | |
Decoding compiled method 0x00002aaaab118450: | |
Code: | |
[Entry Point] | |
[Constants] | |
# {method} 'append' '(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;' in 'java/lang/AbstractStringBuilder' | |
# this: rsi:rsi = 'java/lang/AbstractStringBuilder' | |
# parm0: rdx:rdx = 'java/lang/String' | |
# [sp+0x40] (sp of caller) | |
;; N291: # B1 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab1185c0: mov 0x8(%rsi),%r10d | |
0x00002aaaab1185c4: cmp %r10,%rax | |
0x00002aaaab1185c7: jne 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab1185cd: nop | |
0x00002aaaab1185ce: nop | |
0x00002aaaab1185cf: nop | |
[Verified Entry Point] | |
;; B1: # B27 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab1185d0: mov %eax,-0x8000(%rsp) | |
0x00002aaaab1185d7: push %rbp | |
0x00002aaaab1185d8: sub $0x30,%rsp ;*synchronization entry | |
; - java.lang.AbstractStringBuilder::append@-1 (line 385) | |
0x00002aaaab1185dc: mov %rsi,(%rsp) | |
0x00002aaaab1185e0: mov %rdx,%rbp | |
0x00002aaaab1185e3: mov 0x14(%rdx),%r10d ;*getfield count | |
; - java.lang.String::length@1 (line 651) | |
; - java.lang.AbstractStringBuilder::append@8 (line 386) | |
; implicit exception: dispatches to 0x00002aaaab11876d | |
;; B2: # B17 B3 <- B1 Freq: 1 | |
0x00002aaaab1185e7: test %r10d,%r10d | |
0x00002aaaab1185ea: je 0x00002aaaab118681 ;*ifne | |
; - java.lang.AbstractStringBuilder::append@13 (line 387) | |
;; B3: # B24 B4 <- B2 Freq: 0.999999 | |
0x00002aaaab1185f0: mov 0x10(%rsi),%r9d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@27 (line 389) | |
0x00002aaaab1185f4: mov 0xc(%r9),%r8d ; implicit exception: dispatches to 0x00002aaaab118709 | |
;; B4: # B21 B5 <- B3 Freq: 0.999998 | |
0x00002aaaab1185f8: mov 0xc(%rsi),%r11d ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@19 (line 388) | |
0x00002aaaab1185fc: mov %r10d,%ecx | |
0x00002aaaab1185ff: add %r11d,%ecx ;*iadd | |
; - java.lang.AbstractStringBuilder::append@23 (line 388) | |
0x00002aaaab118602: mov %ecx,0xc(%rsp) | |
0x00002aaaab118606: cmp %r8d,%ecx | |
0x00002aaaab118609: jg 0x00002aaaab1186c1 ;*if_icmple | |
; - java.lang.AbstractStringBuilder::append@31 (line 389) | |
;; B5: # B6 <- B4 Freq: 0.999998 | |
0x00002aaaab11860f: mov %r10d,%ecx ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@47 (line 391) | |
;; B6: # B20 B7 <- B22 B5 Freq: 0.999998 | |
0x00002aaaab118612: cmp %ecx,%r10d | |
0x00002aaaab118615: jg 0x00002aaaab1186a2 ;*if_icmple | |
; - java.lang.String::getChars@18 (line 848) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
;; B7: # B23 B8 <- B6 Freq: 0.999998 | |
0x00002aaaab11861b: test %r10d,%r10d | |
0x00002aaaab11861e: jl 0x00002aaaab1186e9 ;*if_icmple | |
; - java.lang.String::getChars@32 (line 851) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
;; B8: # B25 B9 <- B7 Freq: 0.999997 | |
0x00002aaaab118624: mov 0x10(%rbp),%edx ;*getfield offset | |
; - java.lang.String::getChars@51 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
0x00002aaaab118627: mov 0xc(%rbp),%ebp | |
0x00002aaaab11862a: mov 0xc(%rbp),%r8d ; implicit exception: dispatches to 0x00002aaaab118721 | |
;; B9: # B26 B10 <- B8 Freq: 0.999996 | |
0x00002aaaab11862e: mov 0xc(%r9),%edi ; implicit exception: dispatches to 0x00002aaaab118749 | |
;; B10: # B18 B11 <- B9 Freq: 0.999995 | |
0x00002aaaab118632: mov %rbp,%rsi ;*getfield value | |
; - java.lang.String::getChars@47 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
0x00002aaaab118635: mov %r9,%rcx ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@43 (line 391) | |
0x00002aaaab118638: test %edx,%edx | |
0x00002aaaab11863a: jl 0x00002aaaab118691 | |
;; B11: # B18 B12 <- B10 Freq: 0.999994 | |
0x00002aaaab11863c: test %r11d,%r11d | |
0x00002aaaab11863f: jl 0x00002aaaab118691 | |
;; B12: # B18 B13 <- B11 Freq: 0.999993 | |
0x00002aaaab118641: mov %r10d,%ebx | |
0x00002aaaab118644: add %edx,%ebx | |
0x00002aaaab118646: cmp %ebx,%r8d | |
0x00002aaaab118649: jb 0x00002aaaab118691 | |
;; B13: # B18 B14 <- B12 Freq: 0.999992 | |
0x00002aaaab11864b: mov %r11d,%ebx | |
0x00002aaaab11864e: add %r10d,%ebx | |
0x00002aaaab118651: cmp %ebx,%edi | |
0x00002aaaab118653: jb 0x00002aaaab118691 | |
;; B14: # B16 B15 <- B13 Freq: 0.999991 | |
0x00002aaaab118655: test %r10d,%r10d | |
0x00002aaaab118658: jle 0x00002aaaab118674 | |
;; B15: # B16 <- B14 Freq: 0.99999 | |
0x00002aaaab11865a: lea 0x10(%rbp,%rdx,2),%rdi | |
0x00002aaaab11865f: lea 0x10(%r9,%r11,2),%rsi | |
0x00002aaaab118664: movslq %r10d,%rdx | |
0x00002aaaab118667: mov $0x2aaaab0fce80,%r10 | |
0x00002aaaab118671: callq *%r10 ;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
;; B16: # B17 <- B15 B14 B19 Freq: 0.999995 | |
0x00002aaaab118674: mov (%rsp),%r10 | |
0x00002aaaab118678: mov 0xc(%rsp),%r11d | |
0x00002aaaab11867d: mov %r11d,0xc(%r10) ;*synchronization entry | |
; - java.lang.AbstractStringBuilder::append@-1 (line 385) | |
;; B17: # N291 <- B2 B16 Freq: 0.999995 | |
0x00002aaaab118681: mov (%rsp),%rax | |
0x00002aaaab118685: add $0x30,%rsp | |
0x00002aaaab118689: pop %rbp | |
0x00002aaaab11868a: test %eax,-0x420690(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab118690: retq | |
;; B18: # B29 B19 <- B10 B11 B12 B13 Freq: 3.99997e-06 | |
0x00002aaaab118691: mov %r11d,%r8d | |
0x00002aaaab118694: mov %r10d,%r9d | |
0x00002aaaab118697: mov (%rsp),%rbp | |
0x00002aaaab11869b: callq 0x00002aaaab11b020 ; OopMap{rbp=Oop [0]=Oop off=224} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; {runtime_call} | |
;; B19: # B16 <- B18 Freq: 3.99989e-06 | |
0x00002aaaab1186a0: jmp 0x00002aaaab118674 | |
;; B20: # N291 <- B6 Freq: 4.76836e-07 | |
0x00002aaaab1186a2: mov $0xce,%esi | |
0x00002aaaab1186a7: mov (%rsp),%rbp | |
0x00002aaaab1186ab: mov %r10d,(%rsp) | |
0x00002aaaab1186af: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop off=244} | |
;*new ; - java.lang.String::getChars@21 (line 849) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; {runtime_call} | |
0x00002aaaab1186b4: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab1186be: rex.WB callq *%r10 ;*new ; - java.lang.String::getChars@21 (line 849) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
;; B21: # B28 B22 <- B4 Freq: 4.76836e-07 | |
0x00002aaaab1186c1: mov %ecx,%edx | |
0x00002aaaab1186c3: mov %r10d,0x10(%rsp) | |
0x00002aaaab1186c8: nop | |
0x00002aaaab1186c9: nop | |
0x00002aaaab1186ca: nop | |
0x00002aaaab1186cb: callq 0x00002aaaab0f2b20 ; OopMap{rbp=Oop [0]=Oop off=272} | |
;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
; {optimized virtual_call} | |
;; B22: # B6 <- B21 Freq: 4.76827e-07 | |
0x00002aaaab1186d0: mov (%rsp),%r10 | |
0x00002aaaab1186d4: mov 0xc(%r10),%r11d ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@47 (line 391) | |
0x00002aaaab1186d8: mov 0x14(%rbp),%ecx ;*getfield count | |
; - java.lang.String::getChars@15 (line 848) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
0x00002aaaab1186db: mov 0x10(%r10),%r9d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@43 (line 391) | |
0x00002aaaab1186df: mov 0x10(%rsp),%r10d | |
0x00002aaaab1186e4: jmpq 0x00002aaaab118612 | |
;; B23: # N291 <- B7 Freq: 4.76836e-07 | |
0x00002aaaab1186e9: mov $0xce,%esi | |
0x00002aaaab1186ee: mov (%rsp),%rbp | |
0x00002aaaab1186f2: mov %r10d,(%rsp) | |
0x00002aaaab1186f6: nop | |
0x00002aaaab1186f7: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop off=316} | |
;*new ; - java.lang.String::getChars@35 (line 852) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; {runtime_call} | |
0x00002aaaab1186fc: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab118706: rex.WB callq *%r10 ;*new ; - java.lang.String::getChars@35 (line 852) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
;; B24: # N291 <- B3 Freq: 1.01328e-06 | |
0x00002aaaab118709: mov $0xfffffff6,%esi | |
0x00002aaaab11870e: nop | |
0x00002aaaab11870f: callq 0x00002aaaab0f3fa0 ; OopMap{off=340} | |
;*arraylength | |
; - java.lang.AbstractStringBuilder::append@30 (line 389) | |
; {runtime_call} | |
0x00002aaaab118714: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11871e: rex.WB callq *%r10 ;*arraylength | |
; - java.lang.AbstractStringBuilder::append@30 (line 389) | |
;; B25: # N291 <- B8 Freq: 1.01328e-06 | |
0x00002aaaab118721: mov $0xfffffff6,%esi | |
0x00002aaaab118726: mov %r10d,%ebp | |
0x00002aaaab118729: mov %edx,(%rsp) | |
0x00002aaaab11872c: mov %r9d,0x4(%rsp) | |
0x00002aaaab118731: mov %r11d,0x8(%rsp) | |
0x00002aaaab118736: nop | |
0x00002aaaab118737: callq 0x00002aaaab0f3fa0 ; OopMap{[4]=NarrowOop off=380} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; {runtime_call} | |
0x00002aaaab11873c: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab118746: rex.WB callq *%r10 | |
;; B26: # N291 <- B9 Freq: 1.01327e-06 | |
0x00002aaaab118749: mov $0xfffffff6,%esi | |
0x00002aaaab11874e: mov %r10d,(%rsp) | |
0x00002aaaab118752: mov %edx,0x4(%rsp) | |
0x00002aaaab118756: mov %r11d,0x8(%rsp) | |
0x00002aaaab11875b: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=NarrowOop off=416} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; {runtime_call} | |
0x00002aaaab118760: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11876a: rex.WB callq *%r10 ;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
;; B27: # N291 <- B1 Freq: 4.76837e-07 | |
0x00002aaaab11876d: mov $0xffffffad,%esi | |
0x00002aaaab118772: nop | |
0x00002aaaab118773: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop [0]=Oop off=440} | |
;*ifnonnull | |
; - java.lang.AbstractStringBuilder::append@1 (line 385) | |
; {runtime_call} | |
0x00002aaaab118778: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab118782: rex.WB callq *%r10 ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
;; B28: # B30 <- B21 Freq: 4.76836e-12 | |
0x00002aaaab118785: mov %rax,%rsi | |
0x00002aaaab118788: jmp 0x00002aaaab11878d ;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
;; B29: # B30 <- B18 Freq: 3.99997e-11 | |
0x00002aaaab11878a: mov %rax,%rsi ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
;; B30: # N291 <- B28 B29 Freq: 4.47681e-11 | |
0x00002aaaab11878d: add $0x30,%rsp | |
0x00002aaaab118791: pop %rbp | |
0x00002aaaab118792: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab118797: hlt | |
0x00002aaaab118798: hlt | |
0x00002aaaab118799: hlt | |
0x00002aaaab11879a: hlt | |
0x00002aaaab11879b: hlt | |
0x00002aaaab11879c: hlt | |
0x00002aaaab11879d: hlt | |
0x00002aaaab11879e: hlt | |
0x00002aaaab11879f: hlt | |
[Stub Code] | |
0x00002aaaab1187a0: mov $0x0,%rbx ; {no_reloc} | |
0x00002aaaab1187aa: jmpq 0x00002aaaab1187aa ; {runtime_call} | |
[Exception Handler] | |
0x00002aaaab1187af: jmpq 0x00002aaaab101c20 ; {runtime_call} | |
[Deopt Handler Code] | |
0x00002aaaab1187b4: callq 0x00002aaaab1187b9 | |
0x00002aaaab1187b9: subq $0x5,(%rsp) | |
0x00002aaaab1187be: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab1187c3: int3 | |
0x00002aaaab1187c4: int3 | |
0x00002aaaab1187c5: int3 | |
0x00002aaaab1187c6: int3 | |
0x00002aaaab1187c7: int3 | |
622 11 java.lang.StringBuilder::append (8 bytes) | |
Decoding compiled method 0x00002aaaab11f610: | |
Code: | |
[Entry Point] | |
[Constants] | |
# {method} 'append' '(Ljava/lang/String;)Ljava/lang/StringBuilder;' in 'java/lang/StringBuilder' | |
# this: rsi:rsi = 'java/lang/StringBuilder' | |
# parm0: rdx:rdx = 'java/lang/String' | |
# [sp+0x40] (sp of caller) | |
;; N296: # B1 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11f780: mov 0x8(%rsi),%r10d | |
0x00002aaaab11f784: cmp %r10,%rax | |
0x00002aaaab11f787: jne 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab11f78d: nop | |
0x00002aaaab11f78e: nop | |
0x00002aaaab11f78f: nop | |
[Verified Entry Point] | |
;; B1: # B27 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11f790: mov %eax,-0x8000(%rsp) | |
0x00002aaaab11f797: push %rbp | |
0x00002aaaab11f798: sub $0x30,%rsp ;*synchronization entry | |
; - java.lang.StringBuilder::append@-1 (line 119) | |
0x00002aaaab11f79c: mov %rsi,(%rsp) | |
0x00002aaaab11f7a0: mov %rdx,%rbp | |
0x00002aaaab11f7a3: mov 0x14(%rdx),%r10d ;*getfield count | |
; - java.lang.String::length@1 (line 651) | |
; - java.lang.AbstractStringBuilder::append@8 (line 386) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; implicit exception: dispatches to 0x00002aaaab11f931 | |
;; B2: # B17 B3 <- B1 Freq: 1 | |
0x00002aaaab11f7a7: test %r10d,%r10d | |
0x00002aaaab11f7aa: je 0x00002aaaab11f841 ;*ifne | |
; - java.lang.AbstractStringBuilder::append@13 (line 387) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
;; B3: # B24 B4 <- B2 Freq: 0.999999 | |
0x00002aaaab11f7b0: mov 0x10(%rsi),%r9d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@27 (line 389) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
0x00002aaaab11f7b4: mov 0xc(%r9),%r8d ; implicit exception: dispatches to 0x00002aaaab11f8cd | |
;; B4: # B21 B5 <- B3 Freq: 0.999998 | |
0x00002aaaab11f7b8: mov 0xc(%rsi),%r11d ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@19 (line 388) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
0x00002aaaab11f7bc: mov %r10d,%ecx | |
0x00002aaaab11f7bf: add %r11d,%ecx ;*iadd | |
; - java.lang.AbstractStringBuilder::append@23 (line 388) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
0x00002aaaab11f7c2: mov %ecx,0x14(%rsp) | |
0x00002aaaab11f7c6: cmp %r8d,%ecx | |
0x00002aaaab11f7c9: jg 0x00002aaaab11f885 ;*if_icmple | |
; - java.lang.AbstractStringBuilder::append@31 (line 389) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
;; B5: # B6 <- B4 Freq: 0.999998 | |
0x00002aaaab11f7cf: mov %r10d,%ecx ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@47 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
;; B6: # B20 B7 <- B22 B5 Freq: 0.999998 | |
0x00002aaaab11f7d2: cmp %ecx,%r10d | |
0x00002aaaab11f7d5: jg 0x00002aaaab11f862 ;*if_icmple | |
; - java.lang.String::getChars@18 (line 848) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
;; B7: # B23 B8 <- B6 Freq: 0.999998 | |
0x00002aaaab11f7db: test %r10d,%r10d | |
0x00002aaaab11f7de: jl 0x00002aaaab11f8ad ;*if_icmple | |
; - java.lang.String::getChars@32 (line 851) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
;; B8: # B25 B9 <- B7 Freq: 0.999997 | |
0x00002aaaab11f7e4: mov 0x10(%rbp),%edx ;*getfield offset | |
; - java.lang.String::getChars@51 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
0x00002aaaab11f7e7: mov 0xc(%rbp),%ebp | |
0x00002aaaab11f7ea: mov 0xc(%rbp),%r8d ; implicit exception: dispatches to 0x00002aaaab11f8e5 | |
;; B9: # B26 B10 <- B8 Freq: 0.999996 | |
0x00002aaaab11f7ee: mov 0xc(%r9),%edi ; implicit exception: dispatches to 0x00002aaaab11f90d | |
;; B10: # B18 B11 <- B9 Freq: 0.999995 | |
0x00002aaaab11f7f2: mov %rbp,%rsi ;*getfield value | |
; - java.lang.String::getChars@47 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
0x00002aaaab11f7f5: mov %r9,%rcx ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@43 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
0x00002aaaab11f7f8: test %edx,%edx | |
0x00002aaaab11f7fa: jl 0x00002aaaab11f851 | |
;; B11: # B18 B12 <- B10 Freq: 0.999994 | |
0x00002aaaab11f7fc: test %r11d,%r11d | |
0x00002aaaab11f7ff: jl 0x00002aaaab11f851 | |
;; B12: # B18 B13 <- B11 Freq: 0.999993 | |
0x00002aaaab11f801: mov %r10d,%ebx | |
0x00002aaaab11f804: add %edx,%ebx | |
0x00002aaaab11f806: cmp %ebx,%r8d | |
0x00002aaaab11f809: jb 0x00002aaaab11f851 | |
;; B13: # B18 B14 <- B12 Freq: 0.999992 | |
0x00002aaaab11f80b: mov %r11d,%ebx | |
0x00002aaaab11f80e: add %r10d,%ebx | |
0x00002aaaab11f811: cmp %ebx,%edi | |
0x00002aaaab11f813: jb 0x00002aaaab11f851 | |
;; B14: # B16 B15 <- B13 Freq: 0.999991 | |
0x00002aaaab11f815: test %r10d,%r10d | |
0x00002aaaab11f818: jle 0x00002aaaab11f834 | |
;; B15: # B16 <- B14 Freq: 0.99999 | |
0x00002aaaab11f81a: lea 0x10(%rbp,%rdx,2),%rdi | |
0x00002aaaab11f81f: lea 0x10(%r9,%r11,2),%rsi | |
0x00002aaaab11f824: movslq %r10d,%rdx | |
0x00002aaaab11f827: mov $0x2aaaab0fce80,%r10 | |
0x00002aaaab11f831: callq *%r10 ;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
;; B16: # B17 <- B15 B14 B19 Freq: 0.999995 | |
0x00002aaaab11f834: mov (%rsp),%r10 | |
0x00002aaaab11f838: mov 0x14(%rsp),%r11d | |
0x00002aaaab11f83d: mov %r11d,0xc(%r10) ;*synchronization entry | |
; - java.lang.StringBuilder::append@-1 (line 119) | |
;; B17: # N296 <- B2 B16 Freq: 0.999995 | |
0x00002aaaab11f841: mov (%rsp),%rax | |
0x00002aaaab11f845: add $0x30,%rsp | |
0x00002aaaab11f849: pop %rbp | |
0x00002aaaab11f84a: test %eax,-0x427850(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab11f850: retq | |
;; B18: # B29 B19 <- B10 B11 B12 B13 Freq: 3.99997e-06 | |
0x00002aaaab11f851: mov %r11d,%r8d | |
0x00002aaaab11f854: mov %r10d,%r9d | |
0x00002aaaab11f857: mov (%rsp),%rbp | |
0x00002aaaab11f85b: callq 0x00002aaaab11b020 ; OopMap{rbp=Oop [0]=Oop off=224} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; {runtime_call} | |
;; B19: # B16 <- B18 Freq: 3.99989e-06 | |
0x00002aaaab11f860: jmp 0x00002aaaab11f834 | |
;; B20: # N296 <- B6 Freq: 4.76836e-07 | |
0x00002aaaab11f862: mov $0xce,%esi | |
0x00002aaaab11f867: mov (%rsp),%rbp | |
0x00002aaaab11f86b: mov %r10d,0x8(%rsp) | |
0x00002aaaab11f870: nop | |
0x00002aaaab11f871: nop | |
0x00002aaaab11f872: nop | |
0x00002aaaab11f873: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop off=248} | |
;*new ; - java.lang.String::getChars@21 (line 849) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; {runtime_call} | |
0x00002aaaab11f878: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11f882: rex.WB callq *%r10 ;*new ; - java.lang.String::getChars@21 (line 849) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
;; B21: # B28 B22 <- B4 Freq: 4.76836e-07 | |
0x00002aaaab11f885: mov %ecx,%edx | |
0x00002aaaab11f887: mov %r10d,0x18(%rsp) | |
0x00002aaaab11f88c: nop | |
0x00002aaaab11f88d: nop | |
0x00002aaaab11f88e: nop | |
0x00002aaaab11f88f: callq 0x00002aaaab0f2b20 ; OopMap{rbp=Oop [0]=Oop off=276} | |
;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; {optimized virtual_call} | |
;; B22: # B6 <- B21 Freq: 4.76827e-07 | |
0x00002aaaab11f894: mov (%rsp),%r10 | |
0x00002aaaab11f898: mov 0xc(%r10),%r11d ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@47 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
0x00002aaaab11f89c: mov 0x14(%rbp),%ecx ;*getfield count | |
; - java.lang.String::getChars@15 (line 848) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
0x00002aaaab11f89f: mov 0x10(%r10),%r9d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@43 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
0x00002aaaab11f8a3: mov 0x18(%rsp),%r10d | |
0x00002aaaab11f8a8: jmpq 0x00002aaaab11f7d2 | |
;; B23: # N296 <- B7 Freq: 4.76836e-07 | |
0x00002aaaab11f8ad: mov $0xce,%esi | |
0x00002aaaab11f8b2: ### Excluding compile: static Test::main | |
mov (%rsp),%rbp | |
0x00002aaaab11f8b6: mov %r10d,0x8(%rsp) | |
0x00002aaaab11f8bb: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop off=320} | |
;*new ; - java.lang.String::getChars@35 (line 852) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; {runtime_call} | |
0x00002aaaab11f8c0: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11f8ca: rex.WB callq *%r10 ;*new ; - java.lang.String::getChars@35 (line 852) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
;; B24: # N296 <- B3 Freq: 1.01328e-06 | |
0x00002aaaab11f8cd: mov $0xfffffff6,%esi | |
0x00002aaaab11f8d2: nop | |
0x00002aaaab11f8d3: callq 0x00002aaaab0f3fa0 ; OopMap{off=344} | |
;*arraylength | |
; - java.lang.AbstractStringBuilder::append@30 (line 389) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; {runtime_call} | |
0x00002aaaab11f8d8: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11f8e2: rex.WB callq *%r10 ;*arraylength | |
; - java.lang.AbstractStringBuilder::append@30 (line 389) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
;; B25: # N296 <- B8 Freq: 1.01328e-06 | |
0x00002aaaab11f8e5: mov $0xfffffff6,%esi | |
0x00002aaaab11f8ea: mov %r10d,%ebp | |
0x00002aaaab11f8ed: mov %edx,(%rsp) | |
0x00002aaaab11f8f0: mov %r9d,0x4(%rsp) | |
0x00002aaaab11f8f5: mov %r11d,0x8(%rsp) | |
0x00002aaaab11f8fa: nop | |
0x00002aaaab11f8fb: callq 0x00002aaaab0f3fa0 ; OopMap{[4]=NarrowOop off=384} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; {runtime_call} | |
0x00002aaaab11f900: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11f90a: rex.WB callq *%r10 | |
;; B26: # N296 <- B9 Freq: 1.01327e-06 | |
0x00002aaaab11f90d: mov $0xfffffff6,%esi | |
0x00002aaaab11f912: mov %r10d,(%rsp) | |
0x00002aaaab11f916: mov %edx,0x4(%rsp) | |
0x00002aaaab11f91a: mov %r11d,0x8(%rsp) | |
0x00002aaaab11f91f: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=NarrowOop off=420} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; {runtime_call} | |
0x00002aaaab11f924: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11f92e: rex.WB callq *%r10 ;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
;; B27: # N296 <- B1 Freq: 4.76837e-07 | |
0x00002aaaab11f931: mov $0xffffffad,%esi | |
0x00002aaaab11f936: nop | |
0x00002aaaab11f937: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop [0]=Oop off=444} | |
;*ifnonnull | |
; - java.lang.AbstractStringBuilder::append@1 (line 385) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; {runtime_call} | |
0x00002aaaab11f93c: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11f946: rex.WB callq *%r10 ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
;; B28: # B30 <- B21 Freq: 4.76836e-12 | |
0x00002aaaab11f949: mov %rax,%rsi | |
0x00002aaaab11f94c: jmp 0x00002aaaab11f951 ;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
;; B29: # B30 <- B18 Freq: 3.99997e-11 | |
0x00002aaaab11f94e: mov %rax,%rsi ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
;; B30: # N296 <- B28 B29 Freq: 4.47681e-11 | |
0x00002aaaab11f951: add $0x30,%rsp | |
0x00002aaaab11f955: pop %rbp | |
0x00002aaaab11f956: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab11f95b: hlt | |
0x00002aaaab11f95c: hlt | |
0x00002aaaab11f95d: hlt | |
0x00002aaaab11f95e: hlt | |
0x00002aaaab11f95f: hlt | |
[Stub Code] | |
0x00002aaaab11f960: mov $0x0,%rbx ; {no_reloc} | |
0x00002aaaab11f96a: jmpq 0x00002aaaab11f96a ; {runtime_call} | |
[Exception Handler] | |
0x00002aaaab11f96f: jmpq 0x00002aaaab101c20 ; {runtime_call} | |
[Deopt Handler Code] | |
0x00002aaaab11f974: callq 0x00002aaaab11f979 | |
0x00002aaaab11f979: subq $0x5,(%rsp) | |
0x00002aaaab11f97e: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab11f983: int3 | |
0x00002aaaab11f984: int3 | |
0x00002aaaab11f985: int3 | |
0x00002aaaab11f986: int3 | |
0x00002aaaab11f987: int3 | |
647 12 java.lang.String::<init> (72 bytes) | |
Decoding compiled method 0x00002aaaab11d2d0: | |
Code: | |
[Entry Point] | |
[Constants] | |
# {method} '<init>' '([CII)V' in 'java/lang/String' | |
# this: rsi:rsi = 'java/lang/String' | |
# parm0: rdx:rdx = '[C' | |
# parm1: rcx = int | |
# parm2: r8 = int | |
# [sp+0x40] (sp of caller) | |
;; N339: # B1 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11d440: mov 0x8(%rsi),%r10d | |
0x00002aaaab11d444: cmp %r10,%rax | |
0x00002aaaab11d447: jne 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab11d44d: nop | |
0x00002aaaab11d44e: nop | |
0x00002aaaab11d44f: nop | |
[Verified Entry Point] | |
;; B1: # B21 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11d450: mov %eax,-0x8000(%rsp) | |
0x00002aaaab11d457: push %rbp | |
0x00002aaaab11d458: sub $0x30,%rsp ;*synchronization entry | |
; - java.lang.String::<init>@-1 (line 202) | |
0x00002aaaab11d45c: mov %rsi,(%rsp) | |
0x00002aaaab11d460: mov %ecx,0x10(%rsp) | |
0x00002aaaab11d464: test %ecx,%ecx | |
0x00002aaaab11d466: jl 0x00002aaaab11d750 ;*ifge | |
; - java.lang.String::<init>@5 (line 203) | |
;; B2: # B22 B3 <- B1 Freq: 1 | |
0x00002aaaab11d46c: mov %r8d,%ebp | |
0x00002aaaab11d46f: test %r8d,%r8d | |
0x00002aaaab11d472: jl 0x00002aaaab11d769 ;*ifge | |
; - java.lang.String::<init>@18 (line 206) | |
;; B3: # B24 B4 <- B2 Freq: 0.999999 | |
0x00002aaaab11d478: mov %rdx,0x8(%rsp) | |
0x00002aaaab11d47d: mov 0xc(%rdx),%r11d ;*arraylength | |
; - java.lang.String::<init>@32 (line 210) | |
; implicit exception: dispatches to 0x00002aaaab11d799 | |
;; B4: # B23 B5 <- B3 Freq: 0.999998 | |
0x00002aaaab11d481: mov %r11d,%r10d | |
0x00002aaaab11d484: sub %r8d,%r10d | |
0x00002aaaab11d487: cmp %r10d,%ecx | |
0x00002aaaab11d48a: jg 0x00002aaaab11d781 ;*if_icmple | |
; - java.lang.String::<init>@35 (line 210) | |
;; B5: # B15 B6 <- B4 Freq: 0.999998 | |
0x00002aaaab11d490: mov %ebp,0x14(%rsi) ;*putfield count | |
; - java.lang.String::<init>@56 (line 214) | |
0x00002aaaab11d493: mov %r12d,0x10(%rsi) ;*putfield offset | |
; - java.lang.String::<init>@51 (line 213) | |
0x00002aaaab11d497: movslq %ebp,%r10 | |
0x00002aaaab11d49a: shl %r10 | |
0x00002aaaab11d49d: add $0x17,%r10 | |
0x00002aaaab11d4a1: mov %r10,0x18(%rsp) | |
0x00002aaaab11d4a6: cmp $0x80000,%ebp | |
0x00002aaaab11d4ac: ja 0x00002aaaab11d6e9 | |
;; B6: # B15 B7 <- B5 Freq: 0.999997 | |
0x00002aaaab11d4b2: and $0xfffffffffffffff8,%r10 | |
0x00002aaaab11d4b6: mov 0x70(%r15),%rbx | |
0x00002aaaab11d4ba: mov %rbx,%r8 | |
0x00002aaaab11d4bd: add %r10,%r8 | |
0x00002aaaab11d4c0: cmp 0x80(%r15),%r8 | |
0x00002aaaab11d4c7: jae 0x00002aaaab11d6e9 | |
;; B7: # B8 <- B6 Freq: 0.999897 | |
0x00002aaaab11d4cd: mov %r8,0x70(%r15) | |
0x00002aaaab11d4d1: prefetchnta 0x100(%r8) | |
0x00002aaaab11d4d9: movq $0x1,(%rbx) | |
0x00002aaaab11d4e0: prefetchnta 0x140(%r8) | |
0x00002aaaab11d4e8: movl $0xc4200608,0x8(%rbx) ; {oop({type array char})} | |
0x00002aaaab11d4ef: mov %ebp,0xc(%rbx) | |
0x00002aaaab11d4f2: prefetchnta 0x180(%r8) ;*newarray | |
; - java.util.Arrays::copyOfRange@40 (line 3209) | |
; - java.lang.String::<init>@65 (line 215) | |
;; B8: # B17 B9 <- B16 B7 Freq: 0.999998 | |
0x00002aaaab11d4fa: mov %r11d,%r10d | |
0x00002aaaab11d4fd: sub 0x10(%rsp),%r10d ;*isub | |
; - java.util.Arrays::copyOfRange@52 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
0x00002aaaab11d502: mov %rbx,%r8 | |
0x00002aaaab11d505: add $0x10,%r8 ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
0x00002aaaab11d509: cmp %ebp,%r10d | |
0x00002aaaab11d50c: mov %ebp,%r9d | |
0x00002aaaab11d50f: cmovl %r10d,%r9d ;*invokestatic min | |
; - java.util.Arrays::copyOfRange@54 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
0x00002aaaab11d513: mov 0x10(%rsp),%r10d | |
0x00002aaaab11d518: add %r9d,%r10d | |
0x00002aaaab11d51b: mov 0x18(%rsp),%rsi | |
0x00002aaaab11d520: shr $0x3,%rsi | |
0x00002aaaab11d524: mov %rsi,%rcx | |
0x00002aaaab11d527: add $0xfffffffffffffffe,%rcx | |
0x00002aaaab11d52b: cmp %r10d,%r11d | |
0x00002aaaab11d52e: jb 0x00002aaaab11d70d | |
;; B9: # B17 B10 <- B8 Freq: 0.999997 | |
0x00002aaaab11d534: cmp %r9d,%ebp | |
0x00002aaaab11d537: jb 0x00002aaaab11d70d | |
;; B10: # B19 B11 <- B9 Freq: 0.999996 | |
0x00002aaaab11d53d: test %r9d,%r9d | |
0x00002aaaab11d540: jle 0x00002aaaab11d73e | |
;; B11: # B14 B12 <- B10 Freq: 0.999995 | |
0x00002aaaab11d546: movslq %r9d,%rdx | |
0x00002aaaab11d549: cmp %ebp,%r9d | |
0x00002aaaab11d54c: jl 0x00002aaaab11d6bb | |
;; B12: # B13 <- B11 B14 Freq: 0.999995 | |
0x00002aaaab11d552: mov 0x8(%rsp),%r10 | |
0x00002aaaab11d557: mov 0x10(%rsp),%r9d | |
0x00002aaaab11d55c: lea 0x10(%r10,%r9,2),%rdi | |
0x00002aaaab11d561: mov %r8,%rsi | |
0x00002aaaab11d564: mov $0x2aaaab0fce80,%r10 | |
0x00002aaaab11d56e: callq *%r10 ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
;; B13: # N339 <- B12 B20 B18 Freq: 0.999998 | |
0x00002aaaab11d571: push %r10 | |
0x00002aaaab11d573: mov $0x2ae74dadc700,%r10 ; {external_word} | |
0x00002aaaab11d57d: cmp (%r10),%r12 | |
0x00002aaaab11d580: je 0x00002aaaab11d605 | |
0x00002aaaab11d586: mov %rsp,-0x28(%rsp) | |
0x00002aaaab11d58b: sub $0x80,%rsp | |
0x00002aaaab11d592: mov %rax,0x78(%rsp) | |
0x00002aaaab11d597: mov %rcx,0x70(%rsp) | |
0x00002aaaab11d59c: mov %rdx,0x68(%rsp) | |
0x00002aaaab11d5a1: mov %rbx,0x60(%rsp) | |
0x00002aaaab11d5a6: mov %rbp,0x50(%rsp) | |
0x00002aaaab11d5ab: mov %rsi,0x48(%rsp) | |
0x00002aaaab11d5b0: mov %rdi,0x40(%rsp) | |
0x00002aaaab11d5b5: mov %r8,0x38(%rsp) | |
0x00002aaaab11d5ba: mov %r9,0x30(%rsp) | |
0x00002aaaab11d5bf: mov %r10,0x28(%rsp) | |
0x00002aaaab11d5c4: mov %r11,0x20(%rsp) | |
0x00002aaaab11d5c9: mov %r12,0x18(%rsp) | |
0x00002aaaab11d5ce: mov %r13,0x10(%rsp) | |
0x00002aaaab11d5d3: mov %r14,0x8(%rsp) | |
0x00002aaaab11d5d8: mov %r15,(%rsp) | |
0x00002aaaab11d5dc: mov $0x2ae74d5c7980,%rdi ; {external_word} | |
0x00002aaaab11d5e6: mov $0x2aaaab11d586,%rsi ; {internal_word} | |
0x00002aaaab11d5f0: mov %rsp,%rdx | |
0x00002aaaab11d5f3: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab11d5f7: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab11d601: rex.WB callq *%r10 | |
0x00002aaaab11d604: hlt | |
0x00002aaaab11d605: pop %r10 | |
0x00002aaaab11d607: test %rbx,%rbx | |
0x00002aaaab11d60a: jne 0x00002aaaab11d68f | |
0x00002aaaab11d610: mov %rsp,-0x28(%rsp) | |
0x00002aaaab11d615: sub $0x80,%rsp | |
0x00002aaaab11d61c: mov %rax,0x78(%rsp) | |
0x00002aaaab11d621: mov %rcx,0x70(%rsp) | |
0x00002aaaab11d626: mov %rdx,0x68(%rsp) | |
0x00002aaaab11d62b: mov %rbx,0x60(%rsp) | |
0x00002aaaab11d630: mov %rbp,0x50(%rsp) | |
0x00002aaaab11d635: mov %rsi,0x48(%rsp) | |
0x00002aaaab11d63a: mov %rdi,0x40(%rsp) | |
0x00002aaaab11d63f: mov %r8,0x38(%rsp) | |
0x00002aaaab11d644: mov %r9,0x30(%rsp) | |
0x00002aaaab11d649: mov %r10,0x28(%rsp) | |
0x00002aaaab11d64e: mov %r11,0x20(%rsp) | |
0x00002aaaab11d653: mov %r12,0x18(%rsp) | |
0x00002aaaab11d658: mov %r13,0x10(%rsp) | |
0x00002aaaab11d65d: mov %r14,0x8(%rsp) | |
0x00002aaaab11d662: mov %r15,(%rsp) | |
0x00002aaaab11d666: mov $0x2ae74d5c79c0,%rdi ; {external_word} | |
0x00002aaaab11d670: mov $0x2aaaab11d610,%rsi ; {internal_word} | |
0x00002aaaab11d67a: mov %rsp,%rdx | |
0x00002aaaab11d67d: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab11d681: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab11d68b: rex.WB callq *%r10 | |
0x00002aaaab11d68e: hlt | |
0x00002aaaab11d68f: mov %rbx,%r10 | |
0x00002aaaab11d692: mov (%rsp),%r11 | |
0x00002aaaab11d696: mov %r10d,0xc(%r11) | |
0x00002aaaab11d69a: mov %r11,%r10 | |
0x00002aaaab11d69d: shr $0x9,%r10 | |
0x00002aaaab11d6a1: mov $0x2aaaadac4000,%r11 | |
0x00002aaaab11d6ab: mov %r12b,(%r11,%r10,1) ;*new | |
; - java.lang.String::<init>@21 (line 207) | |
0x00002aaaab11d6af: add $0x30,%rsp | |
0x00002aaaab11d6b3: pop %rbp | |
0x00002aaaab11d6b4: test %eax,-0x4256ba(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab11d6ba: retq | |
;; B14: # B12 <- B11 Freq: 0.000999995 | |
0x00002aaaab11d6bb: mov %rdx,%r10 | |
0x00002aaaab11d6be: shl %r10 | |
0x00002aaaab11d6c1: add $0x10,%r10 | |
0x00002aaaab11d6c5: mov %r10,%r11 | |
0x00002aaaab11d6c8: and $0xfffffffffffffff9,%r11 | |
0x00002aaaab11d6cc: mov %rbx,%rdi | |
0x00002aaaab11d6cf: add %r11,%rdi | |
0x00002aaaab11d6d2: shr $0x3,%r10 | |
0x00002aaaab11d6d6: mov %rsi,%r11 | |
0x00002aaaab11d6d9: sub %r10,%r11 | |
0x00002aaaab11d6dc: mov %r11,%rcx | |
0x00002aaaab11d6df: xor %eax,%eax | |
0x00002aaaab11d6e1: rep stos %rax,%es:(%rdi) ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
0x00002aaaab11d6e4: jmpq 0x00002aaaab11d552 | |
;; B15: # B26 B16 <- B5 B6 Freq: 0.00010103 | |
0x00002aaaab11d6e9: mov %r11d,0x14(%rsp) ;*ifge | |
; - java.util.Arrays::copyOfRange@5 (line 3207) | |
; - java.lang.String::<init>@65 (line 215) | |
0x00002aaaab11d6ee: mov $0xc4200608,%rsi ; {oop({type array char})} | |
0x00002aaaab11d6f8: mov %ebp,%edx | |
0x00002aaaab11d6fa: nop | |
0x00002aaaab11d6fb: callq 0x00002aaaab118220 ; OopMap{[0]=Oop [8]=Oop off=704} | |
;*newarray | |
; - java.util.Arrays::copyOfRange@40 (line 3209) | |
; - java.lang.String::<init>@65 (line 215) | |
; {runtime_call} | |
;; B16: # B8 <- B15 Freq: 0.000101028 | |
0x00002aaaab11d700: mov 0x14(%rsp),%r11d | |
0x00002aaaab11d705: mov %rax,%rbx | |
0x00002aaaab11d708: jmpq 0x00002aaaab11d4fa | |
;; B17: # B25 B18 <- B19 B8 B9 Freq: 2e-06 | |
0x00002aaaab11d70d: mov %r8,%rdi | |
0x00002aaaab11d710: xor %eax,%eax | |
0x00002aaaab11d712: rep stos %rax,%es:(%rdi) | |
0x00002aaaab11d715: xor %r8d,%r8d | |
0x00002aaaab11d718: mov 0x8(%rsp),%rsi | |
0x00002aaaab11d71d: mov 0x10(%rsp),%edx | |
0x00002aaaab11d721: mov %rbx,%rcx | |
0x00002aaaab11d724: mov (%rsp),%rbp | |
0x00002aaaab11d728: mov %rbx,0x10(%rsp) | |
0x00002aaaab11d72d: nop | |
0x00002aaaab11d72e: nop | |
0x00002aaaab11d72f: callq 0x00002aaaab11b020 ; OopMap{rbp=Oop [0]=Oop [16]=Oop off=756} | |
;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
; {runtime_call} | |
;; B18: # B13 <- B17 Freq: 1.99996e-06 | |
0x00002aaaab11d734: mov 0x10(%rsp),%rbx | |
0x00002aaaab11d739: jmpq 0x00002aaaab11d571 | |
;; B19: # B17 B20 <- B10 Freq: 9.99996e-07 | |
0x00002aaaab11d73e: test %r9d,%r9d | |
0x00002aaaab11d741: jl 0x00002aaaab11d70d | |
;; B20: # B13 <- B19 Freq: 9.99995e-07 | |
0x00002aaaab11d743: mov %r8,%rdi | |
0x00002aaaab11d746: xor %eax,%eax | |
0x00002aaaab11d748: rep stos %rax,%es:(%rdi) ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
0x00002aaaab11d74b: jmpq 0x00002aaaab11d571 | |
;; B21: # N339 <- B1 Freq: 4.76837e-07 | |
0x00002aaaab11d750: mov $0xce,%esi | |
0x00002aaaab11d755: mov %ecx,%ebp | |
0x00002aaaab11d757: callq 0x00002aaaab0f3fa0 ; OopMap{off=796} | |
;*new ; - java.lang.String::<init>@8 (line 204) | |
; {runtime_call} | |
0x00002aaaab11d75c: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11d766: rex.WB callq *%r10 ;*new ; - java.lang.String::<init>@8 (line 204) | |
;; B22: # N339 <- B2 Freq: 4.76837e-07 | |
0x00002aaaab11d769: mov $0xce,%esi | |
0x00002aaaab11d76e: nop | |
0x00002aaaab11d76f: callq 0x00002aaaab0f3fa0 ; OopMap{off=820} | |
;*new ; - java.lang.String::<init>@21 (line 207) | |
; {runtime_call} | |
0x00002aaaab11d774: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11d77e: rex.WB callq *%r10 ;*new ; - java.lang.String::<init>@21 (line 207) | |
;; B23: # N339 <- B4 Freq: 4.76836e-07 | |
0x00002aaaab11d781: mov $0xce,%esi | |
0x00002aaaab11d786: nop | |
0x00002aaaab11d787: callq 0x00002aaaab0f3fa0 ; OopMap{off=844} | |
;*new ; - java.lang.String::<init>@38 (line 211) | |
; {runtime_call} | |
0x00002aaaab11d78c: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11d796: rex.WB callq *%r10 ;*new ; - java.lang.String::<init>@38 (line 211) | |
;; B24: # N339 <- B3 Freq: 1.01328e-06 | |
0x00002aaaab11d799: mov $0xfffffff6,%esi | |
0x00002aaaab11d79e: nop | |
0x00002aaaab11d79f: callq 0x00002aaaab0f3fa0 ; OopMap{off=868} | |
;*arraylength | |
; - java.lang.String::<init>@32 (line 210) | |
; {runtime_call} | |
0x00002aaaab11d7a4: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11d7ae: rex.WB callq *%r10 ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
;; B25: # B27 <- B17 Freq: 2e-11 | |
0x00002aaaab11d7b1: mov %rax,%rsi | |
0x00002aaaab11d7b4: jmp 0x00002aaaab11d7b9 ;*newarray | |
; - java.util.Arrays::copyOfRange@40 (line 3209) | |
; - java.lang.String::<init>@65 (line 215) | |
;; B26: # B27 <- B15 Freq: 1.0103e-09 | |
0x00002aaaab11d7b6: mov %rax,%rsi ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
;; B27: # N339 <- B25 B26 Freq: 1.0303e-09 | |
0x00002aaaab11d7b9: add $0x30,%rsp | |
0x00002aaaab11d7bd: pop %rbp | |
0x00002aaaab11d7be: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab11d7c3: hlt | |
0x00002aaaab11d7c4: hlt | |
0x00002aaaab11d7c5: hlt | |
0x00002aaaab11d7c6: hlt | |
0x00002aaaab11d7c7: hlt | |
0x00002aaaab11d7c8: hlt | |
0x00002aaaab11d7c9: hlt | |
0x00002aaaab11d7ca: hlt | |
0x00002aaaab11d7cb: hlt | |
0x00002aaaab11d7cc: hlt | |
0x00002aaaab11d7cd: hlt | |
0x00002aaaab11d7ce: hlt | |
0x00002aaaab11d7cf: hlt | |
0x00002aaaab11d7d0: hlt | |
0x00002aaaab11d7d1: hlt | |
0x00002aaaab11d7d2: hlt | |
0x00002aaaab11d7d3: hlt | |
0x00002aaaab11d7d4: hlt | |
0x00002aaaab11d7d5: hlt | |
0x00002aaaab11d7d6: hlt | |
0x00002aaaab11d7d7: hlt | |
0x00002aaaab11d7d8: hlt | |
0x00002aaaab11d7d9: hlt | |
0x00002aaaab11d7da: hlt | |
0x00002aaaab11d7db: hlt | |
0x00002aaaab11d7dc: hlt | |
0x00002aaaab11d7dd: hlt | |
0x00002aaaab11d7de: hlt | |
0x00002aaaab11d7df: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x00002aaaab11d7e0: jmpq 0x00002aaaab101c20 ; {no_reloc} | |
[Deopt Handler Code] | |
0x00002aaaab11d7e5: callq 0x00002aaaab11d7ea | |
0x00002aaaab11d7ea: subq $0x5,(%rsp) | |
0x00002aaaab11d7ef: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab11d7f4: int3 | |
0x00002aaaab11d7f5: int3 | |
0x00002aaaab11d7f6: int3 | |
0x00002aaaab11d7f7: int3 | |
671 13 java.util.Arrays::copyOfRange (63 bytes) | |
Decoding compiled method 0x00002aaaab11f050: | |
Code: | |
[Entry Point] | |
[Verified Entry Point] | |
[Constants] | |
# {method} 'copyOfRange' '([CII)[C' in 'java/util/Arrays' | |
# parm0: rsi:rsi = '[C' | |
# parm1: rdx = int | |
# parm2: rcx = int | |
# [sp+0x40] (sp of caller) | |
;; N1: # B1 <- B20 B21 B12 B24 Freq: 1 | |
;; B1: # B20 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11f1a0: mov %eax,-0x8000(%rsp) | |
0x00002aaaab11f1a7: push %rbp | |
0x00002aaaab11f1a8: sub $0x30,%rsp ;*synchronization entry | |
; - java.util.Arrays::copyOfRange@-1 (line 3206) | |
0x00002aaaab11f1ac: mov %rsi,0x8(%rsp) | |
0x00002aaaab11f1b1: mov %edx,(%rsp) | |
0x00002aaaab11f1b4: mov %ecx,%r11d | |
0x00002aaaab11f1b7: sub %edx,%r11d ;*isub | |
; - java.util.Arrays::copyOfRange@2 (line 3206) | |
0x00002aaaab11f1ba: mov %r11d,0x4(%rsp) | |
0x00002aaaab11f1bf: test %r11d,%r11d | |
0x00002aaaab11f1c2: jl 0x00002aaaab11f340 ;*ifge | |
; - java.util.Arrays::copyOfRange@5 (line 3207) | |
;; B2: # B14 B3 <- B1 Freq: 1 | |
0x00002aaaab11f1c8: movslq %r11d,%r10 | |
0x00002aaaab11f1cb: shl %r10 | |
0x00002aaaab11f1ce: add $0x17,%r10 | |
0x00002aaaab11f1d2: mov %r10,0x10(%rsp) | |
0x00002aaaab11f1d7: cmp $0x80000,%r11d | |
0x00002aaaab11f1de: ja 0x00002aaaab11f2f3 | |
;; B3: # B14 B4 <- B2 Freq: 0.999999 | |
0x00002aaaab11f1e4: and $0xfffffffffffffff8,%r10 | |
0x00002aaaab11f1e8: mov 0x70(%r15),%rbp | |
0x00002aaaab11f1ec: mov %rbp,%r11 | |
0x00002aaaab11f1ef: add %r10,%r11 | |
0x00002aaaab11f1f2: cmp 0x80(%r15),%r11 | |
0x00002aaaab11f1f9: jae 0x00002aaaab11f2f3 | |
;; B4: # B5 <- B3 Freq: 0.999898 | |
0x00002aaaab11f1ff: mov %r11,0x70(%r15) | |
0x00002aaaab11f203: prefetchnta 0x100(%r11) | |
0x00002aaaab11f20b: movq $0x1,0x0(%rbp) | |
0x00002aaaab11f213: prefetchnta 0x140(%r11) | |
0x00002aaaab11f21b: movl $0xc4200608,0x8(%rbp) ; {oop({type array char})} | |
0x00002aaaab11f222: mov 0x4(%rsp),%r10d | |
0x00002aaaab11f227: mov %r10d,0xc(%rbp) | |
0x00002aaaab11f22b: prefetchnta 0x180(%r11) ;*newarray | |
; - java.util.Arrays::copyOfRange@40 (line 3209) | |
;; B5: # B21 B6 <- B15 B4 Freq: 1 | |
0x00002aaaab11f233: mov 0x8(%rsp),%rbx | |
0x00002aaaab11f238: mov 0xc(%rbx),%edi ;*arraylength | |
; - java.util.Arrays::copyOfRange@50 (line 3210) | |
; implicit exception: dispatches to 0x00002aaaab11f35d | |
;; B6: # B16 B7 <- B5 Freq: 0.999999 | |
0x00002aaaab11f23b: mov %edi,%r11d | |
0x00002aaaab11f23e: sub (%rsp),%r11d ;*isub | |
; - java.util.Arrays::copyOfRange@52 (line 3210) | |
0x00002aaaab11f242: mov %rbp,%r8 | |
0x00002aaaab11f245: add $0x10,%r8 ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
0x00002aaaab11f249: cmp 0x4(%rsp),%r11d | |
0x00002aaaab11f24e: mov 0x4(%rsp),%r9d | |
0x00002aaaab11f253: cmovl %r11d,%r9d ;*invokestatic min | |
; - java.util.Arrays::copyOfRange@54 (line 3210) | |
0x00002aaaab11f257: mov 0x10(%rsp),%r10 | |
0x00002aaaab11f25c: shr $0x3,%r10 | |
0x00002aaaab11f260: mov %r10,%rsi | |
0x00002aaaab11f263: mov %r10,%rcx | |
0x00002aaaab11f266: add $0xfffffffffffffffe,%rcx | |
0x00002aaaab11f26a: mov (%rsp),%r10d | |
0x00002aaaab11f26e: test %r10d,%r10d | |
0x00002aaaab11f271: jl 0x00002aaaab11f310 | |
;; B7: # B16 B8 <- B6 Freq: 0.999997 | |
0x00002aaaab11f277: mov %r10d,%r11d | |
0x00002aaaab11f27a: add %r9d,%r11d | |
0x00002aaaab11f27d: cmp %r11d,%edi | |
0x00002aaaab11f280: jb 0x00002aaaab11f310 | |
;; B8: # B16 B9 <- B7 Freq: 0.999996 | |
0x00002aaaab11f286: mov 0x4(%rsp),%edi | |
0x00002aaaab11f28a: cmp %r9d,%edi | |
0x00002aaaab11f28d: jb 0x00002aaaab11f310 | |
;; B9: # B18 B10 <- B8 Freq: 0.999995 | |
0x00002aaaab11f293: test %r9d,%r9d | |
0x00002aaaab11f296: jle 0x00002aaaab11f32e | |
;; B10: # B13 B11 <- B9 Freq: 0.999994 | |
0x00002aaaab11f29c: movslq %r9d,%rdx | |
0x00002aaaab11f29f: cmp %edi,%r9d | |
0x00002aaaab11f2a2: jl 0x00002aaaab11f2c8 | |
;; B11: # B12 <- B10 B13 Freq: 0.999994 | |
0x00002aaaab11f2a4: lea 0x10(%rbx,%r10,2),%rdi | |
0x00002aaaab11f2a9: mov %r8,%rsi | |
0x00002aaaab11f2ac: mov $0x2aaaab0fce80,%r10 | |
0x00002aaaab11f2b6: callq *%r10 | |
;; B12: # N1 <- B11 B19 B17 Freq: 0.999998 | |
0x00002aaaab11f2b9: mov %rbp,%rax | |
0x00002aaaab11f2bc: add $0x30,%rsp | |
0x00002aaaab11f2c0: pop %rbp | |
0x00002aaaab11f2c1: test %eax,-0x4272c7(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab11f2c7: retq | |
;; B13: # B11 <- B10 Freq: 0.000999994 | |
0x00002aaaab11f2c8: mov %rdx,%r11 | |
0x00002aaaab11f2cb: shl %r11 | |
0x00002aaaab11f2ce: add $0x10,%r11 | |
0x00002aaaab11f2d2: mov %r11,%r9 | |
0x00002aaaab11f2d5: and $0xfffffffffffffff9,%r9 | |
0x00002aaaab11f2d9: mov %rbp,%rdi | |
0x00002aaaab11f2dc: add %r9,%rdi | |
0x00002aaaab11f2df: shr $0x3,%r11 | |
0x00002aaaab11f2e3: mov %rsi,%r9 | |
0x00002aaaab11f2e6: sub %r11,%r9 | |
0x00002aaaab11f2e9: mov %r9,%rcx | |
0x00002aaaab11f2ec: xor %eax,%eax | |
0x00002aaaab11f2ee: rep stos %rax,%es:(%rdi) ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
0x00002aaaab11f2f1: jmp 0x00002aaaab11f2a4 | |
;; B14: # B23 B15 <- B2 B3 Freq: 0.00010103 | |
0x00002aaaab11f2f3: mov $0xc4200608,%rsi ; {oop({type array char})} | |
0x00002aaaab11f2fd: mov 0x4(%rsp),%edx | |
0x00002aaaab11f301: mov %edx,%ebp | |
0x00002aaaab11f303: callq 0x00002aaaab118220 ; OopMap{[8]=Oop off=360} | |
;*newarray | |
; - java.util.Arrays::copyOfRange@40 (line 3209) | |
; {runtime_call} | |
;; B15: # B5 <- B14 Freq: 0.000101028 | |
0x00002aaaab11f308: mov %rax,%rbp | |
0x00002aaaab11f30b: jmpq 0x00002aaaab11f233 | |
;; B16: # B22 B17 <- B6 B7 B8 B18 Freq: 2.99999e-06 | |
0x00002aaaab11f310: mov %r8,%rdi | |
0x00002aaaab11f313: xor %eax,%eax | |
0x00002aaaab11f315: rep stos %rax,%es:(%rdi) | |
0x00002aaaab11f318: xor %r8d,%r8d | |
0x00002aaaab11f31b: mov %rbx,%rsi | |
0x00002aaaab11f31e: mov %r10d,%edx | |
0x00002aaaab11f321: mov %rbp,%rcx | |
0x00002aaaab11f324: nop | |
0x00002aaaab11f325: nop | |
0x00002aaaab11f326: nop | |
0x00002aaaab11f327: callq 0x00002aaaab11b020 ; OopMap{rbp=Oop off=396} | |
;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
; {runtime_call} | |
;; B17: # B12 <- B16 Freq: 2.99993e-06 | |
0x00002aaaab11f32c: jmp 0x00002aaaab11f2b9 | |
;; B18: # B16 B19 <- B9 Freq: 9.99995e-07 | |
0x00002aaaab11f32e: test %r9d,%r9d | |
0x00002aaaab11f331: jl 0x00002aaaab11f310 | |
;; B19: # B12 <- B18 Freq: 9.99994e-07 | |
0x00002aaaab11f333: mov %r8,%rdi | |
0x00002aaaab11f336: xor %eax,%eax | |
0x00002aaaab11f338: rep stos %rax,%es:(%rdi) ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
0x00002aaaab11f33b: jmpq 0x00002aaaab11f2b9 | |
;; B20: # N1 <- B1 Freq: 4.76837e-07 | |
0x00002aaaab11f340: mov $0xce,%esi | |
0x00002aaaab11f345: mov %edx,%ebp | |
0x00002aaaab11f347: mov %ecx,(%rsp) | |
0x00002aaaab11f34a: nop | |
0x00002aaaab11f34b: callq 0x00002aaaab0f3fa0 ; OopMap{off=432} | |
;*new ; - java.util.Arrays::copyOfRange@8 (line 3208) | |
; {runtime_call} | |
0x00002aaaab11f350: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11f35a: rex.WB callq *%r10 | |
;; B21: # N1 <- B5 Freq: 1.01328e-06 | |
0x00002aaaab11f35d: mov $0xfffffff6,%esi | |
0x00002aaaab11f362: nop | |
0x00002aaaab11f363: callq 0x00002aaaab0f3fa0 ; OopMap{off=456} | |
;*arraylength | |
; - java.util.Arrays::copyOfRange@50 (line 3210) | |
; {runtime_call} | |
0x00002aaaab11f368: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11f372: rex.WB callq *%r10 ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
;; B22: # B24 <- B16 Freq: 2.99999e-11 | |
0x00002aaaab11f375: mov %rax,%rsi | |
0x00002aaaab11f378: jmp 0x00002aaaab11f37d ;*newarray | |
; - java.util.Arrays::copyOfRange@40 (line 3209) | |
;; B23: # B24 <- B14 Freq: 1.0103e-09 | |
0x00002aaaab11f37a: mov %rax,%rsi ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
;; B24: # N1 <- B22 B23 Freq: 1.0403e-09 | |
0x00002aaaab11f37d: add $0x30,%rsp | |
0x00002aaaab11f381: pop %rbp | |
0x00002aaaab11f382: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab11f387: hlt | |
0x00002aaaab11f388: hlt | |
0x00002aaaab11f389: hlt | |
0x00002aaaab11f38a: hlt | |
0x00002aaaab11f38b: hlt | |
0x00002aaaab11f38c: hlt | |
0x00002aaaab11f38d: hlt | |
0x00002aaaab11f38e: hlt | |
0x00002aaaab11f38f: hlt | |
0x00002aaaab11f390: hlt | |
0x00002aaaab11f391: hlt | |
0x00002aaaab11f392: hlt | |
0x00002aaaab11f393: hlt | |
0x00002aaaab11f394: hlt | |
0x00002aaaab11f395: hlt | |
0x00002aaaab11f396: hlt | |
0x00002aaaab11f397: hlt | |
0x00002aaaab11f398: hlt | |
0x00002aaaab11f399: hlt | |
0x00002aaaab11f39a: hlt | |
0x00002aaaab11f39b: hlt | |
0x00002aaaab11f39c: hlt | |
0x00002aaaab11f39d: hlt | |
0x00002aaaab11f39e: hlt | |
0x00002aaaab11f39f: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x00002aaaab11f3a0: jmpq 0x00002aaaab101c20 ; {no_reloc} | |
[Deopt Handler Code] | |
0x00002aaaab11f3a5: callq 0x00002aaaab11f3aa | |
0x00002aaaab11f3aa: subq $0x5,(%rsp) | |
0x00002aaaab11f3af: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab11f3b4: int3 | |
0x00002aaaab11f3b5: int3 | |
0x00002aaaab11f3b6: int3 | |
0x00002aaaab11f3b7: int3 | |
687 14 java.lang.AbstractStringBuilder::<init> (12 bytes) | |
Decoding compiled method 0x00002aaaab11ebd0: | |
Code: | |
[Entry Point] | |
[Constants] | |
# {method} '<init>' '(I)V' in 'java/lang/AbstractStringBuilder' | |
# this: rsi:rsi = 'java/lang/AbstractStringBuilder' | |
# parm0: rdx = int | |
# [sp+0x20] (sp of caller) | |
;; N105: # B1 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11ed40: mov 0x8(%rsi),%r10d | |
0x00002aaaab11ed44: cmp %r10,%rax | |
0x00002aaaab11ed47: jne 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab11ed4d: nop | |
0x00002aaaab11ed4e: nop | |
0x00002aaaab11ed4f: nop | |
[Verified Entry Point] | |
;; B1: # B5 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11ed50: mov %eax,-0x8000(%rsp) | |
0x00002aaaab11ed57: push %rbp | |
0x00002aaaab11ed58: sub $0x10,%rsp ;*synchronization entry | |
; - java.lang.AbstractStringBuilder::<init>@-1 (line 44) | |
0x00002aaaab11ed5c: mov %rsi,%rbp | |
0x00002aaaab11ed5f: cmp $0x80000,%edx | |
0x00002aaaab11ed65: ja 0x00002aaaab11ef19 | |
;; B2: # B5 B3 <- B1 Freq: 0.999999 | |
0x00002aaaab11ed6b: movslq %edx,%rcx | |
0x00002aaaab11ed6e: shl %rcx | |
0x00002aaaab11ed71: add $0x17,%rcx | |
0x00002aaaab11ed75: mov %rcx,%r10 | |
0x00002aaaab11ed78: and $0xfffffffffffffff8,%r10 | |
0x00002aaaab11ed7c: mov 0x70(%r15),%r8 | |
0x00002aaaab11ed80: mov %r8,%r11 | |
0x00002aaaab11ed83: add %r10,%r11 | |
0x00002aaaab11ed86: cmp 0x80(%r15),%r11 | |
0x00002aaaab11ed8d: jae 0x00002aaaab11ef19 | |
;; B3: # B4 <- B2 Freq: 0.999899 | |
0x00002aaaab11ed93: mov %r11,0x70(%r15) | |
0x00002aaaab11ed97: prefetchnta 0x100(%r11) | |
0x00002aaaab11ed9f: movq $0x1,(%r8) | |
0x00002aaaab11eda6: prefetchnta 0x140(%r11) | |
0x00002aaaab11edae: movl $0xc4200608,0x8(%r8) ; {oop({type array char})} | |
0x00002aaaab11edb6: mov %edx,0xc(%r8) | |
0x00002aaaab11edba: prefetchnta 0x180(%r11) | |
0x00002aaaab11edc2: mov %r8,%rdi | |
0x00002aaaab11edc5: add $0x10,%rdi | |
0x00002aaaab11edc9: shr $0x3,%rcx | |
0x00002aaaab11edcd: add $0xfffffffffffffffe,%rcx | |
0x00002aaaab11edd1: xor %eax,%eax | |
0x00002aaaab11edd3: rep stos %rax,%es:(%rdi) ;*newarray | |
; - java.lang.AbstractStringBuilder::<init>@6 (line 45) | |
;; B4: # N105 <- B6 B3 Freq: 1 | |
0x00002aaaab11edd6: mov %rbp,%r10 | |
0x00002aaaab11edd9: push %r10 | |
0x00002aaaab11eddb: mov $0x2ae74dadc700,%r10 ; {external_word} | |
0x00002aaaab11ede5: cmp (%r10),%r12 | |
0x00002aaaab11ede8: je 0x00002aaaab11ee6d | |
0x00002aaaab11edee: mov %rsp,-0x28(%rsp) | |
0x00002aaaab11edf3: sub $0x80,%rsp | |
0x00002aaaab11edfa: mov %rax,0x78(%rsp) | |
0x00002aaaab11edff: mov %rcx,0x70(%rsp) | |
0x00002aaaab11ee04: mov %rdx,0x68(%rsp) | |
0x00002aaaab11ee09: mov %rbx,0x60(%rsp) | |
0x00002aaaab11ee0e: mov %rbp,0x50(%rsp) | |
0x00002aaaab11ee13: mov %rsi,0x48(%rsp) | |
0x00002aaaab11ee18: mov %rdi,0x40(%rsp) | |
0x00002aaaab11ee1d: mov %r8,0x38(%rsp) | |
0x00002aaaab11ee22: mov %r9,0x30(%rsp) | |
0x00002aaaab11ee27: mov %r10,0x28(%rsp) | |
0x00002aaaab11ee2c: mov %r11,0x20(%rsp) | |
0x00002aaaab11ee31: mov %r12,0x18(%rsp) | |
0x00002aaaab11ee36: mov %r13,0x10(%rsp) | |
0x00002aaaab11ee3b: mov %r14,0x8(%rsp) | |
0x00002aaaab11ee40: mov %r15,(%rsp) | |
0x00002aaaab11ee44: mov $0x2ae74d5c7980,%rdi ; {external_word} | |
0x00002aaaab11ee4e: mov $0x2aaaab11edee,%rsi ; {internal_word} | |
0x00002aaaab11ee58: mov %rsp,%rdx | |
0x00002aaaab11ee5b: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab11ee5f: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab11ee69: rex.WB callq *%r10 | |
0x00002aaaab11ee6c: hlt | |
0x00002aaaab11ee6d: pop %r10 | |
0x00002aaaab11ee6f: test %r8,%r8 | |
0x00002aaaab11ee72: jne 0x00002aaaab11eef7 | |
0x00002aaaab11ee78: mov %rsp,-0x28(%rsp) | |
0x00002aaaab11ee7d: sub $0x80,%rsp | |
0x00002aaaab11ee84: mov %rax,0x78(%rsp) | |
0x00002aaaab11ee89: mov %rcx,0x70(%rsp) | |
0x00002aaaab11ee8e: mov %rdx,0x68(%rsp) | |
0x00002aaaab11ee93: mov %rbx,0x60(%rsp) | |
0x00002aaaab11ee98: mov %rbp,0x50(%rsp) | |
0x00002aaaab11ee9d: mov %rsi,0x48(%rsp) | |
0x00002aaaab11eea2: mov %rdi,0x40(%rsp) | |
0x00002aaaab11eea7: mov %r8,0x38(%rsp) | |
0x00002aaaab11eeac: mov %r9,0x30(%rsp) | |
0x00002aaaab11eeb1: mov %r10,0x28(%rsp) | |
0x00002aaaab11eeb6: mov %r11,0x20(%rsp) | |
0x00002aaaab11eebb: mov %r12,0x18(%rsp) | |
0x00002aaaab11eec0: mov %r13,0x10(%rsp) | |
0x00002aaaab11eec5: mov %r14,0x8(%rsp) | |
0x00002aaaab11eeca: mov %r15,(%rsp) | |
0x00002aaaab11eece: mov $0x2ae74d5c79c0,%rdi ; {external_word} | |
0x00002aaaab11eed8: mov $0x2aaaab11ee78,%rsi ; {internal_word} | |
0x00002aaaab11eee2: mov %rsp,%rdx | |
0x00002aaaab11eee5: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab11eee9: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab11eef3: rex.WB callq *%r10 | |
0x00002aaaab11eef6: hlt | |
0x00002aaaab11eef7: mov %r8d,0x10(%rbp) | |
0x00002aaaab11eefb: shr $0x9,%r10 | |
0x00002aaaab11eeff: mov $0x2aaaadac4000,%r11 | |
0x00002aaaab11ef09: mov %r12b,(%r11,%r10,1) ;*synchronization entry | |
; - java.lang.AbstractStringBuilder::<init>@-1 (line 44) | |
0x00002aaaab11ef0d: add $0x10,%rsp | |
0x00002aaaab11ef11: pop %rbp | |
0x00002aaaab11ef12: test %eax,-0x426f18(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab11ef18: retq | |
;; B5: # B7 B6 <- B1 B2 Freq: 0.00010103 | |
0x00002aaaab11ef19: mov $0xc4200608,%rsi ; {oop({type array char})} | |
0x00002aaaab11ef23: callq 0x00002aaaab118220 ; OopMap{rbp=Oop off=488} | |
;*newarray | |
; - java.lang.AbstractStringBuilder::<init>@6 (line 45) | |
; {runtime_call} | |
;; B6: # B4 <- B5 Freq: 0.000101028 | |
0x00002aaaab11ef28: mov %rax,%r8 | |
0x00002aaaab11ef2b: jmpq 0x00002aaaab11edd6 ;*newarray | |
; - java.lang.AbstractStringBuilder::<init>@6 (line 45) | |
;; B7: # N105 <- B5 Freq: 1.0103e-09 | |
0x00002aaaab11ef30: mov %rax,%rsi | |
0x00002aaaab11ef33: add $0x10,%rsp | |
0x00002aaaab11ef37: pop %rbp | |
0x00002aaaab11ef38: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab11ef3d: hlt | |
0x00002aaaab11ef3e: hlt | |
0x00002aaaab11ef3f: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x00002aaaab11ef40: jmpq 0x00002aaaab101c20 ; {no_reloc} | |
[Deopt Handler Code] | |
0x00002aaaab11ef45: callq 0x00002aaaab11ef4a | |
0x00002aaaab11ef4a: subq $0x5,(%rsp) | |
0x00002aaaab11ef4f: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab11ef54: int3 | |
0x00002aaaab11ef55: int3 | |
0x00002aaaab11ef56: int3 | |
0x00002aaaab11ef57: int3 | |
695 15 java.lang.StringBuilder::toString (17 bytes) | |
Decoding compiled method 0x00002aaaab11e290: | |
Code: | |
[Entry Point] | |
[Constants] | |
# {method} 'toString' '()Ljava/lang/String;' in 'java/lang/StringBuilder' | |
# [sp+0x50] (sp of caller) | |
;; N385: # B1 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11e420: mov 0x8(%rsi),%r10d | |
0x00002aaaab11e424: cmp %r10,%rax | |
0x00002aaaab11e427: jne 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab11e42d: nop | |
0x00002aaaab11e42e: nop | |
0x00002aaaab11e42f: nop | |
[Verified Entry Point] | |
;; B1: # B16 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11e430: mov %eax,-0x8000(%rsp) | |
0x00002aaaab11e437: push %rbp | |
0x00002aaaab11e438: sub $0x40,%rsp ;*synchronization entry | |
; - java.lang.StringBuilder::toString@-1 (line 430) | |
0x00002aaaab11e43c: mov %rsi,%rbp | |
0x00002aaaab11e43f: mov 0x70(%r15),%rbx | |
0x00002aaaab11e443: mov %rbx,%r10 | |
0x00002aaaab11e446: add $0x20,%r10 | |
0x00002aaaab11e44a: cmp 0x80(%r15),%r10 | |
0x00002aaaab11e451: jae 0x00002aaaab11e6fb | |
;; B2: # B3 <- B1 Freq: 0.9999 | |
0x00002aaaab11e457: mov %r10,0x70(%r15) | |
0x00002aaaab11e45b: prefetchnta 0x100(%r10) | |
0x00002aaaab11e463: mov $0xc420ae88,%r11d ; {oop('java/lang/String')} | |
0x00002aaaab11e469: mov 0xb0(%r11),%r10 | |
0x00002aaaab11e470: mov %r10,(%rbx) | |
0x00002aaaab11e473: movl $0xc420ae88,0x8(%rbx) ; {oop('java/lang/String')} | |
0x00002aaaab11e47a: mov %r12d,0xc(%rbx) | |
0x00002aaaab11e47e: mov %r12,0x10(%rbx) | |
0x00002aaaab11e482: mov %r12,0x18(%rbx) ;*new ; - java.lang.StringBuilder::toString@0 (line 430) | |
;; B3: # B23 B4 <- B17 B2 Freq: 1 | |
0x00002aaaab11e486: mov 0xc(%rbp),%r10d ;*getfield count | |
; - java.lang.StringBuilder::toString@10 (line 430) | |
0x00002aaaab11e48a: test %r10d,%r10d | |
0x00002aaaab11e48d: jl 0x00002aaaab11e7af ;*ifge | |
; - java.lang.String::<init>@18 (line 206) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
;; B4: # B25 B5 <- B3 Freq: 1 | |
0x00002aaaab11e493: mov 0x10(%rbp),%r8d ;*getfield value | |
; - java.lang.StringBuilder::toString@5 (line 430) | |
0x00002aaaab11e497: mov 0xc(%r8),%edi ;*arraylength | |
; - java.lang.String::<init>@32 (line 210) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
; implicit exception: dispatches to 0x00002aaaab11e7ed | |
;; B5: # B24 B6 <- B4 Freq: 0.999999 | |
0x00002aaaab11e49b: mov %edi,%r9d | |
0x00002aaaab11e49e: sub %r10d,%r9d | |
0x00002aaaab11e4a1: test %r9d,%r9d | |
0x00002aaaab11e4a4: jl 0x00002aaaab11e7cd ;*if_icmple | |
; - java.lang.String::<init>@35 (line 210) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
;; B6: # B18 B7 <- B5 Freq: 0.999998 | |
0x00002aaaab11e4aa: mov %r10d,0x14(%rbx) ;*putfield count | |
; - java.lang.String::<init>@56 (line 214) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
0x00002aaaab11e4ae: movslq %r10d,%r11 | |
0x00002aaaab11e4b1: mov %r8,%rdx ;*getfield value | |
; - java.lang.StringBuilder::toString@5 (line 430) | |
0x00002aaaab11e4b4: shl %r11 | |
0x00002aaaab11e4b7: add $0x17,%r11 | |
0x00002aaaab11e4bb: mov %r11,%rax | |
0x00002aaaab11e4be: and $0xfffffffffffffff8,%rax | |
0x00002aaaab11e4c2: cmp $0x80000,%r10d | |
0x00002aaaab11e4c9: ja 0x00002aaaab11e714 | |
;; B7: # B18 B8 <- B6 Freq: 0.999997 | |
0x00002aaaab11e4cf: mov 0x70(%r15),%rbp | |
0x00002aaaab11e4d3: mov %rbp,%r9 | |
0x00002aaaab11e4d6: add %rax,%r9 | |
0x00002aaaab11e4d9: cmp 0x80(%r15),%r9 | |
0x00002aaaab11e4e0: jae 0x00002aaaab11e714 | |
;; B8: # B9 <- B7 Freq: 0.999897 | |
0x00002aaaab11e4e6: mov %r9,0x70(%r15) | |
0x00002aaaab11e4ea: prefetchnta 0x100(%r9) | |
0x00002aaaab11e4f2: movq $0x1,0x0(%rbp) | |
0x00002aaaab11e4fa: prefetchnta 0x140(%r9) | |
0x00002aaaab11e502: movl $0xc4200608,0x8(%rbp) ; {oop({type array char})} | |
0x00002aaaab11e509: mov %r10d,0xc(%rbp) | |
0x00002aaaab11e50d: prefetchnta 0x180(%r9) ;*newarray | |
; - java.util.Arrays::copyOfRange@40 (line 3209) | |
; - java.lang.String::<init>@65 (line 215) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
;; B9: # B20 B10 <- B19 B8 Freq: 0.999998 | |
0x00002aaaab11e515: cmp %r10d,%edi | |
0x00002aaaab11e518: mov %r10d,%r9d | |
0x00002aaaab11e51b: cmovl %edi,%r9d ;*invokestatic min | |
; - java.util.Arrays::copyOfRange@54 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
0x00002aaaab11e51f: mov %rbp,%rsi | |
0x00002aaaab11e522: add $0x10,%rsi | |
0x00002aaaab11e526: shr $0x3,%r11 | |
0x00002aaaab11e52a: mov %r11,%rcx | |
0x00002aaaab11e52d: add $0xfffffffffffffffe,%rcx | |
0x00002aaaab11e531: cmp %r9d,%edi | |
0x00002aaaab11e534: jb 0x00002aaaab11e775 | |
;; B10: # B20 B11 <- B9 Freq: 0.999997 | |
0x00002aaaab11e53a: cmp %r9d,%r10d | |
0x00002aaaab11e53d: jb 0x00002aaaab11e775 | |
;; B11: # B22 B12 <- B10 Freq: 0.999996 | |
0x00002aaaab11e543: test %r9d,%r9d | |
0x00002aaaab11e546: jle 0x00002aaaab11e7a2 | |
;; B12: # B15 B13 <- B11 Freq: 0.999995 | |
0x00002aaaab11e54c: lea 0x10(%r8),%r8 | |
0x00002aaaab11e550: cmp %r10d,%r9d | |
0x00002aaaab11e553: jl 0x00002aaaab11e6bd | |
;; B13: # B14 <- B12 Freq: 0.998995 | |
0x00002aaaab11e559: add $0xfffffffffffffff0,%rax | |
0x00002aaaab11e55d: shr $0x3,%rax | |
0x00002aaaab11e561: mov %r8,%rdi | |
0x00002aaaab11e564: mov %rax,%rdx | |
0x00002aaaab11e567: mov $0x2aaaab0fd440,%r10 | |
0x00002aaaab11e571: callq *%r10 ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
;; B14: # N385 <- B15 B13 B21 B22 Freq: 0.999998 | |
0x00002aaaab11e574: push %r10 | |
0x00002aaaab11e576: mov $0x2ae74dadc700,%r10 ; {external_word} | |
0x00002aaaab11e580: cmp (%r10),%r12 | |
0x00002aaaab11e583: je 0x00002aaaab11e608 | |
0x00002aaaab11e589: mov %rsp,-0x28(%rsp) | |
0x00002aaaab11e58e: sub $0x80,%rsp | |
0x00002aaaab11e595: mov %rax,0x78(%rsp) | |
0x00002aaaab11e59a: mov %rcx,0x70(%rsp) | |
0x00002aaaab11e59f: mov %rdx,0x68(%rsp) | |
0x00002aaaab11e5a4: mov %rbx,0x60(%rsp) | |
0x00002aaaab11e5a9: mov %rbp,0x50(%rsp) | |
0x00002aaaab11e5ae: mov %rsi,0x48(%rsp) | |
0x00002aaaab11e5b3: mov %rdi,0x40(%rsp) | |
0x00002aaaab11e5b8: mov %r8,0x38(%rsp) | |
0x00002aaaab11e5bd: mov %r9,0x30(%rsp) | |
0x00002aaaab11e5c2: mov %r10,0x28(%rsp) | |
0x00002aaaab11e5c7: mov %r11,0x20(%rsp) | |
0x00002aaaab11e5cc: mov %r12,0x18(%rsp) | |
0x00002aaaab11e5d1: mov %r13,0x10(%rsp) | |
0x00002aaaab11e5d6: mov %r14,0x8(%rsp) | |
0x00002aaaab11e5db: mov %r15,(%rsp) | |
0x00002aaaab11e5df: mov $0x2ae74d5c7980,%rdi ; {external_word} | |
0x00002aaaab11e5e9: mov $0x2aaaab11e589,%rsi ; {internal_word} | |
0x00002aaaab11e5f3: mov %rsp,%rdx | |
0x00002aaaab11e5f6: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab11e5fa: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab11e604: rex.WB callq *%r10 | |
0x00002aaaab11e607: hlt | |
0x00002aaaab11e608: pop %r10 | |
0x00002aaaab11e60a: test %rbp,%rbp | |
0x00002aaaab11e60d: jne 0x00002aaaab11e692 | |
0x00002aaaab11e613: mov %rsp,-0x28(%rsp) | |
0x00002aaaab11e618: sub $0x80,%rsp | |
0x00002aaaab11e61f: mov %rax,0x78(%rsp) | |
0x00002aaaab11e624: mov %rcx,0x70(%rsp) | |
0x00002aaaab11e629: mov %rdx,0x68(%rsp) | |
0x00002aaaab11e62e: mov %rbx,0x60(%rsp) | |
0x00002aaaab11e633: mov %rbp,0x50(%rsp) | |
0x00002aaaab11e638: mov %rsi,0x48(%rsp) | |
0x00002aaaab11e63d: mov %rdi,0x40(%rsp) | |
0x00002aaaab11e642: mov %r8,0x38(%rsp) | |
0x00002aaaab11e647: mov %r9,0x30(%rsp) | |
0x00002aaaab11e64c: mov %r10,0x28(%rsp) | |
0x00002aaaab11e651: mov %r11,0x20(%rsp) | |
0x00002aaaab11e656: mov %r12,0x18(%rsp) | |
0x00002aaaab11e65b: mov %r13,0x10(%rsp) | |
0x00002aaaab11e660: mov %r14,0x8(%rsp) | |
0x00002aaaab11e665: mov %r15,(%rsp) | |
0x00002aaaab11e669: mov $0x2ae74d5c79c0,%rdi ; {external_word} | |
0x00002aaaab11e673: mov $0x2aaaab11e613,%rsi ; {internal_word} | |
0x00002aaaab11e67d: mov %rsp,%rdx | |
0x00002aaaab11e680: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab11e684: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab11e68e: rex.WB callq *%r10 | |
0x00002aaaab11e691: hlt | |
0x00002aaaab11e692: mov %rbp,%r11 | |
0x00002aaaab11e695: mov %r11d,0xc(%rbx) | |
0x00002aaaab11e699: mov %rbx,%r10 | |
0x00002aaaab11e69c: shr $0x9,%r10 | |
0x00002aaaab11e6a0: mov $0x2aaaadac4000,%r11 | |
0x00002aaaab11e6aa: mov %r12b,(%r11,%r10,1) ;*synchronization entry | |
; - java.lang.StringBuilder::toString@-1 (line 430) | |
0x00002aaaab11e6ae: mov %rbx,%rax | |
0x00002aaaab11e6b1: add $0x40,%rsp | |
0x00002aaaab11e6b5: pop %rbp | |
0x00002aaaab11e6b6: test %eax,-0x4266bc(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab11e6bc: retq | |
;; B15: # B14 <- B12 Freq: 0.000999995 | |
0x00002aaaab11e6bd: movslq %r9d,%rdx | |
0x00002aaaab11e6c0: mov %rdx,%r10 | |
0x00002aaaab11e6c3: shl %r10 | |
0x00002aaaab11e6c6: add $0x10,%r10 | |
0x00002aaaab11e6ca: mov %r10,%r9 | |
0x00002aaaab11e6cd: and $0xfffffffffffffff9,%r9 | |
0x00002aaaab11e6d1: mov %rbp,%rdi | |
0x00002aaaab11e6d4: add %r9,%rdi | |
0x00002aaaab11e6d7: shr $0x3,%r10 | |
0x00002aaaab11e6db: sub %r10,%r11 | |
0x00002aaaab11e6de: mov %r11,%rcx | |
0x00002aaaab11e6e1: xor %eax,%eax | |
0x00002aaaab11e6e3: rep stos %rax,%es:(%rdi) | |
0x00002aaaab11e6e6: mov %r8,%rdi | |
0x00002aaaab11e6e9: mov $0x2aaaab0fccc0,%r10 | |
0x00002aaaab11e6f3: callq *%r10 ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
0x00002aaaab11e6f6: jmpq 0x00002aaaab11e574 | |
;; B16: # B28 B17 <- B1 Freq: 0.000100017 | |
0x00002aaaab11e6fb: mov $0xc420ae88,%rsi ; {oop('java/lang/String')} | |
0x00002aaaab11e705: nop | |
0x00002aaaab11e706: nop | |
0x00002aaaab11e707: callq 0x00002aaaab1182e0 ; OopMap{rbp=Oop off=748} | |
;*new ; - java.lang.StringBuilder::toString@0 (line 430) | |
; {runtime_call} | |
;; B17: # B3 <- B16 Freq: 0.000100015 | |
0x00002aaaab11e70c: mov %rax,%rbx | |
0x00002aaaab11e70f: jmpq 0x00002aaaab11e486 | |
;; B18: # B27 B19 <- B6 B7 Freq: 0.00010103 | |
0x00002aaaab11e714: mov %edi,0x20(%rsp) | |
0x00002aaaab11e718: mov %r8d,0x4(%rsp) | |
0x00002aaaab11e71d: mov %rax,0x18(%rsp) | |
0x00002aaaab11e722: mov %rdx,0x10(%rsp) | |
0x00002aaaab11e727: mov %r11,0x8(%rsp) | |
0x00002aaaab11e72c: mov %r10d,(%rsp) | |
0x00002aaaab11e730: mov %rbx,%rbp ;*ifge | |
; - java.util.Arrays::copyOfRange@5 (line 3207) | |
; - java.lang.String::<init>@65 (line 215) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
0x00002aaaab11e733: mov $0xc4200608,%rsi ; {oop({type array char})} | |
0x00002aaaab11e73d: mov %r10d,%edx | |
0x00002aaaab11e740: nop | |
0x00002aaaab11e741: nop | |
0x00002aaaab11e742: nop | |
0x00002aaaab11e743: callq 0x00002aaaab118220 ; OopMap{rbp=Oop [4]=NarrowOop [16]=Oop off=808} | |
;*newarray | |
; - java.util.Arrays::copyOfRange@40 (line 3209) | |
; - java.lang.String::<init>@65 (line 215) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
; {runtime_call} | |
;; B19: # B9 <- B18 Freq: 0.000101028 | |
0x00002aaaab11e748: mov %rax,%r8 | |
0x00002aaaab11e74b: mov %rbp,%r9 | |
0x00002aaaab11e74e: mov (%rsp),%r10d | |
0x00002aaaab11e752: mov 0x8(%rsp),%r11 | |
0x00002aaaab11e757: mov 0x10(%rsp),%rdx | |
0x00002aaaab11e75c: mov 0x18(%rsp),%rax | |
0x00002aaaab11e761: mov %r8,%rbp | |
0x00002aaaab11e764: mov 0x4(%rsp),%r8d | |
0x00002aaaab11e769: mov 0x20(%rsp),%edi | |
0x00002aaaab11e76d: mov %r9,%rbx | |
0x00002aaaab11e770: jmpq 0x00002aaaab11e515 | |
;; B20: # B26 B21 <- B9 B10 Freq: 2e-06 | |
0x00002aaaab11e775: mov %rsi,%rdi | |
0x00002aaaab11e778: xor %eax,%eax | |
0x00002aaaab11e77a: rep stos %rax,%es:(%rdi) | |
0x00002aaaab11e77d: mov %rdx,%rsi | |
0x00002aaaab11e780: xor %edx,%edx | |
0x00002aaaab11e782: mov %rbp,%rcx | |
0x00002aaaab11e785: xor %r8d,%r8d | |
0x00002aaaab11e788: mov %rbx,0x8(%rsp) | |
0x00002aaaab11e78d: mov %rbx,0x10(%rsp) | |
0x00002aaaab11e792: nop | |
0x00002aaaab11e793: callq 0x00002aaaab11b020 ; OopMap{rbp=Oop [8]=Oop [16]=Oop off=888} | |
;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
; {runtime_call} | |
;; B21: # B14 <- B20 Freq: 1.99996e-06 | |
0x00002aaaab11e798: mov 0x8(%rsp),%rbx | |
0x00002aaaab11e79d: jmpq 0x00002aaaab11e574 | |
;; B22: # B14 <- B11 Freq: 9.99996e-07 | |
0x00002aaaab11e7a2: mov %rsi,%rdi | |
0x00002aaaab11e7a5: xor %eax,%eax | |
0x00002aaaab11e7a7: rep stos %rax,%es:(%rdi) ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
0x00002aaaab11e7aa: jmpq 0x00002aaaab11e574 ;*ifge | |
; - java.lang.String::<init>@5 (line 203) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
;; B23: # N385 <- B3 Freq: 4.76837e-07 | |
0x00002aaaab11e7af: mov $0xce,%esi | |
0x00002aaaab11e7b4: mov %rbx,%rbp | |
0x00002aaaab11e7b7: mov %r10d,(%rsp) | |
0x00002aaaab11e7bb: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop off=928} | |
;*new ; - java.lang.String::<init>@21 (line 207) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
; {runtime_call} | |
0x00002aaaab11e7c0: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11e7ca: rex.WB callq *%r10 ;*ifge | |
; - java.lang.String::<init>@18 (line 206) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
;; B24: # N385 <- B5 Freq: 4.76836e-07 | |
0x00002aaaab11e7cd: mov $0xce,%esi | |
0x00002aaaab11e7d2: mov %rbx,%rbp | |
0x00002aaaab11e7d5: mov %r10d,(%rsp) | |
0x00002aaaab11e7d9: nop | |
0x00002aaaab11e7da: nop | |
0x00002aaaab11e7db: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop off=960} | |
;*new ; - java.lang.String::<init>@38 (line 211) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
; {runtime_call} | |
0x00002aaaab11e7e0: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11e7ea: rex.WB callq *%r10 | |
;; B25: # N385 <- B4 Freq: 1.01328e-06 | |
0x00002aaaab11e7ed: mov $0xfffffff6,%esi | |
0x00002aaaab11e7f2: nop | |
0x00002aaaab11e7f3: callq 0x00002aaaab0f3fa0 ; OopMap{off=984} | |
;*arraylength | |
; - java.lang.String::<init>@32 (line 210) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
; {runtime_call} | |
0x00002aaaab11e7f8: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab11e802: rex.WB callq *%r10 ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
;; B26: # B29 <- B20 Freq: 2e-11 | |
0x00002aaaab11e805: mov %rax,%rsi | |
0x00002aaaab11e808: jmp 0x00002aaaab11e812 ;*newarray | |
; - java.util.Arrays::copyOfRange@40 (line 3209) | |
; - java.lang.String::<init>@65 (line 215) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
;; B27: # B29 <- B18 Freq: 1.0103e-09 | |
0x00002aaaab11e80a: mov %rax,%rsi | |
0x00002aaaab11e80d: jmp 0x00002aaaab11e812 ;*new | |
; - java.lang.StringBuilder::toString@0 (line 430) | |
;; B28: # B29 <- B16 Freq: 1.00017e-09 | |
0x00002aaaab11e80f: mov %rax,%rsi ;*invokestatic arraycopy | |
; - java.util.Arrays::copyOfRange@57 (line 3210) | |
; - java.lang.String::<init>@65 (line 215) | |
; - java.lang.StringBuilder::toString@13 (line 430) | |
;; B29: # N385 <- B26 B28 B27 Freq: 2.03046e-09 | |
0x00002aaaab11e812: add $0x40,%rsp | |
0x00002aaaab11e816: pop %rbp | |
0x00002aaaab11e817: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab11e81c: hlt | |
0x00002aaaab11e81d: hlt | |
0x00002aaaab11e81e: hlt | |
0x00002aaaab11e81f: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x00002aaaab11e820: jmpq 0x00002aaaab101c20 ; {no_reloc} | |
[Deopt Handler Code] | |
0x00002aaaab11e825: callq 0x00002aaaab11e82a | |
0x00002aaaab11e82a: subq $0x5,(%rsp) | |
0x00002aaaab11e82f: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab11e834: int3 | |
0x00002aaaab11e835: int3 | |
0x00002aaaab11e836: int3 | |
0x00002aaaab11e837: int3 | |
722 16 java.lang.StringBuilder::<init> (7 bytes) | |
Decoding compiled method 0x00002aaaab11de10: | |
Code: | |
[Entry Point] | |
[Constants] | |
# {method} '<init>' '()V' in 'java/lang/StringBuilder' | |
# [sp+0x20] (sp of caller) | |
;; N80: # B1 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11df80: mov 0x8(%rsi),%r10d | |
0x00002aaaab11df84: cmp %r10,%rax | |
0x00002aaaab11df87: jne 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab11df8d: nop | |
0x00002aaaab11df8e: nop | |
0x00002aaaab11df8f: nop | |
[Verified Entry Point] | |
;; B1: # B4 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab11df90: mov %eax,-0x8000(%rsp) | |
0x00002aaaab11df97: push %rbp | |
0x00002aaaab11df98: sub $0x10,%rsp ;*synchronization entry | |
; - java.lang.StringBuilder::<init>@-1 (line 68) | |
0x00002aaaab11df9c: mov %rsi,%rbp | |
0x00002aaaab11df9f: mov 0x70(%r15),%rax | |
0x00002aaaab11dfa3: mov %rax,%r10 | |
0x00002aaaab11dfa6: add $0x30,%r10 | |
0x00002aaaab11dfaa: cmp 0x80(%r15),%r10 | |
0x00002aaaab11dfb1: jae 0x00002aaaab11e13e | |
;; B2: # B3 <- B1 Freq: 0.9999 | |
0x00002aaaab11dfb7: mov %r10,0x70(%r15) | |
0x00002aaaab11dfbb: prefetchnta 0x100(%r10) | |
0x00002aaaab11dfc3: movq $0x1,(%rax) | |
0x00002aaaab11dfca: prefetchnta 0x140(%r10) | |
0x00002aaaab11dfd2: movl $0xc4200608,0x8(%rax) ; {oop({type array char})} | |
0x00002aaaab11dfd9: prefetchnta 0x180(%r10) | |
0x00002aaaab11dfe1: movl $0x10,0xc(%rax) | |
0x00002aaaab11dfe8: mov %r12,0x10(%rax) | |
0x00002aaaab11dfec: mov %r12,0x18(%rax) | |
0x00002aaaab11dff0: mov %r12,0x20(%rax) | |
0x00002aaaab11dff4: mov %r12,0x28(%rax) ;*newarray | |
; - java.lang.AbstractStringBuilder::<init>@6 (line 45) | |
; - java.lang.StringBuilder::<init>@3 (line 68) | |
;; B3: # N80 <- B5 B2 Freq: 1 | |
0x00002aaaab11dff8: mov %rbp,%r10 | |
0x00002aaaab11dffb: push %r10 | |
0x00002aaaab11dffd: mov $0x2ae74dadc700,%r10 ; {external_word} | |
0x00002aaaab11e007: cmp (%r10),%r12 | |
0x00002aaaab11e00a: je 0x00002aaaab11e08f | |
0x00002aaaab11e010: mov %rsp,-0x28(%rsp) | |
0x00002aaaab11e015: sub $0x80,%rsp | |
0x00002aaaab11e01c: mov %rax,0x78(%rsp) | |
0x00002aaaab11e021: mov %rcx,0x70(%rsp) | |
0x00002aaaab11e026: mov %rdx,0x68(%rsp) | |
0x00002aaaab11e02b: mov %rbx,0x60(%rsp) | |
0x00002aaaab11e030: mov %rbp,0x50(%rsp) | |
0x00002aaaab11e035: mov %rsi,0x48(%rsp) | |
0x00002aaaab11e03a: mov %rdi,0x40(%rsp) | |
0x00002aaaab11e03f: mov %r8,0x38(%rsp) | |
0x00002aaaab11e044: mov %r9,0x30(%rsp) | |
0x00002aaaab11e049: mov %r10,0x28(%rsp) | |
0x00002aaaab11e04e: mov %r11,0x20(%rsp) | |
0x00002aaaab11e053: mov %r12,0x18(%rsp) | |
0x00002aaaab11e058: mov %r13,0x10(%rsp) | |
0x00002aaaab11e05d: mov %r14,0x8(%rsp) | |
0x00002aaaab11e062: mov %r15,(%rsp) | |
0x00002aaaab11e066: mov $0x2ae74d5c7980,%rdi ; {external_word} | |
0x00002aaaab11e070: mov $0x2aaaab11e010,%rsi ; {internal_word} | |
0x00002aaaab11e07a: mov %rsp,%rdx | |
0x00002aaaab11e07d: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab11e081: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab11e08b: rex.WB callq *%r10 | |
0x00002aaaab11e08e: hlt | |
0x00002aaaab11e08f: pop %r10 | |
0x00002aaaab11e091: test %rax,%rax | |
0x00002aaaab11e094: jne 0x00002aaaab11e119 | |
0x00002aaaab11e09a: mov %rsp,-0x28(%rsp) | |
0x00002aaaab11e09f: sub $0x80,%rsp | |
0x00002aaaab11e0a6: mov %rax,0x78(%rsp) | |
0x00002aaaab11e0ab: mov %rcx,0x70(%rsp) | |
0x00002aaaab11e0b0: mov %rdx,0x68(%rsp) | |
0x00002aaaab11e0b5: mov %rbx,0x60(%rsp) | |
0x00002aaaab11e0ba: mov %rbp,0x50(%rsp) | |
0x00002aaaab11e0bf: mov %rsi,0x48(%rsp) | |
0x00002aaaab11e0c4: mov %rdi,0x40(%rsp) | |
0x00002aaaab11e0c9: mov %r8,0x38(%rsp) | |
0x00002aaaab11e0ce: mov %r9,0x30(%rsp) | |
0x00002aaaab11e0d3: mov %r10,0x28(%rsp) | |
0x00002aaaab11e0d8: mov %r11,0x20(%rsp) | |
0x00002aaaab11e0dd: mov %r12,0x18(%rsp) | |
0x00002aaaab11e0e2: mov %r13,0x10(%rsp) | |
0x00002aaaab11e0e7: mov %r14,0x8(%rsp) | |
0x00002aaaab11e0ec: mov %r15,(%rsp) | |
0x00002aaaab11e0f0: mov $0x2ae74d5c79c0,%rdi ; {external_word} | |
0x00002aaaab11e0fa: mov $0x2aaaab11e09a,%rsi ; {internal_word} | |
0x00002aaaab11e104: mov %rsp,%rdx | |
0x00002aaaab11e107: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab11e10b: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab11e115: rex.WB callq *%r10 | |
0x00002aaaab11e118: hlt | |
0x00002aaaab11e119: mov %rax,%r11 | |
0x00002aaaab11e11c: mov %r11d,0x10(%rbp) | |
0x00002aaaab11e120: shr $0x9,%r10 | |
0x00002aaaab11e124: mov $0x2aaaadac4000,%r11 | |
0x00002aaaab11e12e: mov %r12b,(%r11,%r10,1) ;*synchronization entry | |
; - java.lang.StringBuilder::<init>@-1 (line 68) | |
0x00002aaaab11e132: add $0x10,%rsp | |
0x00002aaaab11e136: pop %rbp | |
0x00002aaaab11e137: test %eax,-0x42613d(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab11e13d: retq | |
;; B4: # B6 B5 <- B1 Freq: 0.000100017 | |
0x00002aaaab11e13e: mov $0x10,%edx | |
0x00002aaaab11e143: mov $0xc4200608,%rsi ; {oop({type array char})} | |
0x00002aaaab11e14d: nop | |
0x00002aaaab11e14e: nop | |
0x00002aaaab11e14f: callq 0x00002aaaab118220 ; OopMap{rbp=Oop off=468} | |
;*newarray | |
; - java.lang.AbstractStringBuilder::<init>@6 (line 45) | |
; - java.lang.StringBuilder::<init>@3 (line 68) | |
; {runtime_call} | |
;; B5: # B3 <- B4 Freq: 0.000100015 | |
0x00002aaaab11e154: jmpq 0x00002aaaab11dff8 ;*newarray | |
; - java.lang.AbstractStringBuilder::<init>@6 (line 45) | |
; - java.lang.StringBuilder::<init>@3 (line 68) | |
;; B6: # N80 <- B4 Freq: 1.00017e-09 | |
0x00002aaaab11e159: mov %rax,%rsi | |
0x00002aaaab11e15c: add $0x10,%rsp | |
0x00002aaaab11e160: pop %rbp | |
0x00002aaaab11e161: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab11e166: hlt | |
0x00002aaaab11e167: hlt | |
0x00002aaaab11e168: hlt | |
0x00002aaaab11e169: hlt | |
0x00002aaaab11e16a: hlt | |
0x00002aaaab11e16b: hlt | |
0x00002aaaab11e16c: hlt | |
0x00002aaaab11e16d: hlt | |
0x00002aaaab11e16e: hlt | |
0x00002aaaab11e16f: hlt | |
0x00002aaaab11e170: hlt | |
0x00002aaaab11e171: hlt | |
0x00002aaaab11e172: hlt | |
0x00002aaaab11e173: hlt | |
0x00002aaaab11e174: hlt | |
0x00002aaaab11e175: hlt | |
0x00002aaaab11e176: hlt | |
0x00002aaaab11e177: hlt | |
0x00002aaaab11e178: hlt | |
0x00002aaaab11e179: hlt | |
0x00002aaaab11e17a: hlt | |
0x00002aaaab11e17b: hlt | |
0x00002aaaab11e17c: hlt | |
0x00002aaaab11e17d: hlt | |
0x00002aaaab11e17e: hlt | |
0x00002aaaab11e17f: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x00002aaaab11e180: jmpq 0x00002aaaab101c20 ; {no_reloc} | |
[Deopt Handler Code] | |
0x00002aaaab11e185: callq 0x00002aaaab11e18a | |
0x00002aaaab11e18a: subq $0x5,(%rsp) | |
0x00002aaaab11e18f: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab11e194: int3 | |
0x00002aaaab11e195: int3 | |
0x00002aaaab11e196: int3 | |
0x00002aaaab11e197: int3 | |
730 17 Test::alpha (23 bytes) | |
Decoding compiled method 0x00002aaaab121010: | |
Code: | |
[Entry Point] | |
[Verified Entry Point] | |
[Constants] | |
# {method} 'alpha' '(Ljava/lang/String;IC)Ljava/lang/String;' in 'Test' | |
# parm0: rsi:rsi = 'java/lang/String' | |
# parm1: rdx = int | |
# parm2: rcx = char | |
# [sp+0x40] (sp of caller) | |
;; N1: # B1 <- B25 B38 B34 Freq: 1 | |
;; B1: # B35 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab1211a0: mov %eax,-0x8000(%rsp) | |
0x00002aaaab1211a7: push %rbp | |
0x00002aaaab1211a8: sub $0x30,%rsp ;*synchronization entry | |
; - Test::alpha@-1 (line 5) | |
0x00002aaaab1211ac: mov %ecx,(%rsp) | |
0x00002aaaab1211af: mov %rsi,%rcx | |
0x00002aaaab1211b2: test %rsi,%rsi | |
0x00002aaaab1211b5: jne 0x00002aaaab1215ad | |
;; B2: # B3 <- B1 Freq: 0.999999 | |
0x00002aaaab1211bb: mov $0xedc02c48,%r8 ; {oop("null")} | |
;; B3: # B26 B4 <- B35 B2 Freq: 1 | |
0x00002aaaab1211c5: mov %edx,%r11d | |
0x00002aaaab1211c8: neg %r11d | |
0x00002aaaab1211cb: mov %r11d,0x1c(%rsp) | |
0x00002aaaab1211d0: cmp $0x80000000,%edx | |
0x00002aaaab1211d6: jne 0x00002aaaab121505 | |
;; B4: # B8 <- B3 Freq: 0.5 | |
0x00002aaaab1211dc: xor %ebx,%ebx | |
0x00002aaaab1211de: mov $0xb,%ebp | |
0x00002aaaab1211e3: jmp 0x00002aaaab121202 | |
0x00002aaaab1211e5: nop | |
0x00002aaaab1211e6: nop | |
0x00002aaaab1211e7: nop | |
0x00002aaaab1211e8: nop | |
0x00002aaaab1211e9: nop | |
0x00002aaaab1211ea: nop | |
0x00002aaaab1211eb: nop | |
0x00002aaaab1211ec: nop | |
0x00002aaaab1211ed: nop | |
0x00002aaaab1211ee: nop | |
0x00002aaaab1211ef: nop | |
;; B5: # B6 <- B6 top-of-loop Freq: 500000 | |
0x00002aaaab1211f0: inc %r11d | |
;; B6: # B5 B7 <- B28 B5 Loop: B6-B5 inner Freq: 500000 | |
0x00002aaaab1211f3: mov 0x10(%rdi,%r11,4),%r9d | |
0x00002aaaab1211f8: cmp %r9d,%r10d | |
0x00002aaaab1211fb: jg 0x00002aaaab1211f0 | |
;; B7: # B8 <- B6 Freq: 0.5 | |
0x00002aaaab1211fd: add %r11d,%ebp | |
0x00002aaaab121200: inc %ebp | |
;; B8: # B34 B9 <- B4 B7 Freq: 1 | |
0x00002aaaab121202: mov %ebp,%r9d | |
0x00002aaaab121205: add 0x14(%r8),%r9d | |
0x00002aaaab121209: test %r9d,%r9d | |
0x00002aaaab12120c: jl 0x00002aaaab12158f | |
;; B9: # B34 B10 <- B8 Freq: 0.999999 | |
0x00002aaaab121212: mov %r9d,%r10d | |
0x00002aaaab121215: inc %r10d | |
0x00002aaaab121218: test %r10d,%r10d | |
0x00002aaaab12121b: jl 0x00002aaaab12158f | |
;; B10: # B32 B11 <- B9 Freq: 0.999998 | |
0x00002aaaab121221: cmp $0x80000,%r10d | |
0x00002aaaab121228: ja 0x00002aaaab12154e | |
;; B11: # B32 B12 <- B10 Freq: 0.999997 | |
0x00002aaaab12122e: mov 0x70(%r15),%r14 | |
0x00002aaaab121232: movslq %r9d,%r11 | |
0x00002aaaab121235: shl %r11 | |
0x00002aaaab121238: add $0x19,%r11 | |
0x00002aaaab12123c: and $0xfffffffffffffff8,%r11 | |
0x00002aaaab121240: mov %r14,%r9 | |
0x00002aaaab121243: add %r11,%r9 | |
0x00002aaaab121246: cmp 0x80(%r15),%r9 | |
0x00002aaaab12124d: jae 0x00002aaaab12154e | |
;; B12: # B13 <- B11 Freq: 0.999897 | |
0x00002aaaab121253: mov %r9,0x70(%r15) | |
0x00002aaaab121257: prefetchnta 0x100(%r9) | |
0x00002aaaab12125f: movq $0x1,(%r14) | |
0x00002aaaab121266: prefetchnta 0x140(%r9) | |
0x00002aaaab12126e: movl $0xc4200608,0x8(%r14) ; {oop({type array char})} | |
0x00002aaaab121276: mov %r10d,0xc(%r14) | |
0x00002aaaab12127a: prefetchnta 0x180(%r9) | |
0x00002aaaab121282: mov %rcx,0x8(%rsp) | |
0x00002aaaab121287: mov %edx,0x4(%rsp) | |
0x00002aaaab12128b: mov %r10d,0x10(%rsp) | |
;; B13: # B16 B14 <- B33 B12 Freq: 0.999998 | |
0x00002aaaab121290: mov 0x14(%r8),%r13d | |
0x00002aaaab121294: mov %r14,%rsi | |
0x00002aaaab121297: add $0x10,%rsi | |
0x00002aaaab12129b: add %r13d,%ebp | |
0x00002aaaab12129e: mov 0xc(%r8),%r11d | |
0x00002aaaab1212a2: mov 0x10(%r8),%r10d | |
0x00002aaaab1212a6: movslq %r13d,%rdx | |
0x00002aaaab1212a9: mov %r11,%r8 | |
0x00002aaaab1212ac: lea 0x10(%r11,%r10,2),%rdi | |
0x00002aaaab1212b1: mov $0x2aaaab0fccc0,%r10 | |
0x00002aaaab1212bb: callq *%r10 | |
0x00002aaaab1212be: mov 0x4(%rsp),%r10d | |
0x00002aaaab1212c3: cmp $0x80000000,%r10d | |
0x00002aaaab1212ca: je 0x00002aaaab1212e9 | |
;; B14: # B17 B15 <- B13 Freq: 0.499999 | |
0x00002aaaab1212cc: mov 0x4(%rsp),%edi | |
0x00002aaaab1212d0: test %r10d,%r10d | |
0x00002aaaab1212d3: jl 0x00002aaaab121314 | |
;; B15: # B18 <- B14 Freq: 0.249999 | |
0x00002aaaab1212d5: mov %rax,-0x8(%rsp) | |
0x00002aaaab1212da: mov 0x4(%rsp),%eax | |
0x00002aaaab1212de: mov %eax,0x1c(%rsp) | |
0x00002aaaab1212e2: mov -0x8(%rsp),%rax | |
0x00002aaaab1212e7: jmp 0x00002aaaab121319 | |
;; B16: # B23 <- B13 Freq: 0.499999 | |
0x00002aaaab1212e9: lea 0x10(%r14,%r13,2),%rsi | |
0x00002aaaab1212ee: mov $0xb,%edx | |
0x00002aaaab1212f3: mov $0xedc02ca0,%rdi ; {oop([C)} | |
0x00002aaaab1212fd: add $0x10,%rdi | |
0x00002aaaab121301: mov $0x2aaaab0fccc0,%r10 | |
0x00002aaaab12130b: callq *%r10 | |
0x00002aaaab12130e: mov 0x4(%rsp),%edi | |
0x00002aaaab121312: jmp 0x00002aaaab12137a | |
;; B17: # B18 <- B14 Freq: 0.249999 | |
0x00002aaaab121314: mov $0x2d,%ebx | |
;; B18: # B19 <- B17 B15 Freq: 0.499999 | |
0x00002aaaab121319: mov %ebp,%r10d | |
;; B19: # B21 B20 <- B18 B20 Loop: B19-B20 inner Freq: 0.999998 | |
0x00002aaaab12131c: mov 0x1c(%rsp),%r8d | |
0x00002aaaab121321: sar $0x1f,%r8d | |
0x00002aaaab121325: movslq 0x1c(%rsp),%r11 | |
0x00002aaaab12132a: imul $0x66666667,%r11,%r11 | |
0x00002aaaab121331: sar $0x22,%r11 | |
0x00002aaaab121335: mov %r11d,%r11d | |
0x00002aaaab121338: mov %r11d,%ecx | |
0x00002aaaab12133b: sub %r8d,%ecx | |
0x00002aaaab12133e: mov %ecx,%r9d | |
0x00002aaaab121341: shl $0x3,%r9d | |
0x00002aaaab121345: mov %ecx,%esi | |
0x00002aaaab121347: shl %esi | |
0x00002aaaab121349: add %r9d,%esi | |
0x00002aaaab12134c: mov 0x1c(%rsp),%r9d | |
0x00002aaaab121351: sub %esi,%r9d | |
0x00002aaaab121354: add $0x30,%r9d | |
0x00002aaaab121358: mov %r9w,0xe(%r14,%r10,2) | |
0x00002aaaab12135e: cmp %r8d,%r11d | |
0x00002aaaab121361: je 0x00002aaaab12136c | |
;; B20: # B19 <- B19 Freq: 0.499999 | |
0x00002aaaab121363: dec %r10d | |
0x00002aaaab121366: mov %ecx,0x1c(%rsp) | |
0x00002aaaab12136a: jmp 0x00002aaaab12131c | |
;; B21: # B23 B22 <- B19 Freq: 0.499999 | |
0x00002aaaab12136c: test %ebx,%ebx | |
0x00002aaaab12136e: je 0x00002aaaab12137a | |
;; B22: # B23 <- B21 Freq: 0.249999 | |
0x00002aaaab121370: add $0xfffffffffffffffe,%r10d | |
0x00002aaaab121374: mov %bx,0x10(%r14,%r10,2) | |
;; B23: # B30 B24 <- B22 B21 B16 Freq: 0.999998 | |
0x00002aaaab12137a: mov (%rsp),%r8d | |
0x00002aaaab12137e: mov %r8w,0x10(%r14,%rbp,2) | |
0x00002aaaab121384: mov 0x70(%r15),%rax | |
0x00002aaaab121388: mov %rax,%r10 | |
0x00002aaaab12138b: add $0x20,%r10 | |
0x00002aaaab12138f: cmp 0x80(%r15),%r10 | |
0x00002aaaab121396: jae 0x00002aaaab12152c | |
;; B24: # B25 <- B23 Freq: 0.999898 | |
0x00002aaaab12139c: mov %r10,0x70(%r15) | |
0x00002aaaab1213a0: prefetchnta 0x100(%r10) | |
0x00002aaaab1213a8: mov $0xc420ae88,%r11d ; {oop('java/lang/String')} | |
0x00002aaaab1213ae: mov 0xb0(%r11),%r10 | |
0x00002aaaab1213b5: mov %r10,(%rax) | |
0x00002aaaab1213b8: movl $0xc420ae88,0x8(%rax) ; {oop('java/lang/String')} | |
0x00002aaaab1213bf: mov %r12d,0xc(%rax) | |
0x00002aaaab1213c3: mov %r12,0x10(%rax) | |
0x00002aaaab1213c7: mov %r12,0x18(%rax) | |
;; B25: # N1 <- B31 B24 Freq: 0.999998 | |
0x00002aaaab1213cb: mov 0x10(%rsp),%r10d | |
0x00002aaaab1213d0: mov %r10d,0x14(%rax) | |
0x00002aaaab1213d4: push %r10 | |
0x00002aaaab1213d6: mov $0x2ae74dadc700,%r10 ; {external_word} | |
0x00002aaaab1213e0: cmp (%r10),%r12 | |
0x00002aaaab1213e3: je 0x00002aaaab121468 | |
0x00002aaaab1213e9: mov %rsp,-0x28(%rsp) | |
0x00002aaaab1213ee: sub $0x80,%rsp | |
0x00002aaaab1213f5: mov %rax,0x78(%rsp) | |
0x00002aaaab1213fa: mov %rcx,0x70(%rsp) | |
0x00002aaaab1213ff: mov %rdx,0x68(%rsp) | |
0x00002aaaab121404: mov %rbx,0x60(%rsp) | |
0x00002aaaab121409: mov %rbp,0x50(%rsp) | |
0x00002aaaab12140e: mov %rsi,0x48(%rsp) | |
0x00002aaaab121413: mov %rdi,0x40(%rsp) | |
0x00002aaaab121418: mov %r8,0x38(%rsp) | |
0x00002aaaab12141d: mov %r9,0x30(%rsp) | |
0x00002aaaab121422: mov %r10,0x28(%rsp) | |
0x00002aaaab121427: mov %r11,0x20(%rsp) | |
0x00002aaaab12142c: mov %r12,0x18(%rsp) | |
0x00002aaaab121431: mov %r13,0x10(%rsp) | |
0x00002aaaab121436: mov %r14,0x8(%rsp) | |
0x00002aaaab12143b: mov %r15,(%rsp) | |
0x00002aaaab12143f: mov $0x2ae74d5c7980,%rdi ; {external_word} | |
0x00002aaaab121449: mov $0x2aaaab1213e9,%rsi ; {internal_word} | |
0x00002aaaab121453: mov %rsp,%rdx | |
0x00002aaaab121456: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab12145a: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab121464: rex.WB callq *%r10 | |
0x00002aaaab121467: hlt | |
0x00002aaaab121468: pop %r10 | |
0x00002aaaab12146a: test %r14,%r14 | |
0x00002aaaab12146d: jne 0x00002aaaab1214f2 | |
0x00002aaaab121473: mov %rsp,-0x28(%rsp) | |
0x00002aaaab121478: sub $0x80,%rsp | |
0x00002aaaab12147f: mov %rax,0x78(%rsp) | |
0x00002aaaab121484: mov %rcx,0x70(%rsp) | |
0x00002aaaab121489: mov %rdx,0x68(%rsp) | |
0x00002aaaab12148e: mov %rbx,0x60(%rsp) | |
0x00002aaaab121493: mov %rbp,0x50(%rsp) | |
0x00002aaaab121498: mov %rsi,0x48(%rsp) | |
0x00002aaaab12149d: mov %rdi,0x40(%rsp) | |
0x00002aaaab1214a2: mov %r8,0x38(%rsp) | |
0x00002aaaab1214a7: mov %r9,0x30(%rsp) | |
0x00002aaaab1214ac: mov %r10,0x28(%rsp) | |
0x00002aaaab1214b1: mov %r11,0x20(%rsp) | |
0x00002aaaab1214b6: mov %r12,0x18(%rsp) | |
0x00002aaaab1214bb: mov %r13,0x10(%rsp) | |
0x00002aaaab1214c0: mov %r14,0x8(%rsp) | |
0x00002aaaab1214c5: mov %r15,(%rsp) | |
0x00002aaaab1214c9: mov $0x2ae74d5c79c0,%rdi ; {external_word} | |
0x00002aaaab1214d3: mov $0x2aaaab121473,%rsi ; {internal_word} | |
0x00002aaaab1214dd: mov %rsp,%rdx | |
0x00002aaaab1214e0: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab1214e4: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab1214ee: rex.WB callq *%r10 | |
0x00002aaaab1214f1: hlt | |
0x00002aaaab1214f2: mov %r14,%r10 | |
0x00002aaaab1214f5: mov %r10d,0xc(%rax) | |
0x00002aaaab1214f9: add $0x30,%rsp | |
0x00002aaaab1214fd: pop %rbp | |
0x00002aaaab1214fe: test %eax,-0x429504(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab121504: retq | |
;; B26: # B29 B27 <- B3 Freq: 0.5 | |
0x00002aaaab121505: test %edx,%edx | |
0x00002aaaab121507: jge 0x00002aaaab121525 | |
;; B27: # B28 <- B26 Freq: 0.25 | |
0x00002aaaab121509: mov %r11d,%r10d | |
0x00002aaaab12150c: mov $0x1,%ebp | |
;; B28: # B6 <- B27 B29 Freq: 0.5 | |
0x00002aaaab121511: mov $0xedc04878,%rdi ; {oop([I)} | |
0x00002aaaab12151b: xor %r11d,%r11d | |
0x00002aaaab12151e: xor %ebx,%ebx | |
0x00002aaaab121520: jmpq 0x00002aaaab1211f3 | |
;; B29: # B28 <- B26 Freq: 0.25 | |
0x00002aaaab121525: mov %edx,%r10d | |
0x00002aaaab121528: xor %ebp,%ebp | |
0x00002aaaab12152a: jmp 0x00002aaaab121511 | |
;; B30: # B37 B31 <- B23 Freq: 0.000100016 | |
0x00002aaaab12152c: mov %r14,0x18(%rsp) | |
0x00002aaaab121531: mov %edi,%ebp | |
0x00002aaaab121533: mov $0xc420ae88,%rsi ; {oop('java/lang/String')} | |
0x00002aaaab12153d: nop | |
0x00002aaaab12153e: nop | |
0x00002aaaab12153f: callq 0x00002aaaab1182e0 ; OopMap{[8]=Oop [24]=Oop off=932} | |
;*new ; - Test::alpha@0 (line 5) | |
; {runtime_call} | |
;; B31: # B25 <- B30 Freq: 0.000100014 | |
0x00002aaaab121544: mov 0x18(%rsp),%r14 | |
0x00002aaaab121549: jmpq 0x00002aaaab1213cb | |
;; B32: # B36 B33 <- B10 B11 Freq: 0.00010103 | |
0x00002aaaab12154e: mov %ebp,0x18(%rsp) | |
0x00002aaaab121552: mov %ebx,0x14(%rsp) | |
0x00002aaaab121556: mov %r8,%rbp | |
0x00002aaaab121559: mov %r10d,0x10(%rsp) | |
0x00002aaaab12155e: mov %edx,0x4(%rsp) | |
0x00002aaaab121562: mov %rcx,0x8(%rsp) | |
0x00002aaaab121567: mov $0xc4200608,%rsi ; {oop({type array char})} | |
0x00002aaaab121571: mov %r10d,%edx | |
0x00002aaaab121574: nop | |
0x00002aaaab121575: nop | |
0x00002aaaab121576: nop | |
0x00002aaaab121577: callq 0x00002aaaab118220 ; OopMap{rbp=Oop [8]=Oop off=988} | |
;*new ; - Test::alpha@0 (line 5) | |
; {runtime_call} | |
;; B33: # B13 <- B32 Freq: 0.000101028 | |
0x00002aaaab12157c: mov %rax,%r14 | |
0x00002aaaab12157f: mov %rbp,%r8 | |
0x00002aaaab121582: mov 0x14(%rsp),%ebx | |
0x00002aaaab121586: mov 0x18(%rsp),%ebp | |
0x00002aaaab12158a: jmpq 0x00002aaaab121290 | |
;; B34: # N1 <- B8 B9 Freq: 2e-06 | |
0x00002aaaab12158f: mov $0xffffffcc,%esi | |
0x00002aaaab121594: mov %rcx,%rbp | |
0x00002aaaab121597: mov %edx,0x4(%rsp) | |
0x00002aaaab12159b: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop off=1024} | |
;*new ; - Test::alpha@0 (line 5) | |
; {runtime_call} | |
0x00002aaaab1215a0: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab1215aa: rex.WB callq *%r10 | |
;; B35: # B3 <- B1 Freq: 1e-06 | |
0x00002aaaab1215ad: mov %rsi,%r8 | |
0x00002aaaab1215b0: jmpq 0x00002aaaab1211c5 | |
;; B36: # B38 <- B32 Freq: 1.0103e-09 | |
0x00002aaaab1215b5: mov %rax,%rsi | |
0x00002aaaab1215b8: jmp 0x00002aaaab1215bd | |
;; B37: # B38 <- B30 Freq: 1.00016e-09 | |
0x00002aaaab1215ba: mov %rax,%rsi ;*invokespecial <init> | |
; - Test::alpha@4 (line 5) | |
;; B38: # N1 <- B36 B37 Freq: 2.01046e-09 | |
0x00002aaaab1215bd: add $0x30,%rsp | |
0x00002aaaab1215c1: pop %rbp | |
0x00002aaaab1215c2: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab1215c7: hlt | |
0x00002aaaab1215c8: hlt | |
0x00002aaaab1215c9: hlt | |
0x00002aaaab1215ca: hlt | |
0x00002aaaab1215cb: hlt | |
0x00002aaaab1215cc: hlt | |
0x00002aaaab1215cd: hlt | |
0x00002aaaab1215ce: hlt | |
0x00002aaaab1215cf: hlt | |
0x00002aaaab1215d0: hlt | |
0x00002aaaab1215d1: hlt | |
0x00002aaaab1215d2: hlt | |
0x00002aaaab1215d3: hlt | |
0x00002aaaab1215d4: hlt | |
0x00002aaaab1215d5: hlt | |
0x00002aaaab1215d6: hlt | |
0x00002aaaab1215d7: hlt | |
0x00002aaaab1215d8: hlt | |
0x00002aaaab1215d9: hlt | |
0x00002aaaab1215da: hlt | |
0x00002aaaab1215db: hlt | |
0x00002aaaab1215dc: hlt | |
0x00002aaaab1215dd: hlt | |
0x00002aaaab1215de: hlt | |
0x00002aaaab1215df: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x00002aaaab1215e0: jmpq 0x00002aaaab101c20 ; {no_reloc} | |
[Deopt Handler Code] | |
0x00002aaaab1215e5: callq 0x00002aaaab1215ea | |
0x00002aaaab1215ea: subq $0x5,(%rsp) | |
0x00002aaaab1215ef: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab1215f4: int3 | |
0x00002aaaab1215f5: int3 | |
0x00002aaaab1215f6: int3 | |
0x00002aaaab1215f7: int3 | |
770 18 java.lang.StringBuilder::append (8 bytes) | |
770 19 java.lang.AbstractStringBuilder::append (71 bytes) | |
Decoding compiled method 0x00002aaaab120790: | |
Code: | |
[Entry Point] | |
[Constants] | |
# {method} 'append' '(I)Ljava/lang/StringBuilder;' in 'java/lang/StringBuilder' | |
# this: rsi:rsi = 'java/lang/StringBuilder' | |
# parm0: rdx = int | |
# [sp+0x40] (sp of caller) | |
;; N313: # B1 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab120920: mov 0x8(%rsi),%r10d | |
0x00002aaaab120924: cmp %r10,%rax | |
0x00002aaaab120927: jne 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab12092d: nop | |
0x00002aaaab12092e: nop | |
0x00002aaaab12092f: nop | |
[Verified Entry Point] | |
;; B1: # B28 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab120930: mov %eax,-0x8000(%rsp) | |
0x00002aaaab120937: push %rbp | |
0x00002aaaab120938: sub $0x30,%rsp ;*synchronization entry | |
; - java.lang.StringBuilder::append@-1 (line 212) | |
0x00002aaaab12093c: mov %rsi,(%rsp) | |
0x00002aaaab120940: mov %edx,0x10(%rsp) | |
0x00002aaaab120944: cmp $0x80000000,%edx | |
0x00002aaaab12094a: je 0x00002aaaab120aec ;*if_icmpne | |
; - java.lang.AbstractStringBuilder::append@3 (line 589) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B2: # B30 B3 <- B1 Freq: 1 | |
0x00002aaaab120950: test %edx,%edx | |
0x00002aaaab120952: jl 0x00002aaaab120b02 ;*ifge | |
; - java.lang.AbstractStringBuilder::append@16 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B3: # B22 B4 <- B2 Freq: 0.999999 | |
0x00002aaaab120958: mov $0xee9b1d90,%r10 ; {oop(a 'java/lang/Class' = 'java/lang/AbstractStringBuilder')} | |
0x00002aaaab120962: mov 0x70(%r10),%ebp ;*getstatic sizeTable | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@3 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
0x00002aaaab120966: mov 0x10(%rbp),%r10d | |
0x00002aaaab12096a: cmp %r10d,%edx | |
0x00002aaaab12096d: jle 0x00002aaaab120a0b | |
;; B4: # B21 B5 <- B3 Freq: 0.499954 | |
0x00002aaaab120973: mov 0x14(%rbp),%r10d | |
0x00002aaaab120977: cmp %r10d,%edx | |
0x00002aaaab12097a: jle 0x00002aaaab120a04 | |
;; B5: # B20 B6 <- B4 Freq: 0.249955 | |
0x00002aaaab120980: mov 0x18(%rbp),%r10d | |
0x00002aaaab120984: cmp %r10d,%edx | |
0x00002aaaab120987: jle 0x00002aaaab1209fd | |
;; B6: # B19 B7 <- B5 Freq: 0.124966 | |
0x00002aaaab120989: mov 0x1c(%rbp),%r10d | |
0x00002aaaab12098d: cmp %r10d,%edx | |
0x00002aaaab120990: jle 0x00002aaaab1209f6 | |
;; B7: # B18 B8 <- B6 Freq: 0.0624774 | |
0x00002aaaab120992: mov 0x20(%rbp),%r10d | |
0x00002aaaab120996: cmp %r10d,%edx | |
0x00002aaaab120999: jle 0x00002aaaab1209ef ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B8: # B17 B9 <- B7 Freq: 0.0312359 | |
0x00002aaaab12099b: mov 0x24(%rbp),%r10d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
0x00002aaaab12099f: cmp %r10d,%edx | |
0x00002aaaab1209a2: jle 0x00002aaaab1209e8 ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B9: # B16 B10 <- B8 Freq: 0.0156165 | |
0x00002aaaab1209a4: mov 0x28(%rbp),%r10d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
0x00002aaaab1209a8: cmp %r10d,%edx | |
0x00002aaaab1209ab: jle 0x00002aaaab1209e1 ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B10: # B15 B11 <- B9 Freq: 0.00780756 | |
0x00002aaaab1209ad: mov 0x2c(%rbp),%r10d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
0x00002aaaab1209b1: cmp %r10d,%edx | |
0x00002aaaab1209b4: jle 0x00002aaaab1209da ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B11: # B14 B12 <- B10 Freq: 0.00390343 | |
0x00002aaaab1209b6: mov 0x30(%rbp),%r10d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
0x00002aaaab1209ba: cmp %r10d,%edx | |
0x00002aaaab1209bd: jle 0x00002aaaab1209d3 ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B12: # B34 B13 <- B11 Freq: 0.00195154 | |
0x00002aaaab1209bf: mov 0x34(%rbp),%r10d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
0x00002aaaab1209c3: cmp %r10d,%edx | |
0x00002aaaab1209c6: jg 0x00002aaaab120b2d ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B13: # B23 <- B12 Freq: 0.00195154 | |
0x00002aaaab1209cc: mov $0xa,%eax | |
0x00002aaaab1209d1: jmp 0x00002aaaab120a10 | |
;; B14: # B23 <- B11 Freq: 0.00195189 | |
0x00002aaaab1209d3: mov $0x9,%eax | |
0x00002aaaab1209d8: jmp 0x00002aaaab120a10 | |
;; B15: # B23 <- B10 Freq: 0.00390413 | |
0x00002aaaab1209da: mov $0x8,%eax | |
0x00002aaaab1209df: jmp 0x00002aaaab120a10 | |
;; B16: # B23 <- B9 Freq: 0.00780897 | |
0x00002aaaab1209e1: mov $0x7,%eax | |
0x00002aaaab1209e6: jmp 0x00002aaaab120a10 | |
;; B17: # B23 <- B8 Freq: 0.0156193 | |
0x00002aaaab1209e8: mov $0x6,%eax | |
0x00002aaaab1209ed: jmp 0x00002aaaab120a10 | |
;; B18: # B23 <- B7 Freq: 0.0312415 | |
0x00002aaaab1209ef: mov $0x5,%eax | |
0x00002aaaab1209f4: jmp 0x00002aaaab120a10 | |
;; B19: # B23 <- B6 Freq: 0.0624887 | |
0x00002aaaab1209f6: mov $0x4,%eax | |
0x00002aaaab1209fb: jmp 0x00002aaaab120a10 | |
;; B20: # B23 <- B5 Freq: 0.124989 | |
0x00002aaaab1209fd: mov $0x3,%eax | |
0x00002aaaab120a02: jmp 0x00002aaaab120a10 | |
;; B21: # B23 <- B4 Freq: 0.25 | |
0x00002aaaab120a04: mov $0x2,%eax | |
0x00002aaaab120a09: jmp 0x00002aaaab120a10 | |
;; B22: # B23 <- B3 Freq: 0.500045 | |
0x00002aaaab120a0b: mov $0x1,%eax ;*istore_2 | |
; - java.lang.AbstractStringBuilder::append@33 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B23: # B35 B24 <- B21 B20 B16 B18 B14 B19 B15 B17 B13 B22 B31 Freq: 1 | |
0x00002aaaab120a10: mov (%rsp),%rbp | |
0x00002aaaab120a14: mov 0x10(%rbp),%r11d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@43 (line 596) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
0x00002aaaab120a18: mov 0xc(%r11),%r10d ; implicit exception: dispatches to 0x00002aaaab120b45 | |
;; B24: # B32 B25 <- B23 Freq: 0.999999 | |
0x00002aaaab120a1c: add 0xc(%rbp),%eax ;*iadd | |
; - java.lang.AbstractStringBuilder::append@39 (line 595) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
0x00002aaaab120a1f: mov %eax,0xc(%rsp) | |
0x00002aaaab120a23: cmp %r10d,%eax | |
0x00002aaaab120a26: jg 0x00002aaaab120b17 | |
;; B25: # B39 B26 <- B33 B24 Freq: 0.999999 | |
0x00002aaaab120a2c: mov %r11,%rcx | |
0x00002aaaab120a2f: push %r10 | |
0x00002aaaab120a31: mov $0x2ae74dadc700,%r10 ; {external_word} | |
0x00002aaaab120a3b: cmp (%r10),%r12 | |
0x00002aaaab120a3e: je 0x00002aaaab120ac3 | |
0x00002aaaab120a44: mov %rsp,-0x28(%rsp) | |
0x00002aaaab120a49: sub $0x80,%rsp | |
0x00002aaaab120a50: mov %rax,0x78(%rsp) | |
0x00002aaaab120a55: mov %rcx,0x70(%rsp) | |
0x00002aaaab120a5a: mov %rdx,0x68(%rsp) | |
0x00002aaaab120a5f: mov %rbx,0x60(%rsp) | |
0x00002aaaab120a64: mov %rbp,0x50(%rsp) | |
0x00002aaaab120a69: mov %rsi,0x48(%rsp) | |
0x00002aaaab120a6e: mov %rdi,0x40(%rsp) | |
0x00002aaaab120a73: mov %r8,0x38(%rsp) | |
0x00002aaaab120a78: mov %r9,0x30(%rsp) | |
0x00002aaaab120a7d: mov %r10,0x28(%rsp) | |
0x00002aaaab120a82: mov %r11,0x20(%rsp) | |
0x00002aaaab120a87: mov %r12,0x18(%rsp) | |
0x00002aaaab120a8c: mov %r13,0x10(%rsp) | |
0x00002aaaab120a91: mov %r14,0x8(%rsp) | |
0x00002aaaab120a96: mov %r15,(%rsp) | |
0x00002aaaab120a9a: mov $0x2ae74d5c8228,%rdi ; {external_word} | |
0x00002aaaab120aa4: mov $0x2aaaab120a44,%rsi ; {internal_word} | |
0x00002aaaab120aae: mov %rsp,%rdx | |
0x00002aaaab120ab1: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab120ab5: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab120abf: rex.WB callq *%r10 | |
0x00002aaaab120ac2: hlt | |
0x00002aaaab120ac3: pop %r10 ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@58 (line 598) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
0x00002aaaab120ac5: mov 0x10(%rsp),%esi | |
0x00002aaaab120ac9: mov 0xc(%rsp),%edx | |
0x00002aaaab120acd: nop | |
0x00002aaaab120ace: nop | |
0x00002aaaab120acf: callq 0x00002aaaab0f2f20 ; OopMap{rbp=Oop off=436} | |
;*invokestatic getChars | |
; - java.lang.AbstractStringBuilder::append@61 (line 598) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
; {static_call} | |
;; B26: # B27 <- B25 Freq: 0.999978 | |
0x00002aaaab120ad4: mov 0xc(%rsp),%r10d | |
0x00002aaaab120ad9: mov %r10d,0xc(%rbp) ;*synchronization entry | |
; - java.lang.StringBuilder::append@-1 (line 212) | |
;; B27: # N313 <- B29 B26 Freq: 0.999979 | |
0x00002aaaab120add: mov %rbp,%rax | |
0x00002aaaab120ae0: add $0x30,%rsp | |
0x00002aaaab120ae4: pop %rbp | |
0x00002aaaab120ae5: test %eax,-0x428aeb(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab120aeb: retq | |
;; B28: # B38 B29 <- B1 Freq: 4.76837e-07 | |
0x00002aaaab120aec: mov $0xee9b1918,%rdx ; {oop("-2147483648")} | |
0x00002aaaab120af6: nop | |
0x00002aaaab120af7: callq 0x00002aaaab0f2b20 ; OopMap{[0]=Oop off=476} | |
;*invokevirtual append | |
; - java.lang.StringBuilder::append@2 (line 55) | |
; - java.lang.AbstractStringBuilder::append@9 (line 590) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
; {optimized virtual_call} | |
;; B29: # B27 <- B28 Freq: 4.76828e-07 | |
0x00002aaaab120afc: mov (%rsp),%rbp | |
0x00002aaaab120b00: jmp 0x00002aaaab120add | |
;; B30: # B37 B31 <- B2 Freq: 4.76837e-07 | |
0x00002aaaab120b02: mov %edx,%esi | |
0x00002aaaab120b04: neg %esi ;*ineg | |
; - java.lang.AbstractStringBuilder::append@20 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
0x00002aaaab120b06: mov %edx,%ebp | |
0x00002aaaab120b08: nop | |
0x00002aaaab120b09: nop | |
0x00002aaaab120b0a: nop | |
0x00002aaaab120b0b: callq 0x00002aaaab0f2f20 ; OopMap{[0]=Oop off=496} | |
;*invokestatic stringSizeOfInt | |
; - java.lang.AbstractStringBuilder::append@21 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
; {static_call} | |
;; B31: # B23 <- B30 Freq: 4.76827e-07 | |
0x00002aaaab120b10: inc %eax ;*iadd | |
; - java.lang.AbstractStringBuilder::append@25 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
0x00002aaaab120b12: jmpq 0x00002aaaab120a10 | |
;; B32: # B36 B33 <- B24 Freq: 4.76836e-07 | |
0x00002aaaab120b17: mov %rbp,%rsi | |
0x00002aaaab120b1a: mov %eax,%edx | |
0x00002aaaab120b1c: nop | |
0x00002aaaab120b1d: nop | |
0x00002aaaab120b1e: nop | |
0x00002aaaab120b1f: callq 0x00002aaaab0f2b20 ; OopMap{rbp=Oop off=516} | |
;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@52 (line 597) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
; {optimized virtual_call} | |
;; B33: # B25 <- B32 Freq: 4.76827e-07 | |
0x00002aaaab120b24: mov 0x10(%rbp),%r11d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@58 (line 598) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
0x00002aaaab120b28: jmpq 0x00002aaaab120a2c | |
;; B34: # N313 <- B12 Freq: 1.97745e-09 | |
0x00002aaaab120b2d: mov $0xffffffe4,%esi | |
0x00002aaaab120b32: nop | |
0x00002aaaab120b33: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=NarrowOop [0]=Oop off=536} | |
;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
; {runtime_call} | |
0x00002aaaab120b38: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab120b42: rex.WB callq *%r10 ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B35: # N313 <- B23 Freq: 1.01328e-06 | |
0x00002aaaab120b45: mov $0xfffffff6,%esi | |
0x00002aaaab120b4a: nop | |
0x00002aaaab120b4b: callq 0x00002aaaab0f3fa0 ; OopMap{off=560} | |
;*arraylength | |
; - java.lang.AbstractStringBuilder::append@46 (line 596) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
; {runtime_call} | |
0x00002aaaab120b50: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab120b5a: rex.WB callq *%r10 ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@52 (line 597) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B36: # B40 <- B32 Freq: 4.76836e-12 | |
0x00002aaaab120b5d: mov %rax,%rsi | |
0x00002aaaab120b60: jmp 0x00002aaaab120b6f ;*invokestatic stringSizeOfInt | |
; - java.lang.AbstractStringBuilder::append@21 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B37: # B40 <- B30 Freq: 4.76837e-12 | |
0x00002aaaab120b62: mov %rax,%rsi | |
0x00002aaaab120b65: jmp 0x00002aaaab120b6f ;*invokevirtual append | |
; - java.lang.StringBuilder::append@2 (line 55) | |
; - java.lang.AbstractStringBuilder::append@9 (line 590) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B38: # B40 <- B28 Freq: 4.76837e-12 | |
0x00002aaaab120b67: mov %rax,%rsi | |
0x00002aaaab120b6a: jmp 0x00002aaaab120b6f ;*invokestatic getChars | |
; - java.lang.AbstractStringBuilder::append@61 (line 598) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B39: # B40 <- B25 Freq: 9.99999e-06 | |
0x00002aaaab120b6c: mov %rax,%rsi ;*invokestatic stringSizeOfInt | |
; - java.lang.AbstractStringBuilder::append@21 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
;; B40: # N313 <- B38 B37 B36 B39 Freq: 1e-05 | |
0x00002aaaab120b6f: add $0x30,%rsp | |
0x00002aaaab120b73: pop %rbp | |
0x00002aaaab120b74: jmpq 0x00002aaaab117a20 ;*iadd | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@13 (line 610) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; - java.lang.StringBuilder::append@2 (line 212) | |
; {runtime_call} | |
0x00002aaaab120b79: hlt | |
0x00002aaaab120b7a: hlt | |
0x00002aaaab120b7b: hlt | |
0x00002aaaab120b7c: hlt | |
0x00002aaaab120b7d: hlt | |
0x00002aaaab120b7e: hlt | |
0x00002aaaab120b7f: hlt | |
[Stub Code] | |
0x00002aaaab120b80: mov $0x0,%rbx ; {no_reloc} | |
0x00002aaaab120b8a: jmpq 0x00002aaaab120b8a ; {runtime_call} | |
0x00002aaaab120b8f: mov $0x0,%rbx ; {static_stub} | |
0x00002aaaab120b99: jmpq 0x00002aaaab120b99 ; {runtime_call} | |
0x00002aaaab120b9e: mov $0x0,%rbx ; {static_stub} | |
0x00002aaaab120ba8: jmpq 0x00002aaaab120ba8 ; {runtime_call} | |
0x00002aaaab120bad: mov $0x0,%rbx ; {static_stub} | |
0x00002aaaab120bb7: jmpq 0x00002aaaab120bb7 ; {runtime_call} | |
[Exception Handler] | |
0x00002aaaab120bbc: jmpq 0x00002aaaab101c20 ; {runtime_call} | |
[Deopt Handler Code] | |
0x00002aaaab120bc1: callq 0x00002aaaab120bc6 | |
0x00002aaaab120bc6: subq $0x5,(%rsp) | |
0x00002aaaab120bcb: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
Decoding compiled method 0x00002aaaab11ff50: | |
Code: | |
[Entry Point] | |
[Constants] | |
# {method} 'append' '(I)Ljava/lang/AbstractStringBuilder;' in 'java/lang/AbstractStringBuilder' | |
# this: rsi:rsi = 'java/lang/AbstractStringBuilder' | |
# parm0: rdx = int | |
# [sp+0x40] (sp of caller) | |
;; N311: # B1 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab1200e0: mov 0x8(%rsi),%r10d | |
0x00002aaaab1200e4: cmp %r10,%rax | |
0x00002aaaab1200e7: jne 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab1200ed: nop | |
0x00002aaaab1200ee: nop | |
0x00002aaaab1200ef: nop | |
[Verified Entry Point] | |
;; B1: # B28 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab1200f0: mov %eax,-0x8000(%rsp) | |
0x00002aaaab1200f7: push %rbp | |
0x00002aaaab1200f8: sub $0x30,%rsp ;*synchronization entry | |
; - java.lang.AbstractStringBuilder::append@-1 (line 589) | |
0x00002aaaab1200fc: mov %rsi,(%rsp) | |
0x00002aaaab120100: mov %edx,0x8(%rsp) | |
0x00002aaaab120104: cmp $0x80000000,%edx | |
0x00002aaaab12010a: je 0x00002aaaab1202ac ;*if_icmpne | |
; - java.lang.AbstractStringBuilder::append@3 (line 589) | |
;; B2: # B30 B3 <- B1 Freq: 1 | |
0x00002aaaab120110: test %edx,%edx | |
0x00002aaaab120112: jl 0x00002aaaab1202ca ;*ifge | |
; - java.lang.AbstractStringBuilder::append@16 (line 593) | |
;; B3: # B22 B4 <- B2 Freq: 0.999999 | |
0x00002aaaab120118: mov $0xef9a1e40,%r10 ; {oop(a 'java/lang/Class' = 'java/lang/AbstractStringBuilder')} | |
0x00002aaaab120122: mov 0x70(%r10),%ebp ;*getstatic sizeTable | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@3 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
0x00002aaaab120126: mov 0x10(%rbp),%r11d | |
0x00002aaaab12012a: cmp %r11d,%edx | |
0x00002aaaab12012d: jle 0x00002aaaab1201cb | |
;; B4: # B21 B5 <- B3 Freq: 0.499954 | |
0x00002aaaab120133: mov 0x14(%rbp),%r11d | |
0x00002aaaab120137: cmp %r11d,%edx | |
0x00002aaaab12013a: jle 0x00002aaaab1201c4 | |
;; B5: # B20 B6 <- B4 Freq: 0.249955 | |
0x00002aaaab120140: mov 0x18(%rbp),%r11d | |
0x00002aaaab120144: cmp %r11d,%edx | |
0x00002aaaab120147: jle 0x00002aaaab1201bd | |
;; B6: # B19 B7 <- B5 Freq: 0.124966 | |
0x00002aaaab120149: mov 0x1c(%rbp),%r11d | |
0x00002aaaab12014d: cmp %r11d,%edx | |
0x00002aaaab120150: jle 0x00002aaaab1201b6 | |
;; B7: # B18 B8 <- B6 Freq: 0.0624774 | |
0x00002aaaab120152: mov 0x20(%rbp),%r11d | |
0x00002aaaab120156: cmp %r11d,%edx | |
0x00002aaaab120159: jle 0x00002aaaab1201af ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
;; B8: # B17 B9 <- B7 Freq: 0.0312359 | |
0x00002aaaab12015b: mov 0x24(%rbp),%r11d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
0x00002aaaab12015f: cmp %r11d,%edx | |
0x00002aaaab120162: jle 0x00002aaaab1201a8 ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
;; B9: # B16 B10 <- B8 Freq: 0.0156165 | |
0x00002aaaab120164: mov 0x28(%rbp),%r11d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
0x00002aaaab120168: cmp %r11d,%edx | |
0x00002aaaab12016b: jle 0x00002aaaab1201a1 ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
;; B10: # B15 B11 <- B9 Freq: 0.00780756 | |
0x00002aaaab12016d: mov 0x2c(%rbp),%r11d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
0x00002aaaab120171: cmp %r11d,%edx | |
0x00002aaaab120174: jle 0x00002aaaab12019a ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
;; B11: # B14 B12 <- B10 Freq: 0.00390343 | |
0x00002aaaab120176: mov 0x30(%rbp),%r11d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
0x00002aaaab12017a: cmp %r11d,%edx | |
0x00002aaaab12017d: jle 0x00002aaaab120193 ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
;; B12: # B34 B13 <- B11 Freq: 0.00195154 | |
0x00002aaaab12017f: mov 0x34(%rbp),%r11d ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
0x00002aaaab120183: cmp %r11d,%edx | |
0x00002aaaab120186: jg 0x00002aaaab1202f9 ;*if_icmpgt | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@8 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
;; B13: # B23 <- B12 Freq: 0.00195154 | |
0x00002aaaab12018c: mov $0xa,%eax | |
0x00002aaaab120191: jmp 0x00002aaaab1201d0 | |
;; B14: # B23 <- B11 Freq: 0.00195189 | |
0x00002aaaab120193: mov $0x9,%eax | |
0x00002aaaab120198: jmp 0x00002aaaab1201d0 | |
;; B15: # B23 <- B10 Freq: 0.00390413 | |
0x00002aaaab12019a: mov $0x8,%eax | |
0x00002aaaab12019f: jmp 0x00002aaaab1201d0 | |
;; B16: # B23 <- B9 Freq: 0.00780897 | |
0x00002aaaab1201a1: mov $0x7,%eax | |
0x00002aaaab1201a6: jmp 0x00002aaaab1201d0 | |
;; B17: # B23 <- B8 Freq: 0.0156193 | |
0x00002aaaab1201a8: mov $0x6,%eax | |
0x00002aaaab1201ad: jmp 0x00002aaaab1201d0 | |
;; B18: # B23 <- B7 Freq: 0.0312415 | |
0x00002aaaab1201af: mov $0x5,%eax | |
0x00002aaaab1201b4: jmp 0x00002aaaab1201d0 | |
;; B19: # B23 <- B6 Freq: 0.0624887 | |
0x00002aaaab1201b6: mov $0x4,%eax | |
0x00002aaaab1201bb: jmp 0x00002aaaab1201d0 | |
;; B20: # B23 <- B5 Freq: 0.124989 | |
0x00002aaaab1201bd: mov $0x3,%eax | |
0x00002aaaab1201c2: jmp 0x00002aaaab1201d0 | |
;; B21: # B23 <- B4 Freq: 0.25 | |
0x00002aaaab1201c4: mov $0x2,%eax | |
0x00002aaaab1201c9: jmp 0x00002aaaab1201d0 | |
;; B22: # B23 <- B3 Freq: 0.500045 | |
0x00002aaaab1201cb: mov $0x1,%eax ;*istore_2 | |
; - java.lang.AbstractStringBuilder::append@33 (line 593) | |
;; B23: # B35 B24 <- B21 B20 B16 B18 B14 B19 B15 B17 B13 B22 B31 Freq: 1 | |
0x00002aaaab1201d0: mov (%rsp),%r10 | |
0x00002aaaab1201d4: mov 0x10(%r10),%r10d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@43 (line 596) | |
0x00002aaaab1201d8: mov 0xc(%r10),%r8d ; implicit exception: dispatches to 0x00002aaaab120311 | |
;; B24: # B32 B25 <- B23 Freq: 0.999999 | |
0x00002aaaab1201dc: mov %eax,%ebp | |
0x00002aaaab1201de: mov (%rsp),%r11 | |
0x00002aaaab1201e2: add 0xc(%r11),%ebp ;*iadd | |
; - java.lang.AbstractStringBuilder::append@39 (line 595) | |
0x00002aaaab1201e6: cmp %r8d,%ebp | |
0x00002aaaab1201e9: jg 0x00002aaaab1202df | |
;; B25: # B39 B26 <- B33 B24 Freq: 0.999999 | |
0x00002aaaab1201ef: mov %r10,%rcx | |
0x00002aaaab1201f2: push %r10 | |
0x00002aaaab1201f4: mov $0x2ae74dadc700,%r10 ; {external_word} | |
0x00002aaaab1201fe: cmp (%r10),%r12 | |
0x00002aaaab120201: je 0x00002aaaab120286 | |
0x00002aaaab120207: mov %rsp,-0x28(%rsp) | |
0x00002aaaab12020c: sub $0x80,%rsp | |
0x00002aaaab120213: mov %rax,0x78(%rsp) | |
0x00002aaaab120218: mov %rcx,0x70(%rsp) | |
0x00002aaaab12021d: mov %rdx,0x68(%rsp) | |
0x00002aaaab120222: mov %rbx,0x60(%rsp) | |
0x00002aaaab120227: mov %rbp,0x50(%rsp) | |
0x00002aaaab12022c: mov %rsi,0x48(%rsp) | |
0x00002aaaab120231: mov %rdi,0x40(%rsp) | |
0x00002aaaab120236: mov %r8,0x38(%rsp) | |
0x00002aaaab12023b: mov %r9,0x30(%rsp) | |
0x00002aaaab120240: mov %r10,0x28(%rsp) | |
0x00002aaaab120245: mov %r11,0x20(%rsp) | |
0x00002aaaab12024a: mov %r12,0x18(%rsp) | |
0x00002aaaab12024f: mov %r13,0x10(%rsp) | |
0x00002aaaab120254: mov %r14,0x8(%rsp) | |
0x00002aaaab120259: mov %r15,(%rsp) | |
0x00002aaaab12025d: mov $0x2ae74d5c8228,%rdi ; {external_word} | |
0x00002aaaab120267: mov $0x2aaaab120207,%rsi ; {internal_word} | |
0x00002aaaab120271: mov %rsp,%rdx | |
0x00002aaaab120274: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab120278: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab120282: rex.WB callq *%r10 | |
0x00002aaaab120285: hlt | |
0x00002aaaab120286: pop %r10 ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@58 (line 598) | |
0x00002aaaab120288: mov 0x8(%rsp),%esi | |
0x00002aaaab12028c: mov %ebp,%edx | |
0x00002aaaab12028e: nop | |
0x00002aaaab12028f: callq 0x00002aaaab0f2f20 ; OopMap{[0]=Oop off=436} | |
;*invokestatic getChars | |
; - java.lang.AbstractStringBuilder::append@61 (line 598) | |
; {static_call} | |
;; B26: # B27 <- B25 Freq: 0.999978 | |
0x00002aaaab120294: mov (%rsp),%r10 | |
0x00002aaaab120298: mov %ebp,0xc(%r10) ;*synchronization entry | |
; - java.lang.AbstractStringBuilder::append@-1 (line 589) | |
;; B27: # N311 <- B29 B26 Freq: 0.999979 | |
0x00002aaaab12029c: mov (%rsp),%rax | |
0x00002aaaab1202a0: add $0x30,%rsp | |
0x00002aaaab1202a4: pop %rbp | |
0x00002aaaab1202a5: test %eax,-0x4282ab(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab1202ab: retq | |
;; B28: # B38 B29 <- B1 Freq: 4.76837e-07 | |
0x00002aaaab1202ac: mov $0xef9a1958,%rdx ; {oop("-2147483648")} | |
0x00002aaaab1202b6: nop | |
0x00002aaaab1202b7: nop | |
0x00002aaaab1202b8: nop | |
0x00002aaaab1202b9: mov $0xffffffffffffffff,%rax ; {oop(NULL)} | |
0x00002aaaab1202c3: callq 0x00002aaaab0f2d20 ; OopMap{[0]=Oop off=488} | |
;*invokevirtual append | |
; - java.lang.AbstractStringBuilder::append@9 (line 590) | |
; {virtual_call} | |
;; B29: # B27 <- B28 Freq: 4.76828e-07 | |
0x00002aaaab1202c8: jmp 0x00002aaaab12029c | |
;; B30: # B37 B31 <- B2 Freq: 4.76837e-07 | |
0x00002aaaab1202ca: mov %edx,%esi | |
0x00002aaaab1202cc: neg %esi ;*ineg | |
; - java.lang.AbstractStringBuilder::append@20 (line 593) | |
0x00002aaaab1202ce: mov %edx,%ebp | |
0x00002aaaab1202d0: nop | |
0x00002aaaab1202d1: nop | |
0x00002aaaab1202d2: nop | |
0x00002aaaab1202d3: callq 0x00002aaaab0f2f20 ; OopMap{[0]=Oop off=504} | |
;*invokestatic stringSizeOfInt | |
; - java.lang.AbstractStringBuilder::append@21 (line 593) | |
; {static_call} | |
;; B31: # B23 <- B30 Freq: 4.76827e-07 | |
0x00002aaaab1202d8: inc %eax ;*iadd | |
; - java.lang.AbstractStringBuilder::append@25 (line 593) | |
0x00002aaaab1202da: jmpq 0x00002aaaab1201d0 | |
;; B32: # B36 B33 <- B24 Freq: 4.76836e-07 | |
0x00002aaaab1202df: mov %r11,%rsi | |
0x00002aaaab1202e2: mov %ebp,%edx | |
0x00002aaaab1202e4: nop | |
0x00002aaaab1202e5: nop | |
0x00002aaaab1202e6: nop | |
0x00002aaaab1202e7: callq 0x00002aaaab0f2b20 ; OopMap{[0]=Oop off=524} | |
;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@52 (line 597) | |
; {optimized virtual_call} | |
;; B33: # B25 <- B32 Freq: 4.76827e-07 | |
0x00002aaaab1202ec: mov (%rsp),%r10 | |
0x00002aaaab1202f0: mov 0x10(%r10),%r10d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@58 (line 598) | |
0x00002aaaab1202f4: jmpq 0x00002aaaab1201ef | |
;; B34: # N311 <- B12 Freq: 1.97745e-09 | |
0x00002aaaab1202f9: mov $0xffffffe4,%esi | |
0x00002aaaab1202fe: nop | |
0x00002aaaab1202ff: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=NarrowOop [0]=Oop off=548} | |
;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; {runtime_call} | |
0x00002aaaab120304: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab12030e: rex.WB callq *%r10 ;*iaload | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@7 (line 609) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
;; B35: # N311 <- B23 Freq: 1.01328e-06 | |
0x00002aaaab120311: mov $0xfffffff6,%esi | |
0x00002aaaab120316: nop | |
0x00002aaaab120317: callq 0x00002aaaab0f3fa0 ; OopMap{off=572} | |
;*arraylength | |
; - java.lang.AbstractStringBuilder::append@46 (line 596) | |
; {runtime_call} | |
0x00002aaaab12031c: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab120326: rex.WB callq *%r10 ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@52 (line 597) | |
;; B36: # B40 <- B32 Freq: 4.76836e-12 | |
0x00002aaaab120329: mov %rax,%rsi | |
0x00002aaaab12032c: jmp 0x00002aaaab12033b ;*invokestatic stringSizeOfInt | |
; - java.lang.AbstractStringBuilder::append@21 (line 593) | |
;; B37: # B40 <- B30 Freq: 4.76837e-12 | |
0x00002aaaab12032e: mov %rax,%rsi | |
0x00002aaaab120331: jmp 0x00002aaaab12033b ;*invokevirtual append | |
; - java.lang.AbstractStringBuilder::append@9 (line 590) | |
;; B38: # B40 <- B28 Freq: 4.76837e-12 | |
0x00002aaaab120333: mov %rax,%rsi | |
0x00002aaaab120336: jmp 0x00002aaaab12033b ;*invokestatic getChars | |
; - java.lang.AbstractStringBuilder::append@61 (line 598) | |
;; B39: # B40 <- B25 Freq: 9.99999e-06 | |
0x00002aaaab120338: mov %rax,%rsi ;*invokestatic stringSizeOfInt | |
; - java.lang.AbstractStringBuilder::append@21 (line 593) | |
;; B40: # N311 <- B38 B37 B36 B39 Freq: 1e-05 | |
0x00002aaaab12033b: add $0x30,%rsp | |
0x00002aaaab12033f: pop %rbp | |
0x00002aaaab120340: jmpq 0x00002aaaab117a20 ;*iadd | |
; - java.lang.AbstractStringBuilder::stringSizeOfInt@13 (line 610) | |
; - java.lang.AbstractStringBuilder::append@30 (line 593) | |
; {runtime_call} | |
0x00002aaaab120345: hlt | |
0x00002aaaab120346: hlt | |
0x00002aaaab120347: hlt | |
0x00002aaaab120348: hlt | |
0x00002aaaab120349: hlt | |
0x00002aaaab12034a: hlt | |
0x00002aaaab12034b: hlt | |
0x00002aaaab12034c: hlt | |
0x00002aaaab12034d: hlt | |
0x00002aaaab12034e: hlt | |
0x00002aaaab12034f: hlt | |
0x00002aaaab120350: hlt | |
0x00002aaaab120351: hlt | |
0x00002aaaab120352: hlt | |
0x00002aaaab120353: hlt | |
0x00002aaaab120354: hlt | |
0x00002aaaab120355: hlt | |
0x00002aaaab120356: hlt | |
0x00002aaaab120357: hlt | |
0x00002aaaab120358: hlt | |
0x00002aaaab120359: hlt | |
0x00002aaaab12035a: hlt | |
0x00002aaaab12035b: hlt | |
0x00002aaaab12035c: hlt | |
0x00002aaaab12035d: hlt | |
0x00002aaaab12035e: hlt | |
0x00002aaaab12035f: hlt | |
[Stub Code] | |
0x00002aaaab120360: mov $0x0,%rbx ; {no_reloc} | |
0x00002aaaab12036a: jmpq 0x00002aaaab12036a ; {runtime_call} | |
0x00002aaaab12036f: mov $0x0,%rbx ; {static_stub} | |
0x00002aaaab120379: jmpq 0x00002aaaab120379 ; {runtime_call} | |
0x00002aaaab12037e: mov $0x0,%rbx ; {static_stub} | |
0x00002aaaab120388: jmpq 0x00002aaaab120388 ; {runtime_call} | |
[Exception Handler] | |
0x00002aaaab12038d: jmpq 0x00002aaaab101c20 ; {runtime_call} | |
[Deopt Handler Code] | |
0x00002aaaab120392: callq 0x00002aaaab120397 | |
0x00002aaaab120397: subq $0x5,(%rsp) | |
0x00002aaaab12039c: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab1203a1: int3 | |
0x00002aaaab1203a2: int3 | |
0x00002aaaab1203a3: int3 | |
0x00002aaaab1203a4: int3 | |
0x00002aaaab1203a5: int3 | |
0x00002aaaab1203a6: int3 | |
0x00002aaaab1203a7: int3 | |
2788 20 Test::beta (20 bytes) | |
2798 21 java.lang.StringBuilder::<init> (18 bytes) | |
Decoding compiled method 0x00002aaaab123250: | |
Code: | |
[Entry Point] | |
[Verified Entry Point] | |
[Constants] | |
# {method} 'beta' '(Ljava/lang/String;IC)Ljava/lang/String;' in 'Test' | |
# parm0: rsi:rsi = 'java/lang/String' | |
# parm1: rdx = int | |
# parm2: rcx = char | |
# [sp+0x50] (sp of caller) | |
;; N1: # B1 <- B36 B33 B24 Freq: 1 | |
;; B1: # B33 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab1233c0: mov %eax,-0x8000(%rsp) | |
0x00002aaaab1233c7: push %rbp | |
0x00002aaaab1233c8: sub $0x40,%rsp ;*synchronization entry | |
; - Test::beta@-1 (line 9) | |
0x00002aaaab1233cc: mov %ecx,(%rsp) | |
0x00002aaaab1233cf: mov %rsi,%r11 | |
0x00002aaaab1233d2: mov 0xc(%rsi),%r10d ; implicit exception: dispatches to 0x00002aaaab12379a | |
;; B2: # B25 B3 <- B1 Freq: 0.999999 | |
0x00002aaaab1233d6: mov %edx,%r9d | |
0x00002aaaab1233d9: neg %r9d | |
0x00002aaaab1233dc: mov %r9d,0x20(%rsp) | |
0x00002aaaab1233e1: cmp $0x80000000,%edx | |
0x00002aaaab1233e7: jne 0x00002aaaab12370e | |
;; B3: # B7 <- B2 Freq: 0.499999 | |
0x00002aaaab1233ed: xor %r14d,%r14d | |
0x00002aaaab1233f0: mov $0xb,%ebx | |
0x00002aaaab1233f5: jmp 0x00002aaaab123410 | |
0x00002aaaab1233f7: nop | |
0x00002aaaab1233f8: nop | |
0x00002aaaab1233f9: nop | |
0x00002aaaab1233fa: nop | |
0x00002aaaab1233fb: nop | |
0x00002aaaab1233fc: nop | |
0x00002aaaab1233fd: nop | |
0x00002aaaab1233fe: nop | |
0x00002aaaab1233ff: nop | |
;; B4: # B5 <- B5 top-of-loop Freq: 499999 | |
0x00002aaaab123400: inc %edi | |
;; B5: # B4 B6 <- B27 B4 Loop: B5-B4 inner Freq: 500000 | |
0x00002aaaab123402: mov 0x10(%r9,%rdi,4),%ecx | |
0x00002aaaab123407: cmp %ecx,%r8d | |
0x00002aaaab12340a: jg 0x00002aaaab123400 | |
;; B6: # B7 <- B5 Freq: 0.499999 | |
0x00002aaaab12340c: add %edi,%ebx | |
0x00002aaaab12340e: inc %ebx | |
;; B7: # B33 B8 <- B3 B6 Freq: 0.999999 | |
0x00002aaaab123410: mov %ebx,%r9d | |
0x00002aaaab123413: add 0x14(%r11),%r9d | |
0x00002aaaab123417: test %r9d,%r9d | |
0x00002aaaab12341a: jl 0x00002aaaab12379a | |
;; B8: # B33 B9 <- B7 Freq: 0.999998 | |
0x00002aaaab123420: mov %r9d,%ebp | |
0x00002aaaab123423: inc %ebp | |
0x00002aaaab123425: test %ebp,%ebp | |
0x00002aaaab123427: jl 0x00002aaaab12379a | |
;; B9: # B31 B10 <- B8 Freq: 0.999997 | |
0x00002aaaab12342d: cmp $0x80000,%ebp | |
0x00002aaaab123433: ja 0x00002aaaab123756 | |
;; B10: # B31 B11 <- B9 Freq: 0.999996 | |
0x00002aaaab123439: mov 0x70(%r15),%r13 | |
0x00002aaaab12343d: movslq %r9d,%r8 | |
0x00002aaaab123440: shl %r8 | |
0x00002aaaab123443: add $0x19,%r8 | |
0x00002aaaab123447: and $0xfffffffffffffff8,%r8 | |
0x00002aaaab12344b: mov %r13,%r9 | |
0x00002aaaab12344e: add %r8,%r9 | |
0x00002aaaab123451: cmp 0x80(%r15),%r9 | |
0x00002aaaab123458: jae 0x00002aaaab123756 | |
;; B11: # B12 <- B10 Freq: 0.999896 | |
0x00002aaaab12345e: mov %r9,0x70(%r15) | |
0x00002aaaab123462: prefetchnta 0x100(%r9) | |
0x00002aaaab12346a: movq $0x1,0x0(%r13) | |
0x00002aaaab123472: prefetchnta 0x140(%r9) | |
0x00002aaaab12347a: movl $0xc4200608,0x8(%r13) ; {oop({type array char})} | |
0x00002aaaab123482: mov %ebp,0xc(%r13) | |
0x00002aaaab123486: prefetchnta 0x180(%r9) | |
0x00002aaaab12348e: mov %r11,0x8(%rsp) | |
0x00002aaaab123493: mov %edx,0x4(%rsp) | |
0x00002aaaab123497: mov %ebp,0x10(%rsp) | |
;; B12: # B15 B13 <- B32 B11 Freq: 0.999997 | |
0x00002aaaab12349b: mov 0x8(%rsp),%r11 | |
0x00002aaaab1234a0: mov 0x14(%r11),%ebp | |
0x00002aaaab1234a4: mov %r13,%rsi | |
0x00002aaaab1234a7: add $0x10,%rsi | |
0x00002aaaab1234ab: add %ebp,%ebx | |
0x00002aaaab1234ad: mov 0x10(%r11),%r11d | |
0x00002aaaab1234b1: mov %r10,%r8 | |
0x00002aaaab1234b4: lea 0x10(%r10,%r11,2),%rdi | |
0x00002aaaab1234b9: movslq %ebp,%rdx | |
0x00002aaaab1234bc: mov $0x2aaaab0fccc0,%r10 | |
0x00002aaaab1234c6: callq *%r10 | |
0x00002aaaab1234c9: mov 0x4(%rsp),%r10d | |
0x00002aaaab1234ce: cmp $0x80000000,%r10d | |
0x00002aaaab1234d5: je 0x00002aaaab1234f5 | |
;; B13: # B16 B14 <- B12 Freq: 0.499998 | |
0x00002aaaab1234d7: mov 0x4(%rsp),%r9d | |
0x00002aaaab1234dc: test %r10d,%r10d | |
0x00002aaaab1234df: jl 0x00002aaaab123521 | |
;; B14: # B17 <- B13 Freq: 0.249999 | |
0x00002aaaab1234e1: mov %rax,-0x8(%rsp) | |
0x00002aaaab1234e6: mov 0x4(%rsp),%eax | |
0x00002aaaab1234ea: mov %eax,0x20(%rsp) | |
0x00002aaaab1234ee: mov -0x8(%rsp),%rax | |
0x00002aaaab1234f3: jmp 0x00002aaaab123527 | |
;; B15: # B22 <- B12 Freq: 0.499998 | |
0x00002aaaab1234f5: lea 0x10(%r13,%rbp,2),%rsi | |
0x00002aaaab1234fa: mov $0xb,%edx | |
0x00002aaaab1234ff: mov $0xc9412c78,%rdi ; {oop([C)} | |
0x00002aaaab123509: add $0x10,%rdi | |
0x00002aaaab12350d: mov $0x2aaaab0fccc0,%r10 | |
0x00002aaaab123517: callq *%r10 | |
0x00002aaaab12351a: mov 0x4(%rsp),%r9d | |
0x00002aaaab12351f: jmp 0x00002aaaab123583 | |
;; B16: # B17 <- B13 Freq: 0.249999 | |
0x00002aaaab123521: mov $0x2d,%r14d | |
;; B17: # B18 <- B16 B14 Freq: 0.499998 | |
0x00002aaaab123527: mov %ebx,%r10d | |
;; B18: # B20 B19 <- B17 B19 Loop: B18-B19 inner Freq: 0.999997 | |
0x00002aaaab12352a: mov 0x20(%rsp),%r8d | |
0x00002aaaab12352f: sar $0x1f,%r8d | |
0x00002aaaab123533: movslq 0x20(%rsp),%r11 | |
0x00002aaaab123538: imul $0x66666667,%r11,%r11 | |
0x00002aaaab12353f: sar $0x22,%r11 | |
0x00002aaaab123543: mov %r11d,%r11d | |
0x00002aaaab123546: mov %r11d,%ecx | |
0x00002aaaab123549: sub %r8d,%ecx | |
0x00002aaaab12354c: mov %ecx,%esi | |
0x00002aaaab12354e: shl $0x3,%esi | |
0x00002aaaab123551: mov %ecx,%edi | |
0x00002aaaab123553: shl %edi | |
0x00002aaaab123555: add %esi,%edi | |
0x00002aaaab123557: mov 0x20(%rsp),%ebp | |
0x00002aaaab12355b: sub %edi,%ebp | |
0x00002aaaab12355d: add $0x30,%ebp | |
0x00002aaaab123560: mov %bp,0xe(%r13,%r10,2) | |
0x00002aaaab123566: cmp %r8d,%r11d | |
0x00002aaaab123569: je 0x00002aaaab123574 | |
;; B19: # B18 <- B18 Freq: 0.499998 | |
0x00002aaaab12356b: dec %r10d | |
0x00002aaaab12356e: mov %ecx,0x20(%rsp) | |
0x00002aaaab123572: jmp 0x00002aaaab12352a | |
;; B20: # B22 B21 <- B18 Freq: 0.499998 | |
0x00002aaaab123574: test %r14d,%r14d | |
0x00002aaaab123577: je 0x00002aaaab123583 | |
;; B21: # B22 <- B20 Freq: 0.249999 | |
0x00002aaaab123579: add $0xfffffffffffffffe,%r10d | |
0x00002aaaab12357d: mov %r14w,0x10(%r13,%r10,2) | |
;; B22: # B29 B23 <- B21 B20 B15 Freq: 0.999997 | |
0x00002aaaab123583: mov (%rsp),%r8d | |
0x00002aaaab123587: mov %r8w,0x10(%r13,%rbx,2) | |
0x00002aaaab12358d: mov 0x70(%r15),%rax | |
0x00002aaaab123591: mov %rax,%r10 | |
0x00002aaaab123594: add $0x20,%r10 | |
0x00002aaaab123598: cmp 0x80(%r15),%r10 | |
0x00002aaaab12359f: jae 0x00002aaaab123735 | |
;; B23: # B24 <- B22 Freq: 0.999897 | |
0x00002aaaab1235a5: mov %r10,0x70(%r15) | |
0x00002aaaab1235a9: prefetchnta 0x100(%r10) | |
0x00002aaaab1235b1: mov $0xc420ae88,%r11d ; {oop('java/lang/String')} | |
0x00002aaaab1235b7: mov 0xb0(%r11),%r10 | |
0x00002aaaab1235be: mov %r10,(%rax) | |
0x00002aaaab1235c1: movl $0xc420ae88,0x8(%rax) ; {oop('java/lang/String')} | |
0x00002aaaab1235c8: mov %r12d,0xc(%rax) | |
0x00002aaaab1235cc: mov %r12,0x10(%rax) | |
0x00002aaaab1235d0: mov %r12,0x18(%rax) | |
;; B24: # N1 <- B30 B23 Freq: 0.999997 | |
0x00002aaaab1235d4: mov 0x10(%rsp),%r10d | |
0x00002aaaab1235d9: mov %r10d,0x14(%rax) | |
0x00002aaaab1235dd: push %r10 | |
0x00002aaaab1235df: mov $0x2ae74dadc700,%r10 ; {external_word} | |
0x00002aaaab1235e9: cmp (%r10),%r12 | |
0x00002aaaab1235ec: je 0x00002aaaab123671 | |
0x00002aaaab1235f2: mov %rsp,-0x28(%rsp) | |
0x00002aaaab1235f7: sub $0x80,%rsp | |
0x00002aaaab1235fe: mov %rax,0x78(%rsp) | |
0x00002aaaab123603: mov %rcx,0x70(%rsp) | |
0x00002aaaab123608: mov %rdx,0x68(%rsp) | |
0x00002aaaab12360d: mov %rbx,0x60(%rsp) | |
0x00002aaaab123612: mov %rbp,0x50(%rsp) | |
0x00002aaaab123617: mov %rsi,0x48(%rsp) | |
0x00002aaaab12361c: mov %rdi,0x40(%rsp) | |
0x00002aaaab123621: mov %r8,0x38(%rsp) | |
0x00002aaaab123626: mov %r9,0x30(%rsp) | |
0x00002aaaab12362b: mov %r10,0x28(%rsp) | |
0x00002aaaab123630: mov %r11,0x20(%rsp) | |
0x00002aaaab123635: mov %r12,0x18(%rsp) | |
0x00002aaaab12363a: mov %r13,0x10(%rsp) | |
0x00002aaaab12363f: mov %r14,0x8(%rsp) | |
0x00002aaaab123644: mov %r15,(%rsp) | |
0x00002aaaab123648: mov $0x2ae74d5c7980,%rdi ; {external_word} | |
0x00002aaaab123652: mov $0x2aaaab1235f2,%rsi ; {internal_word} | |
0x00002aaaab12365c: mov %rsp,%rdx | |
0x00002aaaab12365f: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab123663: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab12366d: rex.WB callq *%r10 | |
0x00002aaaab123670: hlt | |
0x00002aaaab123671: pop %r10 | |
0x00002aaaab123673: test %r13,%r13 | |
0x00002aaaab123676: jne 0x00002aaaab1236fb | |
0x00002aaaab12367c: mov %rsp,-0x28(%rsp) | |
0x00002aaaab123681: sub $0x80,%rsp | |
0x00002aaaab123688: mov %rax,0x78(%rsp) | |
0x00002aaaab12368d: mov %rcx,0x70(%rsp) | |
0x00002aaaab123692: mov %rdx,0x68(%rsp) | |
0x00002aaaab123697: mov %rbx,0x60(%rsp) | |
0x00002aaaab12369c: mov %rbp,0x50(%rsp) | |
0x00002aaaab1236a1: mov %rsi,0x48(%rsp) | |
0x00002aaaab1236a6: mov %rdi,0x40(%rsp) | |
0x00002aaaab1236ab: mov %r8,0x38(%rsp) | |
0x00002aaaab1236b0: mov %r9,0x30(%rsp) | |
0x00002aaaab1236b5: mov %r10,0x28(%rsp) | |
0x00002aaaab1236ba: mov %r11,0x20(%rsp) | |
0x00002aaaab1236bf: mov %r12,0x18(%rsp) | |
0x00002aaaab1236c4: mov %r13,0x10(%rsp) | |
0x00002aaaab1236c9: mov %r14,0x8(%rsp) | |
0x00002aaaab1236ce: mov %r15,(%rsp) | |
0x00002aaaab1236d2: mov $0x2ae74d5c79c0,%rdi ; {external_word} | |
0x00002aaaab1236dc: mov $0x2aaaab12367c,%rsi ; {internal_word} | |
0x00002aaaab1236e6: mov %rsp,%rdx | |
0x00002aaaab1236e9: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab1236ed: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab1236f7: rex.WB callq *%r10 | |
0x00002aaaab1236fa: hlt | |
0x00002aaaab1236fb: mov %r13,%r10 | |
0x00002aaaab1236fe: mov %r10d,0xc(%rax) | |
0x00002aaaab123702: add $0x40,%rsp | |
0x00002aaaab123706: pop %rbp | |
0x00002aaaab123707: test %eax,-0x42b70d(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab12370d: retq | |
;; B25: # B28 B26 <- B2 Freq: 0.499999 | |
0x00002aaaab12370e: test %edx,%edx | |
0x00002aaaab123710: jge 0x00002aaaab12372e | |
;; B26: # B27 <- B25 Freq: 0.25 | |
0x00002aaaab123712: mov %r9d,%r8d | |
0x00002aaaab123715: mov $0x1,%ebx | |
;; B27: # B5 <- B26 B28 Freq: 0.499999 | |
0x00002aaaab12371a: mov $0xc9414148,%r9 ; {oop([I)} | |
0x00002aaaab123724: xor %edi,%edi | |
0x00002aaaab123726: xor %r14d,%r14d | |
0x00002aaaab123729: jmpq 0x00002aaaab123402 | |
;; B28: # B27 <- B25 Freq: 0.25 | |
0x00002aaaab12372e: mov %edx,%r8d | |
0x00002aaaab123731: xor %ebx,%ebx | |
0x00002aaaab123733: jmp 0x00002aaaab12371a | |
;; B29: # B35 B30 <- B22 Freq: 0.000100016 | |
0x00002aaaab123735: mov %r13,0x18(%rsp) | |
0x00002aaaab12373a: mov %r9d,%ebp | |
0x00002aaaab12373d: mov $0xc420ae88,%rsi ; {oop('java/lang/String')} | |
0x00002aaaab123747: callq 0x00002aaaab1182e0 ; OopMap{[8]=Oop [24]=Oop off=908} | |
;*new ; - Test::beta@0 (line 9) | |
; {runtime_call} | |
;; B30: # B24 <- B29 Freq: 0.000100014 | |
0x00002aaaab12374c: mov 0x18(%rsp),%r13 | |
0x00002aaaab123751: jmpq 0x00002aaaab1235d4 | |
;; B31: # B34 B32 <- B9 B10 Freq: 0.000101029 | |
0x00002aaaab123756: mov %ebx,0x1c(%rsp) | |
0x00002aaaab12375a: mov %r14d,0x18(%rsp) | |
0x00002aaaab12375f: mov %r10d,0x14(%rsp) | |
0x00002aaaab123764: mov %ebp,0x10(%rsp) | |
0x00002aaaab123768: mov %edx,0x4(%rsp) | |
0x00002aaaab12376c: mov %r11,0x8(%rsp) | |
0x00002aaaab123771: mov $0xc4200608,%rsi ; {oop({type array char})} | |
0x00002aaaab12377b: mov %ebp,%edx | |
0x00002aaaab12377d: nop | |
0x00002aaaab12377e: nop | |
0x00002aaaab12377f: callq 0x00002aaaab118220 ; OopMap{[8]=Oop [20]=NarrowOop off=964} | |
;*new ; - Test::beta@0 (line 9) | |
; {runtime_call} | |
;; B32: # B12 <- B31 Freq: 0.000101027 | |
0x00002aaaab123784: mov %rax,%r13 | |
0x00002aaaab123787: mov 0x14(%rsp),%r10d | |
0x00002aaaab12378c: mov 0x18(%rsp),%r14d | |
0x00002aaaab123791: mov 0x1c(%rsp),%ebx | |
0x00002aaaab123795: jmpq 0x00002aaaab12349b | |
;; B33: # N1 <- B7 B8 B1 Freq: 3.01328e-06 | |
0x00002aaaab12379a: mov $0xffffffcc,%esi | |
0x00002aaaab12379f: mov %r11,%rbp | |
0x00002aaaab1237a2: mov %edx,0x4(%rsp) | |
0x00002aaaab1237a6: nop | |
0x00002aaaab1237a7: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop off=1004} | |
;*new ; - Test::beta@0 (line 9) | |
; {runtime_call} | |
0x00002aaaab1237ac: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab1237b6: rex.WB callq *%r10 | |
;; B34: # B36 <- B31 Freq: 1.01029e-09 | |
0x00002aaaab1237b9: mov %rax,%rsi | |
0x00002aaaab1237bc: jmp 0x00002aaaab1237c1 | |
;; B35: # B36 <- B29 Freq: 1.00016e-09 | |
0x00002aaaab1237be: mov %rax,%rsi ;*invokespecial <init> | |
; - Test::beta@5 (line 9) | |
;; B36: # N1 <- B34 B35 Freq: 2.01046e-09 | |
0x00002aaaab1237c1: add $0x40,%rsp | |
0x00002aaaab1237c5: pop %rbp | |
0x00002aaaab1237c6: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab1237cb: hlt | |
0x00002aaaab1237cc: hlt | |
0x00002aaaab1237cd: hlt | |
0x00002aaaab1237ce: hlt | |
0x00002aaaab1237cf: hlt | |
0x00002aaaab1237d0: hlt | |
0x00002aaaab1237d1: hlt | |
0x00002aaaab1237d2: hlt | |
0x00002aaaab1237d3: hlt | |
0x00002aaaab1237d4: hlt | |
0x00002aaaab1237d5: hlt | |
0x00002aaaab1237d6: hlt | |
0x00002aaaab1237d7: hlt | |
0x00002aaaab1237d8: hlt | |
0x00002aaaab1237d9: hlt | |
0x00002aaaab1237da: hlt | |
0x00002aaaab1237db: hlt | |
0x00002aaaab1237dc: hlt | |
0x00002aaaab1237dd: hlt | |
0x00002aaaab1237de: hlt | |
0x00002aaaab1237df: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x00002aaaab1237e0: jmpq 0x00002aaaab101c20 ; {no_reloc} | |
[Deopt Handler Code] | |
0x00002aaaab1237e5: callq 0x00002aaaab1237ea | |
0x00002aaaab1237ea: subq $0x5,(%rsp) | |
0x00002aaaab1237ef: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab1237f4: int3 | |
0x00002aaaab1237f5: int3 | |
0x00002aaaab1237f6: int3 | |
0x00002aaaab1237f7: int3 | |
Decoding compiled method 0x00002aaaab123950: | |
Code: | |
[Entry Point] | |
[Constants] | |
# {method} '<init>' '(Ljava/lang/String;)V' in 'java/lang/StringBuilder' | |
# this: rsi:rsi = 'java/lang/StringBuilder' | |
# parm0: rdx:rdx = 'java/lang/String' | |
# [sp+0x50] (sp of caller) | |
;; N396: # B1 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab123ae0: mov 0x8(%rsi),%r10d | |
0x00002aaaab123ae4: cmp %r10,%rax | |
0x00002aaaab123ae7: jne 0x00002aaaab0f2920 ; {runtime_call} | |
0x00002aaaab123aed: nop | |
0x00002aaaab123aee: nop | |
0x00002aaaab123aef: nop | |
[Verified Entry Point] | |
;; B1: # B28 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab123af0: mov %eax,-0x8000(%rsp) | |
0x00002aaaab123af7: push %rbp | |
0x00002aaaab123af8: sub $0x40,%rsp ;*synchronization entry | |
; - java.lang.StringBuilder::<init>@-1 (line 92) | |
0x00002aaaab123afc: mov %rsi,(%rsp) | |
0x00002aaaab123b00: mov %rdx,%rbp | |
0x00002aaaab123b03: mov 0x14(%rdx),%r9d ;*getfield count | |
; - java.lang.String::length@1 (line 651) | |
; - java.lang.StringBuilder::<init>@2 (line 92) | |
; implicit exception: dispatches to 0x00002aaaab123e2d | |
;; B2: # B20 B3 <- B1 Freq: 0.999999 | |
0x00002aaaab123b07: mov %r9d,%r11d | |
0x00002aaaab123b0a: add $0x10,%r11d ;*iadd | |
; - java.lang.StringBuilder::<init>@7 (line 92) | |
0x00002aaaab123b0e: movslq %r9d,%r10 ;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
0x00002aaaab123b11: mov %r10,0x18(%rsp) | |
0x00002aaaab123b16: cmp $0x80000,%r11d | |
0x00002aaaab123b1d: ja 0x00002aaaab123d74 | |
;; B3: # B20 B4 <- B2 Freq: 0.999998 | |
0x00002aaaab123b23: mov %r10,%rcx | |
0x00002aaaab123b26: shl %rcx | |
0x00002aaaab123b29: add $0x37,%rcx | |
0x00002aaaab123b2d: mov %rcx,%r10 | |
0x00002aaaab123b30: and $0xfffffffffffffff8,%r10 | |
0x00002aaaab123b34: mov 0x70(%r15),%rbx | |
0x00002aaaab123b38: mov %rbx,%r8 | |
0x00002aaaab123b3b: add %r10,%r8 | |
0x00002aaaab123b3e: cmp 0x80(%r15),%r8 | |
0x00002aaaab123b45: jae 0x00002aaaab123d74 | |
;; B4: # B5 <- B3 Freq: 0.999898 | |
0x00002aaaab123b4b: mov %r8,0x70(%r15) | |
0x00002aaaab123b4f: prefetchnta 0x100(%r8) | |
0x00002aaaab123b57: movq $0x1,(%rbx) | |
0x00002aaaab123b5e: prefetchnta 0x140(%r8) | |
0x00002aaaab123b66: movl $0xc4200608,0x8(%rbx) ; {oop({type array char})} | |
0x00002aaaab123b6d: mov %r11d,0xc(%rbx) | |
0x00002aaaab123b71: prefetchnta 0x180(%r8) | |
0x00002aaaab123b79: mov %rbx,%rdi | |
0x00002aaaab123b7c: add $0x10,%rdi | |
0x00002aaaab123b80: shr $0x3,%rcx | |
0x00002aaaab123b84: add $0xfffffffffffffffe,%rcx | |
0x00002aaaab123b88: xor %eax,%eax | |
0x00002aaaab123b8a: rep stos %rax,%es:(%rdi) ;*newarray | |
; - java.lang.AbstractStringBuilder::<init>@6 (line 45) | |
; - java.lang.StringBuilder::<init>@8 (line 92) | |
;; B5: # B19 B6 <- B21 B4 Freq: 0.999999 | |
0x00002aaaab123b8d: mov (%rsp),%r10 | |
0x00002aaaab123b91: push %r10 | |
0x00002aaaab123b93: mov $0x2ae74dadc700,%r10 ; {external_word} | |
0x00002aaaab123b9d: cmp (%r10),%r12 | |
0x00002aaaab123ba0: je 0x00002aaaab123c25 | |
0x00002aaaab123ba6: mov %rsp,-0x28(%rsp) | |
0x00002aaaab123bab: sub $0x80,%rsp | |
0x00002aaaab123bb2: mov %rax,0x78(%rsp) | |
0x00002aaaab123bb7: mov %rcx,0x70(%rsp) | |
0x00002aaaab123bbc: mov %rdx,0x68(%rsp) | |
0x00002aaaab123bc1: mov %rbx,0x60(%rsp) | |
0x00002aaaab123bc6: mov %rbp,0x50(%rsp) | |
0x00002aaaab123bcb: mov %rsi,0x48(%rsp) | |
0x00002aaaab123bd0: mov %rdi,0x40(%rsp) | |
0x00002aaaab123bd5: mov %r8,0x38(%rsp) | |
0x00002aaaab123bda: mov %r9,0x30(%rsp) | |
0x00002aaaab123bdf: mov %r10,0x28(%rsp) | |
0x00002aaaab123be4: mov %r11,0x20(%rsp) | |
0x00002aaaab123be9: mov %r12,0x18(%rsp) | |
0x00002aaaab123bee: mov %r13,0x10(%rsp) | |
0x00002aaaab123bf3: mov %r14,0x8(%rsp) | |
0x00002aaaab123bf8: mov %r15,(%rsp) | |
0x00002aaaab123bfc: mov $0x2ae74d5c7980,%rdi ; {external_word} | |
0x00002aaaab123c06: mov $0x2aaaab123ba6,%rsi ; {internal_word} | |
0x00002aaaab123c10: mov %rsp,%rdx | |
0x00002aaaab123c13: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab123c17: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab123c21: rex.WB callq *%r10 | |
0x00002aaaab123c24: hlt | |
0x00002aaaab123c25: pop %r10 | |
0x00002aaaab123c27: test %rbx,%rbx | |
0x00002aaaab123c2a: jne 0x00002aaaab123caf | |
0x00002aaaab123c30: mov %rsp,-0x28(%rsp) | |
0x00002aaaab123c35: sub $0x80,%rsp | |
0x00002aaaab123c3c: mov %rax,0x78(%rsp) | |
0x00002aaaab123c41: mov %rcx,0x70(%rsp) | |
0x00002aaaab123c46: mov %rdx,0x68(%rsp) | |
0x00002aaaab123c4b: mov %rbx,0x60(%rsp) | |
0x00002aaaab123c50: mov %rbp,0x50(%rsp) | |
0x00002aaaab123c55: mov %rsi,0x48(%rsp) | |
0x00002aaaab123c5a: mov %rdi,0x40(%rsp) | |
0x00002aaaab123c5f: mov %r8,0x38(%rsp) | |
0x00002aaaab123c64: mov %r9,0x30(%rsp) | |
0x00002aaaab123c69: mov %r10,0x28(%rsp) | |
0x00002aaaab123c6e: mov %r11,0x20(%rsp) | |
0x00002aaaab123c73: mov %r12,0x18(%rsp) | |
0x00002aaaab123c78: mov %r13,0x10(%rsp) | |
0x00002aaaab123c7d: mov %r14,0x8(%rsp) | |
0x00002aaaab123c82: mov %r15,(%rsp) | |
0x00002aaaab123c86: mov $0x2ae74d5c79c0,%rdi ; {external_word} | |
0x00002aaaab123c90: mov $0x2aaaab123c30,%rsi ; {internal_word} | |
0x00002aaaab123c9a: mov %rsp,%rdx | |
0x00002aaaab123c9d: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab123ca1: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab123cab: rex.WB callq *%r10 | |
0x00002aaaab123cae: hlt | |
0x00002aaaab123caf: mov %rbx,%r8 | |
0x00002aaaab123cb2: mov (%rsp),%rcx | |
0x00002aaaab123cb6: mov %r8d,0x10(%rcx) | |
0x00002aaaab123cba: shr $0x9,%r10 | |
0x00002aaaab123cbe: mov $0x2aaaadac4000,%rcx | |
0x00002aaaab123cc8: mov %r12b,(%rcx,%r10,1) ;*putfield value | |
; - java.lang.AbstractStringBuilder::<init>@8 (line 45) | |
; - java.lang.StringBuilder::<init>@8 (line 92) | |
0x00002aaaab123ccc: test %r9d,%r9d | |
0x00002aaaab123ccf: je 0x00002aaaab123d68 ;*ifne | |
; - java.lang.AbstractStringBuilder::append@13 (line 387) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
;; B6: # B25 B7 <- B5 Freq: 0.999999 | |
0x00002aaaab123cd5: mov (%rsp),%r10 | |
0x00002aaaab123cd9: mov 0xc(%r10),%edi ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@19 (line 388) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
0x00002aaaab123cdd: mov %r9d,%ecx | |
0x00002aaaab123ce0: add %edi,%ecx ;*iadd | |
; - java.lang.AbstractStringBuilder::append@23 (line 388) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
0x00002aaaab123ce2: mov %ecx,0x14(%rsp) | |
0x00002aaaab123ce6: cmp %r11d,%ecx | |
0x00002aaaab123ce9: jg 0x00002aaaab123dd9 ;*if_icmple | |
; - java.lang.AbstractStringBuilder::append@31 (line 389) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
;; B7: # B8 <- B6 Freq: 0.999998 | |
0x00002aaaab123cef: mov %r9d,%r10d ;*aload_1 | |
; - java.lang.AbstractStringBuilder::append@39 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
;; B8: # B24 B9 <- B26 B7 Freq: 0.999999 | |
0x00002aaaab123cf2: cmp %r10d,%r9d | |
0x00002aaaab123cf5: jg 0x00002aaaab123db6 ;*if_icmple | |
; - java.lang.String::getChars@18 (line 848) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
;; B9: # B27 B10 <- B8 Freq: 0.999998 | |
0x00002aaaab123cfb: test %r9d,%r9d | |
0x00002aaaab123cfe: jl 0x00002aaaab123e0a ;*if_icmple | |
; - java.lang.String::getChars@32 (line 851) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
;; B10: # B29 B11 <- B9 Freq: 0.999998 | |
0x00002aaaab123d04: mov 0x10(%rbp),%r11d ;*getfield offset | |
; - java.lang.String::getChars@51 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
0x00002aaaab123d08: mov 0xc(%rbp),%ebp | |
0x00002aaaab123d0b: mov 0xc(%rbp),%r10d ; implicit exception: dispatches to 0x00002aaaab123e45 | |
;; B11: # B30 B12 <- B10 Freq: 0.999997 | |
0x00002aaaab123d0f: mov 0xc(%r8),%edx ; implicit exception: dispatches to 0x00002aaaab123e6d | |
;; B12: # B22 B13 <- B11 Freq: 0.999996 | |
0x00002aaaab123d13: mov %rbp,%rax ;*getfield value | |
; - java.lang.String::getChars@47 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
0x00002aaaab123d16: mov %r8,%rcx ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@43 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
0x00002aaaab123d19: test %r11d,%r11d | |
0x00002aaaab123d1c: jl 0x00002aaaab123da2 | |
;; B13: # B22 B14 <- B12 Freq: 0.999995 | |
0x00002aaaab123d22: test %edi,%edi | |
0x00002aaaab123d24: jl 0x00002aaaab123da2 | |
;; B14: # B22 B15 <- B13 Freq: 0.999994 | |
0x00002aaaab123d26: mov %r9d,%ebx | |
0x00002aaaab123d29: add %r11d,%ebx | |
0x00002aaaab123d2c: cmp %ebx,%r10d | |
0x00002aaaab123d2f: jb 0x00002aaaab123da2 | |
;; B15: # B22 B16 <- B14 Freq: 0.999992 | |
0x00002aaaab123d31: mov %edi,%ebx | |
0x00002aaaab123d33: add %r9d,%ebx | |
0x00002aaaab123d36: cmp %ebx,%edx | |
0x00002aaaab123d38: jb 0x00002aaaab123da2 | |
;; B16: # B18 B17 <- B15 Freq: 0.999991 | |
0x00002aaaab123d3a: test %r9d,%r9d | |
0x00002aaaab123d3d: jle 0x00002aaaab123d5b | |
;; B17: # B18 <- B16 Freq: 0.99999 | |
0x00002aaaab123d3f: lea 0x10(%r8,%rdi,2),%rsi | |
0x00002aaaab123d44: lea 0x10(%rbp,%r11,2),%rdi | |
0x00002aaaab123d49: mov 0x18(%rsp),%rdx | |
0x00002aaaab123d4e: mov $0x2aaaab0fce80,%r10 | |
0x00002aaaab123d58: callq *%r10 ;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
;; B18: # B19 <- B17 B16 B23 Freq: 0.999995 | |
0x00002aaaab123d5b: mov (%rsp),%r10 | |
0x00002aaaab123d5f: mov 0x14(%rsp),%r11d | |
0x00002aaaab123d64: mov %r11d,0xc(%r10) ;*invokespecial append | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
;; B19: # N396 <- B5 B18 Freq: 0.999996 | |
0x00002aaaab123d68: add $0x40,%rsp | |
0x00002aaaab123d6c: pop %rbp | |
0x00002aaaab123d6d: test %eax,-0x42bd73(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab123d73: retq | |
;; B20: # B33 B21 <- B2 B3 Freq: 0.00010103 | |
0x00002aaaab123d74: mov %r11d,0xc(%rsp) | |
0x00002aaaab123d79: mov %r9d,0x8(%rsp) | |
0x00002aaaab123d7e: mov $0xc4200608,%rsi ; {oop({type array char})} | |
0x00002aaaab123d88: mov %r11d,%edx | |
0x00002aaaab123d8b: callq 0x00002aaaab118220 ; OopMap{rbp=Oop [0]=Oop off=688} | |
;*newarray | |
; - java.lang.AbstractStringBuilder::<init>@6 (line 45) | |
; - java.lang.StringBuilder::<init>@8 (line 92) | |
; {runtime_call} | |
;; B21: # B5 <- B20 Freq: 0.000101028 | |
0x00002aaaab123d90: mov 0xc(%rsp),%r11d | |
0x00002aaaab123d95: mov %rax,%rbx | |
0x00002aaaab123d98: mov 0x8(%rsp),%r9d | |
0x00002aaaab123d9d: jmpq 0x00002aaaab123b8d | |
;; B22: # B32 B23 <- B12 B13 B14 B15 Freq: 3.99998e-06 | |
0x00002aaaab123da2: mov %rax,%rsi | |
0x00002aaaab123da5: mov %r11d,%edx | |
0x00002aaaab123da8: mov %edi,%r8d | |
0x00002aaaab123dab: mov (%rsp),%rbp | |
0x00002aaaab123daf: callq 0x00002aaaab11b020 ; OopMap{rbp=Oop [0]=Oop off=724} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
; {runtime_call} | |
;; B23: # B18 <- B22 Freq: 3.9999e-06 | |
0x00002aaaab123db4: jmp 0x00002aaaab123d5b ;*ifge | |
; - java.lang.String::getChars@1 (line 845) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
;; B24: # N396 <- B8 Freq: 4.76836e-07 | |
0x00002aaaab123db6: mov $0xce,%esi | |
0x00002aaaab123dbb: mov (%rsp),%rbp | |
0x00002aaaab123dbf: mov %r9d,0x8(%rsp) | |
0x00002aaaab123dc4: nop | |
0x00002aaaab123dc5: nop | |
0x00002aaaab123dc6: nop | |
0x00002aaaab123dc7: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop off=748} | |
;*new ; - java.lang.String::getChars@21 (line 849) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
; {runtime_call} | |
0x00002aaaab123dcc: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab123dd6: rex.WB callq *%r10 ;*ifne | |
; - java.lang.AbstractStringBuilder::append@13 (line 387) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
;; B25: # B31 B26 <- B6 Freq: 4.76836e-07 | |
0x00002aaaab123dd9: mov (%rsp),%rsi | |
0x00002aaaab123ddd: mov %ecx,%edx | |
0x00002aaaab123ddf: mov %r9d,0x20(%rsp) | |
0x00002aaaab123de4: nop | |
0x00002aaaab123de5: nop | |
0x00002aaaab123de6: nop | |
0x00002aaaab123de7: callq 0x00002aaaab0f2b20 ; OopMap{rbp=Oop [0]=Oop off=780} | |
;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
; {optimized virtual_call} | |
;; B26: # B8 <- B25 Freq: 4.76827e-07 | |
0x00002aaaab123dec: mov (%rsp),%r10 | |
0x00002aaaab123df0: mov 0xc(%r10),%edi ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@47 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
0x00002aaaab123df4: mov 0x14(%rbp),%r10d ;*getfield count | |
; - java.lang.String::getChars@15 (line 848) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
0x00002aaaab123df8: mov (%rsp),%r11 | |
0x00002aaaab123dfc: mov 0x10(%r11),%r8d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@43 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
0x00002aaaab123e00: mov 0x20(%rsp),%r9d | |
0x00002aaaab123e05: jmpq 0x00002aaaab123cf2 ;*if_icmple | |
; - java.lang.String::getChars@18 (line 848) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
;; B27: # N396 <- B9 Freq: 4.76836e-07 | |
0x00002aaaab123e0a: mov $0xce,%esi | |
0x00002aaaab123e0f: mov (%rsp),%rbp | |
0x00002aaaab123e13: mov %r9d,0x8(%rsp) | |
0x00002aaaab123e18: nop | |
0x00002aaaab123e19: nop | |
0x00002aaaab123e1a: nop | |
0x00002aaaab123e1b: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop off=832} | |
;*new ; - java.lang.String::getChars@35 (line 852) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
; {runtime_call} | |
0x00002aaaab123e20: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab123e2a: rex.WB callq *%r10 ;*new ; - java.lang.String::getChars@35 (line 852) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
;; B28: # N396 <- B1 Freq: 1.01328e-06 | |
0x00002aaaab123e2d: mov $0xfffffff6,%esi | |
0x00002aaaab123e32: nop | |
0x00002aaaab123e33: callq 0x00002aaaab0f3fa0 ; OopMap{off=856} | |
;*invokevirtual length | |
; - java.lang.StringBuilder::<init>@2 (line 92) | |
; {runtime_call} | |
0x00002aaaab123e38: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab123e42: rex.WB callq *%r10 | |
;; B29: # N396 <- B10 Freq: 1.01328e-06 | |
0x00002aaaab123e45: mov $0xfffffff6,%esi | |
0x00002aaaab123e4a: mov %r9d,%ebp | |
0x00002aaaab123e4d: mov %r11d,(%rsp) | |
0x00002aaaab123e51: mov %r8d,0x4(%rsp) | |
0x00002aaaab123e56: mov %edi,0x8(%rsp) | |
0x00002aaaab123e5a: nop | |
0x00002aaaab123e5b: callq 0x00002aaaab0f3fa0 ; OopMap{[4]=NarrowOop off=896} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
; {runtime_call} | |
0x00002aaaab123e60: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab123e6a: rex.WB callq *%r10 | |
;; B30: # N396 <- B11 Freq: 1.01328e-06 | |
0x00002aaaab123e6d: mov $0xfffffff6,%esi | |
0x00002aaaab123e72: mov %r9d,(%rsp) | |
0x00002aaaab123e76: mov %r11d,0x4(%rsp) | |
0x00002aaaab123e7b: mov %edi,0x8(%rsp) | |
0x00002aaaab123e7f: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=NarrowOop off=932} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
; {runtime_call} | |
0x00002aaaab123e84: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab123e8e: rex.WB callq *%r10 ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
;; B31: # B34 <- B25 Freq: 4.76836e-12 | |
0x00002aaaab123e91: mov %rax,%rsi | |
0x00002aaaab123e94: jmp 0x00002aaaab123e9e ;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
;; B32: # B34 <- B22 Freq: 3.99998e-11 | |
0x00002aaaab123e96: mov %rax,%rsi | |
0x00002aaaab123e99: jmp 0x00002aaaab123e9e ;*newarray | |
; - java.lang.AbstractStringBuilder::<init>@6 (line 45) | |
; - java.lang.StringBuilder::<init>@8 (line 92) | |
;; B33: # B34 <- B20 Freq: 1.0103e-09 | |
0x00002aaaab123e9b: mov %rax,%rsi ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - java.lang.StringBuilder::<init>@13 (line 93) | |
;; B34: # N396 <- B31 B32 B33 Freq: 1.05506e-09 | |
0x00002aaaab123e9e: add $0x40,%rsp | |
0x00002aaaab123ea2: pop %rbp | |
0x00002aaaab123ea3: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab123ea8: hlt | |
0x00002aaaab123ea9: hlt | |
0x00002aaaab123eaa: hlt | |
0x00002aaaab123eab: hlt | |
0x00002aaaab123eac: hlt | |
0x00002aaaab123ead: hlt | |
0x00002aaaab123eae: hlt | |
0x00002aaaab123eaf: hlt | |
0x00002aaaab123eb0: hlt | |
0x00002aaaab123eb1: hlt | |
0x00002aaaab123eb2: hlt | |
0x00002aaaab123eb3: hlt | |
0x00002aaaab123eb4: hlt | |
0x00002aaaab123eb5: hlt | |
0x00002aaaab123eb6: hlt | |
0x00002aaaab123eb7: hlt | |
0x00002aaaab123eb8: hlt | |
0x00002aaaab123eb9: hlt | |
0x00002aaaab123eba: hlt | |
0x00002aaaab123ebb: hlt | |
0x00002aaaab123ebc: hlt | |
0x00002aaaab123ebd: hlt | |
0x00002aaaab123ebe: hlt | |
0x00002aaaab123ebf: hlt | |
[Stub Code] | |
0x00002aaaab123ec0: mov $0x0,%rbx ; {no_reloc} | |
0x00002aaaab123eca: jmpq 0x00002aaaab123eca ; {runtime_call} | |
[Exception Handler] | |
0x00002aaaab123ecf: jmpq 0x00002aaaab101c20 ; {runtime_call} | |
[Deopt Handler Code] | |
0x00002aaaab123ed4: callq 0x00002aaaab123ed9 | |
0x00002aaaab123ed9: subq $0x5,(%rsp) | |
0x00002aaaab123ede: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab123ee3: int3 | |
0x00002aaaab123ee4: int3 | |
0x00002aaaab123ee5: int3 | |
0x00002aaaab123ee6: int3 | |
0x00002aaaab123ee7: int3 | |
4282 22 Test::charlie (77 bytes) | |
4324 23 java.lang.Integer::stringSize (21 bytes) | |
Decoding compiled method 0x00002aaaab121dd0: | |
Code: | |
[Entry Point] | |
[Verified Entry Point] | |
[Constants] | |
# {method} 'charlie' '([Ljava/lang/String;IC)Ljava/lang/String;' in 'Test' | |
# parm0: rsi:rsi = '[Ljava/lang/String;' | |
# parm1: rdx = int | |
# parm2: rcx = char | |
# [sp+0x60] (sp of caller) | |
;; N1: # B1 <- B83 B76 B69 B82 B81 B80 B56 B96 B84 B72 B73 B79 B85 Freq: 1 | |
;; B1: # B61 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab121fa0: mov %eax,-0x8000(%rsp) | |
0x00002aaaab121fa7: push %rbp | |
0x00002aaaab121fa8: sub $0x50,%rsp ;*synchronization entry | |
; - Test::charlie@-1 (line 13) | |
0x00002aaaab121fac: mov %ecx,0x10(%rsp) | |
0x00002aaaab121fb0: mov %edx,0xc(%rsp) | |
0x00002aaaab121fb4: mov %rsi,(%rsp) | |
0x00002aaaab121fb8: mov 0x70(%r15),%r11 | |
0x00002aaaab121fbc: mov %r11,%r10 | |
0x00002aaaab121fbf: add $0x18,%r10 | |
0x00002aaaab121fc3: cmp 0x80(%r15),%r10 | |
0x00002aaaab121fca: jae 0x00002aaaab1224b8 | |
;; B2: # B3 <- B1 Freq: 0.9999 | |
0x00002aaaab121fd0: mov %r10,0x70(%r15) | |
0x00002aaaab121fd4: prefetchnta 0x100(%r10) | |
0x00002aaaab121fdc: mov $0xc42692f0,%r10d ; {oop('java/lang/StringBuilder')} | |
0x00002aaaab121fe2: mov 0xb0(%r10),%r10 | |
0x00002aaaab121fe9: mov %r10,(%r11) | |
0x00002aaaab121fec: movl $0xc42692f0,0x8(%r11) ; {oop('java/lang/StringBuilder')} | |
0x00002aaaab121ff4: mov %r12d,0xc(%r11) | |
0x00002aaaab121ff8: mov %r12,0x10(%r11) ;*new ; - Test::charlie@0 (line 13) | |
;; B3: # B63 B4 <- B62 B2 Freq: 1 | |
0x00002aaaab121ffc: mov %r11,0x30(%rsp) | |
0x00002aaaab122001: mov 0x70(%r15),%rax | |
0x00002aaaab122005: mov %rax,%r10 | |
0x00002aaaab122008: add $0x30,%r10 | |
0x00002aaaab12200c: cmp 0x80(%r15),%r10 | |
0x00002aaaab122013: jae 0x00002aaaab1224d0 | |
;; B4: # B5 <- B3 Freq: 0.9999 | |
0x00002aaaab122019: mov %r10,0x70(%r15) | |
0x00002aaaab12201d: prefetchnta 0x100(%r10) | |
0x00002aaaab122025: movq $0x1,(%rax) | |
0x00002aaaab12202c: prefetchnta 0x140(%r10) | |
0x00002aaaab122034: movl $0xc4200608,0x8(%rax) ; {oop({type array char})} | |
0x00002aaaab12203b: prefetchnta 0x180(%r10) | |
0x00002aaaab122043: movl $0x10,0xc(%rax) | |
0x00002aaaab12204a: mov %r12,0x10(%rax) | |
0x00002aaaab12204e: mov %r12,0x18(%rax) | |
0x00002aaaab122052: mov %r12,0x20(%rax) | |
0x00002aaaab122056: mov %r12,0x28(%rax) ;*newarray | |
; - java.lang.AbstractStringBuilder::<init>@6 (line 45) | |
; - java.lang.StringBuilder::<init>@3 (line 68) | |
; - Test::charlie@4 (line 13) | |
;; B5: # B83 B6 <- B64 B4 Freq: 1 | |
0x00002aaaab12205a: push %r10 | |
0x00002aaaab12205c: mov $0x2ae74dadc700,%r10 ; {external_word} | |
0x00002aaaab122066: cmp (%r10),%r12 | |
0x00002aaaab122069: je 0x00002aaaab1220ee | |
0x00002aaaab12206f: mov %rsp,-0x28(%rsp) | |
0x00002aaaab122074: sub $0x80,%rsp | |
0x00002aaaab12207b: mov %rax,0x78(%rsp) | |
0x00002aaaab122080: mov %rcx,0x70(%rsp) | |
0x00002aaaab122085: mov %rdx,0x68(%rsp) | |
0x00002aaaab12208a: mov %rbx,0x60(%rsp) | |
0x00002aaaab12208f: mov %rbp,0x50(%rsp) | |
0x00002aaaab122094: mov %rsi,0x48(%rsp) | |
0x00002aaaab122099: mov %rdi,0x40(%rsp) | |
0x00002aaaab12209e: mov %r8,0x38(%rsp) | |
0x00002aaaab1220a3: mov %r9,0x30(%rsp) | |
0x00002aaaab1220a8: mov %r10,0x28(%rsp) | |
0x00002aaaab1220ad: mov %r11,0x20(%rsp) | |
0x00002aaaab1220b2: mov %r12,0x18(%rsp) | |
0x00002aaaab1220b7: mov %r13,0x10(%rsp) | |
0x00002aaaab1220bc: mov %r14,0x8(%rsp) | |
0x00002aaaab1220c1: mov %r15,(%rsp) | |
0x00002aaaab1220c5: mov $0x2ae74d5c7980,%rdi ; {external_word} | |
0x00002aaaab1220cf: mov $0x2aaaab12206f,%rsi ; {internal_word} | |
0x00002aaaab1220d9: mov %rsp,%rdx | |
0x00002aaaab1220dc: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab1220e0: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab1220ea: rex.WB callq *%r10 | |
0x00002aaaab1220ed: hlt | |
0x00002aaaab1220ee: pop %r10 | |
0x00002aaaab1220f0: test %rax,%rax | |
0x00002aaaab1220f3: jne 0x00002aaaab122178 | |
0x00002aaaab1220f9: mov %rsp,-0x28(%rsp) | |
0x00002aaaab1220fe: sub $0x80,%rsp | |
0x00002aaaab122105: mov %rax,0x78(%rsp) | |
0x00002aaaab12210a: mov %rcx,0x70(%rsp) | |
0x00002aaaab12210f: mov %rdx,0x68(%rsp) | |
0x00002aaaab122114: mov %rbx,0x60(%rsp) | |
0x00002aaaab122119: mov %rbp,0x50(%rsp) | |
0x00002aaaab12211e: mov %rsi,0x48(%rsp) | |
0x00002aaaab122123: mov %rdi,0x40(%rsp) | |
0x00002aaaab122128: mov %r8,0x38(%rsp) | |
0x00002aaaab12212d: mov %r9,0x30(%rsp) | |
0x00002aaaab122132: mov %r10,0x28(%rsp) | |
0x00002aaaab122137: mov %r11,0x20(%rsp) | |
0x00002aaaab12213c: mov %r12,0x18(%rsp) | |
0x00002aaaab122141: mov %r13,0x10(%rsp) | |
0x00002aaaab122146: mov %r14,0x8(%rsp) | |
0x00002aaaab12214b: mov %r15,(%rsp) | |
0x00002aaaab12214f: mov $0x2ae74d5c79c0,%rdi ; {external_word} | |
0x00002aaaab122159: mov $0x2aaaab1220f9,%rsi ; {internal_word} | |
0x00002aaaab122163: mov %rsp,%rdx | |
0x00002aaaab122166: and $0xfffffffffffffff0,%rsp | |
0x00002aaaab12216a: mov $0x2ae74cb3f860,%r10 ; {runtime_call} | |
0x00002aaaab122174: rex.WB callq *%r10 | |
0x00002aaaab122177: hlt | |
0x00002aaaab122178: mov %rax,%r11 | |
0x00002aaaab12217b: mov 0x30(%rsp),%r10 | |
0x00002aaaab122180: mov %r11d,0x10(%r10) | |
0x00002aaaab122184: shr $0x9,%r10 | |
0x00002aaaab122188: mov $0x2aaaadac4000,%r11 | |
0x00002aaaab122192: mov %r12b,(%r11,%r10,1) ;*invokespecial <init> | |
; - Test::charlie@4 (line 13) | |
0x00002aaaab122196: mov (%rsp),%r10 | |
0x00002aaaab12219a: mov 0xc(%r10),%r13d ;*arraylength | |
; - Test::charlie@13 (line 14) | |
; implicit exception: dispatches to 0x00002aaaab122739 | |
;; B6: # B27 B7 <- B5 Freq: 0.999999 | |
0x00002aaaab12219e: test %r13d,%r13d | |
0x00002aaaab1221a1: jle 0x00002aaaab122297 ;*if_icmpge | |
; - Test::charlie@23 (line 14) | |
;; B7: # B76 B8 <- B6 Freq: 0.749896 | |
0x00002aaaab1221a7: test %r13d,%r13d | |
0x00002aaaab1221aa: jbe 0x00002aaaab122639 | |
;; B8: # B76 B9 <- B7 Freq: 0.749895 | |
0x00002aaaab1221b0: mov %r13d,%r10d | |
0x00002aaaab1221b3: dec %r10d | |
0x00002aaaab1221b6: cmp %r13d,%r10d | |
0x00002aaaab1221b9: jae 0x00002aaaab122639 | |
;; B9: # B10 <- B8 Freq: 0.749894 | |
0x00002aaaab1221bf: xor %r14d,%r14d | |
0x00002aaaab1221c2: nop | |
0x00002aaaab1221c3: nop | |
0x00002aaaab1221c4: nop | |
0x00002aaaab1221c5: nop | |
0x00002aaaab1221c6: nop | |
0x00002aaaab1221c7: nop | |
0x00002aaaab1221c8: nop | |
0x00002aaaab1221c9: nop | |
0x00002aaaab1221ca: nop | |
0x00002aaaab1221cb: nop | |
0x00002aaaab1221cc: nop | |
0x00002aaaab1221cd: nop | |
0x00002aaaab1221ce: nop | |
0x00002aaaab1221cf: nop ;*aload | |
; - Test::charlie@26 (line 14) | |
;; B10: # B82 B11 <- B9 B26 Loop: B10-B26 inner Freq: 2.99829 | |
0x00002aaaab1221d0: mov (%rsp),%r10 | |
0x00002aaaab1221d4: mov 0x10(%r10,%r14,4),%r11d ;*aaload | |
; - Test::charlie@30 (line 14) | |
0x00002aaaab1221d9: mov 0x14(%r11),%r9d ;*getfield count | |
; - java.lang.String::length@1 (line 651) | |
; - java.lang.AbstractStringBuilder::append@8 (line 386) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
; implicit exception: dispatches to 0x00002aaaab12270d | |
;; B11: # B26 B12 <- B10 Freq: 2.99829 | |
0x00002aaaab1221dd: test %r9d,%r9d | |
0x00002aaaab1221e0: je 0x00002aaaab12228b ;*ifne | |
; - java.lang.AbstractStringBuilder::append@13 (line 387) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
;; B12: # B79 B13 <- B11 Freq: 2.99829 | |
0x00002aaaab1221e6: mov 0x30(%rsp),%r10 | |
0x00002aaaab1221eb: mov 0x10(%r10),%edx ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@27 (line 389) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
0x00002aaaab1221ef: mov 0xc(%rdx),%r10d ; implicit exception: dispatches to 0x00002aaaab1226a7 | |
;; B13: # B70 B14 <- B12 Freq: 2.99829 | |
0x00002aaaab1221f3: mov 0x30(%rsp),%r8 | |
0x00002aaaab1221f8: mov 0xc(%r8),%eax ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@19 (line 388) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
0x00002aaaab1221fc: mov %r9d,%ebx | |
0x00002aaaab1221ff: add %eax,%ebx ;*iadd | |
; - java.lang.AbstractStringBuilder::append@23 (line 388) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
0x00002aaaab122201: cmp %r10d,%ebx | |
0x00002aaaab122204: jg 0x00002aaaab122585 ;*if_icmple | |
; - java.lang.AbstractStringBuilder::append@31 (line 389) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
;; B14: # B15 <- B13 Freq: 2.99829 | |
0x00002aaaab12220a: mov %r9d,%r8d ;*getfield count | |
; - java.lang.String::getChars@15 (line 848) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
;; B15: # B69 B16 <- B71 B14 Freq: 2.99829 | |
0x00002aaaab12220d: cmp %r8d,%r9d | |
0x00002aaaab122210: jg 0x00002aaaab122557 ;*if_icmple | |
; - java.lang.String::getChars@18 (line 848) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
;; B16: # B72 B17 <- B15 Freq: 2.99829 | |
0x00002aaaab122216: test %r9d,%r9d | |
0x00002aaaab122219: jl 0x00002aaaab1225da ;*if_icmple | |
; - java.lang.String::getChars@32 (line 851) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
;; B17: # B80 B18 <- B16 Freq: 2.99829 | |
0x00002aaaab12221f: mov 0x10(%r11),%edi ;*getfield offset | |
; - java.lang.String::getChars@51 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
0x00002aaaab122223: mov 0xc(%r11),%ebp | |
0x00002aaaab122227: mov 0xc(%rbp),%r8d ; implicit exception: dispatches to 0x00002aaaab1226c1 | |
;; B18: # B81 B19 <- B17 Freq: 2.99828 | |
0x00002aaaab12222b: mov 0xc(%rdx),%r11d ; implicit exception: dispatches to 0x00002aaaab1226e9 | |
;; B19: # B67 B20 <- B18 Freq: 2.99828 | |
0x00002aaaab12222f: mov %rbp,%rsi ;*getfield value | |
; - java.lang.String::getChars@47 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
0x00002aaaab122232: mov %rdx,%rcx ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@43 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
0x00002aaaab122235: test %edi,%edi | |
0x00002aaaab122237: jl 0x00002aaaab122524 | |
;; B20: # B67 B21 <- B19 Freq: 2.99828 | |
0x00002aaaab12223d: test %eax,%eax | |
0x00002aaaab12223f: jl 0x00002aaaab122524 | |
;; B21: # B67 B22 <- B20 Freq: 2.99827 | |
0x00002aaaab122245: mov %r9d,%r10d | |
0x00002aaaab122248: add %edi,%r10d | |
0x00002aaaab12224b: cmp %r10d,%r8d | |
0x00002aaaab12224e: jb 0x00002aaaab122524 | |
;; B22: # B67 B23 <- B21 Freq: 2.99827 | |
0x00002aaaab122254: mov %eax,%r8d | |
0x00002aaaab122257: add %r9d,%r8d | |
0x00002aaaab12225a: cmp %r8d,%r11d | |
0x00002aaaab12225d: jb 0x00002aaaab122524 | |
;; B23: # B25 B24 <- B22 Freq: 2.99827 | |
0x00002aaaab122263: test %r9d,%r9d | |
0x00002aaaab122266: jle 0x00002aaaab122282 | |
;; B24: # B25 <- B23 Freq: 2.99826 | |
0x00002aaaab122268: lea 0x10(%rbp,%rdi,2),%rdi | |
0x00002aaaab12226d: lea 0x10(%rdx,%rax,2),%rsi | |
0x00002aaaab122272: movslq %r9d,%rdx | |
0x00002aaaab122275: mov $0x2aaaab0fce80,%r10 | |
0x00002aaaab12227f: callq *%r10 ;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
;; B25: # B26 <- B24 B23 B68 Freq: 2.99828 | |
0x00002aaaab122282: mov 0x30(%rsp),%r10 | |
0x00002aaaab122287: mov %ebx,0xc(%r10) ;*invokevirtual append | |
; - Test::charlie@36 (line 15) | |
;; B26: # B10 B27 <- B11 B25 Freq: 2.99828 | |
0x00002aaaab12228b: inc %r14d ;*iinc | |
; - Test::charlie@40 (line 14) | |
0x00002aaaab12228e: cmp %r13d,%r14d | |
0x00002aaaab122291: jl 0x00002aaaab1221d0 ;*if_icmpge | |
; - Test::charlie@23 (line 14) | |
;; B27: # B57 B28 <- B26 B6 Freq: 0.999984 | |
0x00002aaaab122297: mov 0xc(%rsp),%r10d | |
0x00002aaaab12229c: neg %r10d | |
0x00002aaaab12229f: mov %r10d,0x14(%rsp) | |
0x00002aaaab1222a4: mov 0xc(%rsp),%r8d | |
0x00002aaaab1222a9: cmp $0x80000000,%r8d | |
0x00002aaaab1222b0: jne 0x00002aaaab122494 | |
;; B28: # B32 <- B27 Freq: 0.499992 | |
0x00002aaaab1222b6: mov $0xc,%r13d | |
0x00002aaaab1222bc: mov $0xb,%ebp | |
0x00002aaaab1222c1: jmp 0x00002aaaab1222db | |
;; B29: # B30 <- B30 top-of-loop Freq: 499992 | |
0x00002aaaab1222c3: inc %ecx | |
;; B30: # B29 B31 <- B59 B29 Loop: B30-B29 inner Freq: 499992 | |
0x00002aaaab1222c5: mov 0x10(%r11,%rcx,4),%r9d | |
0x00002aaaab1222ca: cmp %r9d,%r10d | |
0x00002aaaab1222cd: jg 0x00002aaaab1222c3 | |
;; B31: # B32 <- B30 Freq: 0.499992 | |
0x00002aaaab1222cf: add %ecx,%r13d | |
0x00002aaaab1222d2: mov %r13d,%ebp | |
0x00002aaaab1222d5: inc %ebp | |
0x00002aaaab1222d7: add $0x2,%r13d ;*getfield count | |
; - java.lang.String::getChars@15 (line 848) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
;; B32: # B73 B33 <- B28 B31 Freq: 0.999984 | |
0x00002aaaab1222db: test %r13d,%r13d | |
0x00002aaaab1222de: jl 0x00002aaaab122609 | |
;; B33: # B65 B34 <- B32 Freq: 0.999983 | |
0x00002aaaab1222e4: cmp $0x80000,%r13d | |
0x00002aaaab1222eb: ja 0x00002aaaab1224f1 | |
;; B34: # B65 B35 <- B33 Freq: 0.999982 | |
0x00002aaaab1222f1: mov 0x70(%r15),%r14 | |
0x00002aaaab1222f5: movslq %ebp,%r10 | |
0x00002aaaab1222f8: shl %r10 | |
0x00002aaaab1222fb: add $0x19,%r10 | |
0x00002aaaab1222ff: and $0xfffffffffffffff8,%r10 | |
0x00002aaaab122303: mov %r14,%r11 | |
0x00002aaaab122306: add %r10,%r11 | |
0x00002aaaab122309: cmp 0x80(%r15),%r11 | |
0x00002aaaab122310: jae 0x00002aaaab1224f1 | |
;; B35: # B36 <- B34 Freq: 0.999882 | |
0x00002aaaab122316: mov %r11,0x70(%r15) | |
0x00002aaaab12231a: prefetchnta 0x100(%r11) | |
0x00002aaaab122322: movq $0x1,(%r14) | |
0x00002aaaab122329: prefetchnta 0x140(%r11) | |
0x00002aaaab122331: movl $0xc4200608,0x8(%r14) ; {oop({type array char})} | |
0x00002aaaab122339: mov %r13d,0xc(%r14) | |
0x00002aaaab12233d: prefetchnta 0x180(%r11) ;*getfield value | |
; - java.lang.String::getChars@47 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
;; B36: # B41 B37 <- B66 B35 Freq: 0.999983 | |
0x00002aaaab122345: mov %r14,%rbx | |
0x00002aaaab122348: add $0x10,%rbx ;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
0x00002aaaab12234c: cmp $0x80000000,%r8d | |
0x00002aaaab122353: je 0x00002aaaab12236f | |
;; B37: # B40 B38 <- B36 Freq: 0.499992 | |
0x00002aaaab122355: test %r8d,%r8d | |
0x00002aaaab122358: jge 0x00002aaaab122365 | |
;; B38: # B39 <- B37 Freq: 0.249996 | |
0x00002aaaab12235a: mov $0x2d,%r11d | |
;; B39: # B43 <- B38 B40 Freq: 0.499992 | |
0x00002aaaab122360: mov %ebp,%r10d | |
0x00002aaaab122363: jmp 0x00002aaaab1223a7 | |
;; B40: # B39 <- B37 Freq: 0.249996 | |
0x00002aaaab122365: mov %r8d,0x14(%rsp) | |
0x00002aaaab12236a: xor %r11d,%r11d | |
0x00002aaaab12236d: jmp 0x00002aaaab122360 | |
;; B41: # B46 <- B36 Freq: 0.499992 | |
0x00002aaaab12236f: mov $0xb,%edx | |
0x00002aaaab122374: mov $0xc9412c78,%rdi ; {oop([C)} | |
0x00002aaaab12237e: add $0x10,%rdi | |
0x00002aaaab122382: mov %rbx,%rsi | |
0x00002aaaab122385: mov $0x2aaaab0fccc0,%r10 | |
0x00002aaaab12238f: callq *%r10 | |
0x00002aaaab122392: jmp 0x00002aaaab1223f7 | |
0x00002aaaab122394: nop | |
0x00002aaaab122395: nop | |
0x00002aaaab122396: nop | |
0x00002aaaab122397: nop | |
0x00002aaaab122398: nop | |
0x00002aaaab122399: nop | |
0x00002aaaab12239a: nop | |
0x00002aaaab12239b: nop | |
0x00002aaaab12239c: nop | |
0x00002aaaab12239d: nop | |
0x00002aaaab12239e: nop | |
0x00002aaaab12239f: nop | |
;; B42: # B43 <- B43 top-of-loop Freq: 4.49992 | |
0x00002aaaab1223a0: dec %r10d | |
0x00002aaaab1223a3: mov %edi,0x14(%rsp) | |
;; B43: # B42 B44 <- B39 B42 Loop: B43-B42 inner Freq: 4.99991 | |
0x00002aaaab1223a7: mov 0x14(%rsp),%r9d | |
0x00002aaaab1223ac: sar $0x1f,%r9d | |
0x00002aaaab1223b0: movslq 0x14(%rsp),%r8 | |
0x00002aaaab1223b5: imul $0x66666667,%r8,%r8 | |
0x00002aaaab1223bc: sar $0x22,%r8 | |
0x00002aaaab1223c0: mov %r8d,%r8d | |
0x00002aaaab1223c3: mov %r8d,%edi | |
0x00002aaaab1223c6: sub %r9d,%edi | |
0x00002aaaab1223c9: mov %edi,%ecx | |
0x00002aaaab1223cb: shl $0x3,%ecx | |
0x00002aaaab1223ce: mov %edi,%esi | |
0x00002aaaab1223d0: shl %esi | |
0x00002aaaab1223d2: add %ecx,%esi | |
0x00002aaaab1223d4: mov 0x14(%rsp),%edx | |
0x00002aaaab1223d8: sub %esi,%edx | |
0x00002aaaab1223da: add $0x30,%edx | |
0x00002aaaab1223dd: mov %dx,0xe(%r14,%r10,2) | |
0x00002aaaab1223e3: cmp %r9d,%r8d | |
0x00002aaaab1223e6: jne 0x00002aaaab1223a0 | |
;; B44: # B46 B45 <- B43 Freq: 0.499992 | |
0x00002aaaab1223e8: test %r11d,%r11d | |
0x00002aaaab1223eb: je 0x00002aaaab1223f7 | |
;; B45: # B46 <- B44 Freq: 0.249996 | |
0x00002aaaab1223ed: add $0xfffffffffffffffe,%r10d | |
0x00002aaaab1223f1: mov %r11w,0x10(%r14,%r10,2) | |
;; B46: # B55 B47 <- B45 B44 B41 Freq: 0.999983 | |
0x00002aaaab1223f7: mov 0x10(%rsp),%r11d | |
0x00002aaaab1223fc: mov %r11w,0x10(%r14,%rbp,2) | |
0x00002aaaab122402: test %r13d,%r13d | |
0x00002aaaab122405: je 0x00002aaaab12247d ;*ifne | |
; - java.lang.AbstractStringBuilder::append@13 (line 387) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
;; B47: # B84 B48 <- B46 Freq: 0.999983 | |
0x00002aaaab122407: mov 0x30(%rsp),%r10 | |
0x00002aaaab12240c: mov 0x10(%r10),%r10d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@27 (line 389) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
0x00002aaaab122410: mov 0xc(%r10),%r11d ; implicit exception: dispatches to 0x00002aaaab122751 | |
;; B48: # B77 B49 <- B47 Freq: 0.999982 | |
0x00002aaaab122414: mov 0x30(%rsp),%r8 | |
0x00002aaaab122419: mov 0xc(%r8),%r8d ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@19 (line 388) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
0x00002aaaab12241d: mov %ebp,%r9d | |
0x00002aaaab122420: add %r8d,%r9d | |
0x00002aaaab122423: inc %r9d ;*iadd | |
; - java.lang.AbstractStringBuilder::append@23 (line 388) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
0x00002aaaab122426: mov %r9d,0x10(%rsp) | |
0x00002aaaab12242b: cmp %r11d,%r9d | |
0x00002aaaab12242e: jg 0x00002aaaab122659 ;*aload_1 | |
; - java.lang.AbstractStringBuilder::append@39 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
;; B49: # B85 B50 <- B78 B48 Freq: 0.999982 | |
0x00002aaaab122434: mov 0xc(%r10),%r11d ; implicit exception: dispatches to 0x00002aaaab122769 | |
;; B50: # B74 B51 <- B49 Freq: 0.999981 | |
0x00002aaaab122438: mov %r10,%rcx ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@43 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
0x00002aaaab12243b: test %r8d,%r8d | |
0x00002aaaab12243e: jl 0x00002aaaab122625 | |
;; B51: # B74 B52 <- B50 Freq: 0.999979 | |
0x00002aaaab122444: add %r8d,%ebp | |
0x00002aaaab122447: inc %ebp | |
0x00002aaaab122449: cmp %ebp,%r11d | |
0x00002aaaab12244c: jb 0x00002aaaab122625 | |
;; B52: # B54 B53 <- B51 Freq: 0.999978 | |
0x00002aaaab122452: test %r13d,%r13d | |
0x00002aaaab122455: jle 0x00002aaaab12246f | |
;; B53: # B54 <- B52 Freq: 0.999977 | |
0x00002aaaab122457: lea 0x10(%r10,%r8,2),%rsi | |
0x00002aaaab12245c: movslq %r13d,%rdx | |
0x00002aaaab12245f: mov %rbx,%rdi | |
0x00002aaaab122462: mov $0x2aaaab0fce80,%r10 | |
0x00002aaaab12246c: callq *%r10 ;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
;; B54: # B55 <- B53 B52 B75 Freq: 0.999981 | |
0x00002aaaab12246f: mov 0x30(%rsp),%r10 | |
0x00002aaaab122474: mov 0x10(%rsp),%r8d | |
0x00002aaaab122479: mov %r8d,0xc(%r10) ;*invokevirtual append | |
; - Test::charlie@68 (line 17) | |
;; B55: # B95 B56 <- B46 B54 Freq: 0.999981 | |
0x00002aaaab12247d: mov 0x30(%rsp),%rsi | |
0x00002aaaab122482: nop | |
0x00002aaaab122483: callq 0x00002aaaab0f2b20 ; OopMap{off=1256} | |
;*invokevirtual toString | |
; - Test::charlie@73 (line 18) | |
; {optimized virtual_call} | |
;; B56: # N1 <- B55 Freq: 0.999961 | |
0x00002aaaab122488: add $0x50,%rsp | |
0x00002aaaab12248c: pop %rbp | |
0x00002aaaab12248d: test %eax,-0x42a493(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab122493: retq | |
;; B57: # B60 B58 <- B27 Freq: 0.499992 | |
0x00002aaaab122494: test %r8d,%r8d | |
0x00002aaaab122497: jge 0x00002aaaab1224b0 | |
;; B58: # B59 <- B57 Freq: 0.249996 | |
0x00002aaaab122499: mov $0x1,%r13d | |
;; B59: # B30 <- B58 B60 Freq: 0.499992 | |
0x00002aaaab12249f: mov $0xc9414148,%r11 ; {oop([I)} | |
0x00002aaaab1224a9: xor %ecx,%ecx | |
0x00002aaaab1224ab: jmpq 0x00002aaaab1222c5 | |
;; B60: # B59 <- B57 Freq: 0.249996 | |
0x00002aaaab1224b0: mov %r8d,%r10d | |
0x00002aaaab1224b3: xor %r13d,%r13d | |
0x00002aaaab1224b6: jmp 0x00002aaaab12249f | |
;; B61: # B92 B62 <- B1 Freq: 0.000100017 | |
0x00002aaaab1224b8: mov $0xc42692f0,%rsi ; {oop('java/lang/StringBuilder')} | |
0x00002aaaab1224c2: nop | |
0x00002aaaab1224c3: callq 0x00002aaaab1182e0 ; OopMap{[0]=Oop off=1320} | |
;*new ; - Test::charlie@0 (line 13) | |
; {runtime_call} | |
;; B62: # B3 <- B61 Freq: 0.000100015 | |
0x00002aaaab1224c8: mov %rax,%r11 | |
0x00002aaaab1224cb: jmpq 0x00002aaaab121ffc ;*invokespecial <init> | |
; - java.lang.AbstractStringBuilder::<init>@1 (line 44) | |
; - java.lang.StringBuilder::<init>@3 (line 68) | |
; - Test::charlie@4 (line 13) | |
;; B63: # B93 B64 <- B3 Freq: 0.000100017 | |
0x00002aaaab1224d0: mov $0xc4200608,%rsi ; {oop({type array char})} | |
0x00002aaaab1224da: mov $0x10,%edx | |
0x00002aaaab1224df: mov %r11,0x18(%rsp) | |
0x00002aaaab1224e4: nop | |
0x00002aaaab1224e5: nop | |
0x00002aaaab1224e6: nop | |
0x00002aaaab1224e7: callq 0x00002aaaab118220 ; OopMap{[0]=Oop [24]=Oop [48]=Oop off=1356} | |
;*newarray | |
; - java.lang.AbstractStringBuilder::<init>@6 (line 45) | |
; - java.lang.StringBuilder::<init>@3 (line 68) | |
; - Test::charlie@4 (line 13) | |
; {runtime_call} | |
;; B64: # B5 <- B63 Freq: 0.000100015 | |
0x00002aaaab1224ec: jmpq 0x00002aaaab12205a | |
;; B65: # B94 B66 <- B33 B34 Freq: 0.000101028 | |
0x00002aaaab1224f1: mov %ebp,0xc(%rsp) | |
0x00002aaaab1224f5: mov %r13d,0x8(%rsp) | |
0x00002aaaab1224fa: mov %r8d,%ebp | |
0x00002aaaab1224fd: mov $0xc4200608,%rsi ; {oop({type array char})} | |
0x00002aaaab122507: mov %r13d,%edx | |
0x00002aaaab12250a: nop | |
0x00002aaaab12250b: callq 0x00002aaaab118220 ; OopMap{[48]=Oop off=1392} | |
;*new ; - Test::charlie@47 (line 17) | |
; {runtime_call} | |
;; B66: # B36 <- B65 Freq: 0.000101026 | |
0x00002aaaab122510: mov %ebp,%r8d | |
0x00002aaaab122513: mov 0x8(%rsp),%r13d | |
0x00002aaaab122518: mov %rax,%r14 | |
0x00002aaaab12251b: mov 0xc(%rsp),%ebp | |
0x00002aaaab12251f: jmpq 0x00002aaaab122345 | |
;; B67: # B90 B68 <- B19 B20 B21 B22 Freq: 1.19931e-05 | |
0x00002aaaab122524: mov %ebx,0x20(%rsp) | |
0x00002aaaab122528: mov %r9d,%r11d | |
0x00002aaaab12252b: mov %r14d,0x14(%rsp) | |
0x00002aaaab122530: mov %r13d,0x8(%rsp) | |
0x00002aaaab122535: mov %edi,%edx | |
0x00002aaaab122537: mov %eax,%r8d | |
0x00002aaaab12253a: mov %r11d,%r9d | |
0x00002aaaab12253d: nop | |
0x00002aaaab12253e: nop | |
0x00002aaaab12253f: callq 0x00002aaaab11b020 ; OopMap{[0]=Oop [48]=Oop off=1444} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
; {runtime_call} | |
;; B68: # B25 <- B67 Freq: 1.19929e-05 | |
0x00002aaaab122544: mov 0x8(%rsp),%r13d | |
0x00002aaaab122549: mov 0x14(%rsp),%r14d | |
0x00002aaaab12254e: mov 0x20(%rsp),%ebx | |
0x00002aaaab122552: jmpq 0x00002aaaab122282 | |
;; B69: # N1 <- B15 Freq: 1.4297e-06 | |
0x00002aaaab122557: mov $0xce,%esi | |
0x00002aaaab12255c: mov (%rsp),%rbp | |
0x00002aaaab122560: mov %r14d,(%rsp) | |
0x00002aaaab122564: mov %r9d,0x4(%rsp) | |
0x00002aaaab122569: mov %r13d,0x8(%rsp) | |
0x00002aaaab12256e: mov %ebx,0x14(%rsp) | |
0x00002aaaab122572: nop | |
0x00002aaaab122573: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop [48]=Oop off=1496} | |
;*new ; - java.lang.String::getChars@21 (line 849) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
; {runtime_call} | |
0x00002aaaab122578: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab122582: rex.WB callq *%r10 ;*new ; - java.lang.String::getChars@21 (line 849) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
;; B70: # B87 B71 <- B13 Freq: 1.4297e-06 | |
0x00002aaaab122585: mov %ebx,0x28(%rsp) | |
0x00002aaaab122589: mov %r9d,0x24(%rsp) | |
0x00002aaaab12258e: mov %r14d,0x14(%rsp) | |
0x00002aaaab122593: mov %r13d,0x8(%rsp) | |
0x00002aaaab122598: mov %r11,%rbp ;*aaload | |
; - Test::charlie@30 (line 14) | |
0x00002aaaab12259b: mov %r11d,0x20(%rsp) | |
0x00002aaaab1225a0: mov 0x30(%rsp),%rsi | |
0x00002aaaab1225a5: mov %ebx,%edx | |
0x00002aaaab1225a7: callq 0x00002aaaab0f2b20 ; OopMap{rbp=Oop [0]=Oop [32]=NarrowOop [48]=Oop off=1548} | |
;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
; {optimized virtual_call} | |
;; B71: # B15 <- B70 Freq: 1.42967e-06 | |
0x00002aaaab1225ac: mov 0x20(%rsp),%r11d | |
0x00002aaaab1225b1: mov 0x14(%r11),%r8d ;*getfield count | |
; - java.lang.String::getChars@15 (line 848) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
0x00002aaaab1225b5: mov 0x30(%rsp),%r10 | |
0x00002aaaab1225ba: mov 0x10(%r10),%edx ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@43 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
0x00002aaaab1225be: mov 0xc(%r10),%eax ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@47 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
0x00002aaaab1225c2: mov 0x8(%rsp),%r13d | |
0x00002aaaab1225c7: mov 0x14(%rsp),%r14d | |
0x00002aaaab1225cc: mov 0x24(%rsp),%r9d | |
0x00002aaaab1225d1: mov 0x28(%rsp),%ebx | |
0x00002aaaab1225d5: jmpq 0x00002aaaab12220d | |
;; B72: # N1 <- B16 Freq: 1.42969e-06 | |
0x00002aaaab1225da: mov $0xce,%esi | |
0x00002aaaab1225df: mov (%rsp),%rbp | |
0x00002aaaab1225e3: mov %r14d,(%rsp) | |
0x00002aaaab1225e7: mov %r9d,0x4(%rsp) | |
0x00002aaaab1225ec: mov %r13d,0x8(%rsp) | |
0x00002aaaab1225f1: mov %ebx,0x14(%rsp) | |
0x00002aaaab1225f5: nop | |
0x00002aaaab1225f6: nop | |
0x00002aaaab1225f7: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop [48]=Oop off=1628} | |
;*new ; - java.lang.String::getChars@35 (line 852) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
; {runtime_call} | |
0x00002aaaab1225fc: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab122606: rex.WB callq *%r10 ;*new ; - java.lang.String::getChars@35 (line 852) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
;; B73: # N1 <- B32 Freq: 9.99984e-07 | |
0x00002aaaab122609: mov $0xffffffcc,%esi | |
0x00002aaaab12260e: mov %r8d,%ebp | |
0x00002aaaab122611: nop | |
0x00002aaaab122612: nop | |
0x00002aaaab122613: callq 0x00002aaaab0f3fa0 ; OopMap{[48]=Oop off=1656} | |
;*new ; - Test::charlie@47 (line 17) | |
; {runtime_call} | |
0x00002aaaab122618: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab122622: rex.WB callq *%r10 | |
;; B74: # B88 B75 <- B51 B50 Freq: 1.99996e-06 | |
0x00002aaaab122625: mov %r14,%rsi | |
0x00002aaaab122628: xor %edx,%edx | |
0x00002aaaab12262a: mov %r13d,%r9d | |
0x00002aaaab12262d: nop | |
0x00002aaaab12262e: nop | |
0x00002aaaab12262f: callq 0x00002aaaab11b020 ; OopMap{[48]=Oop off=1684} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
; {runtime_call} | |
;; B75: # B54 <- B74 Freq: 1.99992e-06 | |
0x00002aaaab122634: jmpq 0x00002aaaab12246f | |
;; B76: # N1 <- B8 B7 Freq: 1.50975e-06 | |
0x00002aaaab122639: mov $0xffffff86,%esi | |
0x00002aaaab12263e: mov (%rsp),%rbp | |
0x00002aaaab122642: mov %r13d,0x8(%rsp) | |
0x00002aaaab122647: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop [48]=Oop off=1708} | |
;*aload | |
; - Test::charlie@26 (line 14) | |
; {runtime_call} | |
0x00002aaaab12264c: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab122656: rex.WB callq *%r10 ;*aload | |
; - Test::charlie@26 (line 14) | |
;; B77: # B86 B78 <- B48 Freq: 4.76828e-07 | |
0x00002aaaab122659: mov %r9d,0xc(%rsp) | |
0x00002aaaab12265e: mov %rbx,0x18(%rsp) | |
0x00002aaaab122663: mov %r14,0x10(%rsp) | |
0x00002aaaab122668: mov %r13d,0x8(%rsp) ;*ifne | |
; - java.lang.AbstractStringBuilder::append@13 (line 387) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
0x00002aaaab12266d: mov 0x30(%rsp),%rsi | |
0x00002aaaab122672: mov %r9d,%edx | |
0x00002aaaab122675: nop | |
0x00002aaaab122676: nop | |
0x00002aaaab122677: callq 0x00002aaaab0f2b20 ; OopMap{[16]=Oop [24]=Derived_oop_[16] [48]=Oop off=1756} | |
;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
; {optimized virtual_call} | |
;; B78: # B49 <- B77 Freq: 4.76819e-07 | |
0x00002aaaab12267c: mov 0x30(%rsp),%r10 | |
0x00002aaaab122681: mov 0xc(%r10),%r8d ;*getfield count | |
; - java.lang.AbstractStringBuilder::append@47 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
0x00002aaaab122685: mov 0x10(%r10),%r10d ;*getfield value | |
; - java.lang.AbstractStringBuilder::append@43 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
0x00002aaaab122689: mov 0x8(%rsp),%r13d | |
0x00002aaaab12268e: mov 0x10(%rsp),%r14 | |
0x00002aaaab122693: mov 0x18(%rsp),%rbx | |
0x00002aaaab122698: mov 0xc(%rsp),%r9d | |
0x00002aaaab12269d: mov %r9d,0x10(%rsp) | |
0x00002aaaab1226a2: jmpq 0x00002aaaab122434 | |
;; B79: # N1 <- B12 Freq: 3.03811e-06 | |
0x00002aaaab1226a7: mov $0xfffffff6,%esi | |
0x00002aaaab1226ac: nop | |
0x00002aaaab1226ad: nop | |
0x00002aaaab1226ae: nop | |
0x00002aaaab1226af: callq 0x00002aaaab0f3fa0 ; OopMap{off=1812} | |
;*arraylength | |
; - java.lang.AbstractStringBuilder::append@30 (line 389) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
; {runtime_call} | |
0x00002aaaab1226b4: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab1226be: rex.WB callq *%r10 ;*arraylength | |
; - java.lang.AbstractStringBuilder::append@30 (line 389) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
;; B80: # N1 <- B17 Freq: 3.0381e-06 | |
0x00002aaaab1226c1: mov $0xfffffff6,%esi | |
0x00002aaaab1226c6: mov %r9d,%ebp | |
0x00002aaaab1226c9: mov %edi,(%rsp) | |
0x00002aaaab1226cc: mov %edx,0x4(%rsp) | |
0x00002aaaab1226d0: mov %eax,0x8(%rsp) | |
0x00002aaaab1226d4: nop | |
0x00002aaaab1226d5: nop | |
0x00002aaaab1226d6: nop | |
0x00002aaaab1226d7: callq 0x00002aaaab0f3fa0 ; OopMap{[4]=NarrowOop off=1852} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
; {runtime_call} | |
0x00002aaaab1226dc: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab1226e6: rex.WB callq *%r10 | |
;; B81: # N1 <- B18 Freq: 3.0381e-06 | |
0x00002aaaab1226e9: mov $0xfffffff6,%esi | |
0x00002aaaab1226ee: mov %r9d,(%rsp) | |
0x00002aaaab1226f2: mov %edi,0x4(%rsp) | |
0x00002aaaab1226f6: mov %eax,0x8(%rsp) | |
0x00002aaaab1226fa: nop | |
0x00002aaaab1226fb: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=NarrowOop off=1888} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
; {runtime_call} | |
0x00002aaaab122700: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab12270a: rex.WB callq *%r10 ;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
;; B82: # N1 <- B10 Freq: 1.4297e-06 | |
0x00002aaaab12270d: mov $0xffffffad,%esi | |
0x00002aaaab122712: mov (%rsp),%rbp | |
0x00002aaaab122716: mov %r14d,(%rsp) | |
0x00002aaaab12271a: mov %r11d,0x8(%rsp) | |
0x00002aaaab12271f: mov %r13d,0x14(%rsp) | |
0x00002aaaab122724: nop | |
0x00002aaaab122725: nop | |
0x00002aaaab122726: nop | |
0x00002aaaab122727: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop [8]=NarrowOop [48]=Oop off=1932} | |
;*ifnonnull | |
; - java.lang.AbstractStringBuilder::append@1 (line 385) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
; {runtime_call} | |
0x00002aaaab12272c: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab122736: rex.WB callq *%r10 ;*ifnonnull | |
; - java.lang.AbstractStringBuilder::append@1 (line 385) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
;; B83: # N1 <- B5 Freq: 1.01328e-06 | |
0x00002aaaab122739: mov $0xfffffff6,%esi | |
0x00002aaaab12273e: nop | |
0x00002aaaab12273f: callq 0x00002aaaab0f3fa0 ; OopMap{off=1956} | |
;*arraylength | |
; - Test::charlie@13 (line 14) | |
; {runtime_call} | |
0x00002aaaab122744: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab12274e: rex.WB callq *%r10 | |
;; B84: # N1 <- B47 Freq: 1.01326e-06 | |
0x00002aaaab122751: mov $0xfffffff6,%esi | |
0x00002aaaab122756: nop | |
0x00002aaaab122757: callq 0x00002aaaab0f3fa0 ; OopMap{off=1980} | |
;*arraylength | |
; - java.lang.AbstractStringBuilder::append@30 (line 389) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
; {runtime_call} | |
0x00002aaaab12275c: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab122766: rex.WB callq *%r10 | |
;; B85: # N1 <- B49 Freq: 1.01326e-06 | |
0x00002aaaab122769: mov $0xfffffff6,%esi | |
0x00002aaaab12276e: mov %r14,%rbp | |
0x00002aaaab122771: mov %r8d,(%rsp) | |
0x00002aaaab122775: mov %r13d,0x4(%rsp) | |
0x00002aaaab12277a: nop | |
0x00002aaaab12277b: callq 0x00002aaaab0f3fa0 ; OopMap{rbp=Oop off=2016} | |
;*invokestatic arraycopy | |
; - java.lang.String::getChars@62 (line 854) | |
; - java.lang.AbstractStringBuilder::append@50 (line 391) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
; {runtime_call} | |
0x00002aaaab122780: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab12278a: rex.WB callq *%r10 ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
;; B86: # B89 <- B77 Freq: 4.76828e-12 | |
0x00002aaaab12278d: jmp 0x00002aaaab122791 ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
;; B87: # B91 <- B70 Freq: 1.42969e-11 | |
0x00002aaaab12278f: jmp 0x00002aaaab122796 ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
;; B88: # B89 <- B74 Freq: 1.99996e-11 | |
;; B89: # B96 <- B86 B88 Freq: 2.47679e-11 | |
0x00002aaaab122791: mov %rax,%rsi | |
0x00002aaaab122794: jmp 0x00002aaaab1227ad ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@36 (line 15) | |
;; B90: # B91 <- B67 Freq: 1.19931e-10 | |
;; B91: # B96 <- B87 B90 Freq: 1.34228e-10 | |
0x00002aaaab122796: mov %rax,%rsi | |
0x00002aaaab122799: jmp 0x00002aaaab1227ad ;*new | |
; - Test::charlie@0 (line 13) | |
;; B92: # B96 <- B61 Freq: 1.00017e-09 | |
0x00002aaaab12279b: mov %rax,%rsi | |
0x00002aaaab12279e: jmp 0x00002aaaab1227ad ;*newarray | |
; - java.lang.AbstractStringBuilder::<init>@6 (line 45) | |
; - java.lang.StringBuilder::<init>@3 (line 68) | |
; - Test::charlie@4 (line 13) | |
;; B93: # B96 <- B63 Freq: 1.00017e-09 | |
0x00002aaaab1227a0: mov %rax,%rsi | |
0x00002aaaab1227a3: jmp 0x00002aaaab1227ad ;*invokevirtual expandCapacity | |
; - java.lang.AbstractStringBuilder::append@36 (line 390) | |
; - java.lang.StringBuilder::append@2 (line 119) | |
; - Test::charlie@68 (line 17) | |
;; B94: # B96 <- B65 Freq: 1.01028e-09 | |
0x00002aaaab1227a5: mov %rax,%rsi | |
0x00002aaaab1227a8: jmp 0x00002aaaab1227ad ;*invokevirtual toString | |
; - Test::charlie@73 (line 18) | |
;; B95: # B96 <- B55 Freq: 9.99981e-06 | |
0x00002aaaab1227aa: mov %rax,%rsi ;*invokespecial <init> | |
; - Test::charlie@4 (line 13) | |
;; B96: # N1 <- B93 B91 B92 B95 B89 B94 Freq: 1.0003e-05 | |
0x00002aaaab1227ad: add $0x50,%rsp | |
0x00002aaaab1227b1: pop %rbp | |
0x00002aaaab1227b2: jmpq 0x00002aaaab117a20 ; {runtime_call} | |
0x00002aaaab1227b7: hlt | |
0x00002aaaab1227b8: hlt | |
0x00002aaaab1227b9: hlt | |
0x00002aaaab1227ba: hlt | |
0x00002aaaab1227bb: hlt | |
0x00002aaaab1227bc: hlt | |
0x00002aaaab1227bd: hlt | |
0x00002aaaab1227be: hlt | |
0x00002aaaab1227bf: hlt | |
[Stub Code] | |
0x00002aaaab1227c0: mov $0x0,%rbx ; {no_reloc} | |
0x00002aaaab1227ca: jmpq 0x00002aaaab1227ca ; {runtime_call} | |
0x00002aaaab1227cf: mov $0x0,%rbx ; {static_stub} | |
0x00002aaaab1227d9: jmpq 0x00002aaaab1227d9 ; {runtime_call} | |
0x00002aaaab1227de: mov $0x0,%rbx ; {static_stub} | |
0x00002aaaab1227e8: jmpq 0x00002aaaab1227e8 ; {runtime_call} | |
[Exception Handler] | |
0x00002aaaab1227ed: jmpq 0x00002aaaab101c20 ; {runtime_call} | |
[Deopt Handler Code] | |
0x00002aaaab1227f2: callq 0x00002aaaab1227f7 | |
0x00002aaaab1227f7: subq $0x5,(%rsp) | |
0x00002aaaab1227fc: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab122801: int3 | |
0x00002aaaab122802: int3 | |
0x00002aaaab122803: int3 | |
0x00002aaaab122804: int3 | |
0x00002aaaab122805: int3 | |
0x00002aaaab122806: int3 | |
0x00002aaaab122807: int3 | |
Decoding compiled method 0x00002aaaab121a10: | |
Code: | |
[Entry Point] | |
[Verified Entry Point] | |
[Constants] | |
# {method} 'stringSize' '(I)I' in 'java/lang/Integer' | |
# parm0: rsi = int | |
# [sp+0x30] (sp of caller) | |
;; N1: # B1 <- B21 B22 Freq: 1 | |
;; B1: # B20 B2 <- BLOCK HEAD IS JUNK Freq: 1 | |
0x00002aaaab121b40: mov %eax,-0x8000(%rsp) | |
0x00002aaaab121b47: push %rbp | |
0x00002aaaab121b48: sub $0x20,%rsp ;*synchronization entry | |
; - java.lang.Integer::stringSize@-1 (line 361) | |
0x00002aaaab121b4c: mov $0xc9414068,%r10 ; {oop(a 'java/lang/Class' = 'java/lang/Integer')} | |
0x00002aaaab121b56: mov 0x80(%r10),%r9d ;*getstatic sizeTable | |
; - java.lang.Integer::stringSize@3 (line 362) | |
0x00002aaaab121b5d: mov 0x10(%r9),%r10d | |
0x00002aaaab121b61: cmp %r10d,%esi | |
0x00002aaaab121b64: jle 0x00002aaaab121bfe | |
;; B2: # B19 B3 <- B1 Freq: 0.499951 | |
0x00002aaaab121b6a: mov 0x14(%r9),%r11d | |
0x00002aaaab121b6e: cmp %r11d,%esi | |
0x00002aaaab121b71: jle 0x00002aaaab121bf7 | |
;; B3: # B18 B4 <- B2 Freq: 0.249951 | |
0x00002aaaab121b77: mov 0x18(%r9),%r11d | |
0x00002aaaab121b7b: cmp %r11d,%esi | |
0x00002aaaab121b7e: jle 0x00002aaaab121bf0 | |
;; B4: # B17 B5 <- B3 Freq: 0.124964 | |
0x00002aaaab121b80: mov 0x1c(%r9),%r11d | |
0x00002aaaab121b84: cmp %r11d,%esi | |
0x00002aaaab121b87: jle 0x00002aaaab121be9 | |
;; B5: # B16 B6 <- B4 Freq: 0.0624757 | |
0x00002aaaab121b89: mov 0x20(%r9),%r11d | |
0x00002aaaab121b8d: cmp %r11d,%esi | |
0x00002aaaab121b90: jle 0x00002aaaab121be2 ;*if_icmpgt | |
; - java.lang.Integer::stringSize@8 (line 362) | |
;; B6: # B15 B7 <- B5 Freq: 0.0312348 | |
0x00002aaaab121b92: mov 0x24(%r9),%r11d ;*iaload | |
; - java.lang.Integer::stringSize@7 (line 362) | |
0x00002aaaab121b96: cmp %r11d,%esi | |
0x00002aaaab121b99: jle 0x00002aaaab121bdb ;*if_icmpgt | |
; - java.lang.Integer::stringSize@8 (line 362) | |
;; B7: # B14 B8 <- B6 Freq: 0.0156159 | |
0x00002aaaab121b9b: mov 0x28(%r9),%r11d ;*iaload | |
; - java.lang.Integer::stringSize@7 (line 362) | |
0x00002aaaab121b9f: cmp %r11d,%esi | |
0x00002aaaab121ba2: jle 0x00002aaaab121bd4 ;*if_icmpgt | |
; - java.lang.Integer::stringSize@8 (line 362) | |
;; B8: # B13 B9 <- B7 Freq: 0.00780719 | |
0x00002aaaab121ba4: mov 0x2c(%r9),%r11d ;*iaload | |
; - java.lang.Integer::stringSize@7 (line 362) | |
0x00002aaaab121ba8: cmp %r11d,%esi | |
0x00002aaaab121bab: jle 0x00002aaaab121bcd ;*if_icmpgt | |
; - java.lang.Integer::stringSize@8 (line 362) | |
;; B9: # B12 B10 <- B8 Freq: 0.00390321 | |
0x00002aaaab121bad: mov 0x30(%r9),%r11d ;*iaload | |
; - java.lang.Integer::stringSize@7 (line 362) | |
0x00002aaaab121bb1: cmp %r11d,%esi | |
0x00002aaaab121bb4: jle 0x00002aaaab121bc6 ;*if_icmpgt | |
; - java.lang.Integer::stringSize@8 (line 362) | |
;; B10: # B22 B11 <- B9 Freq: 0.00195142 | |
0x00002aaaab121bb6: mov 0x34(%r9),%r10d ;*iaload | |
; - java.lang.Integer::stringSize@7 (line 362) | |
0x00002aaaab121bba: cmp %r10d,%esi | |
0x00002aaaab121bbd: jg 0x00002aaaab121c0f ;*if_icmpgt | |
; - java.lang.Integer::stringSize@8 (line 362) | |
;; B11: # B21 <- B10 Freq: 0.00195142 | |
0x00002aaaab121bbf: mov $0xa,%eax | |
0x00002aaaab121bc4: jmp 0x00002aaaab121c03 | |
;; B12: # B21 <- B9 Freq: 0.0019518 | |
0x00002aaaab121bc6: mov $0x9,%eax | |
0x00002aaaab121bcb: jmp 0x00002aaaab121c03 | |
;; B13: # B21 <- B8 Freq: 0.00390397 | |
0x00002aaaab121bcd: mov $0x8,%eax | |
0x00002aaaab121bd2: jmp 0x00002aaaab121c03 | |
;; B14: # B21 <- B7 Freq: 0.00780871 | |
0x00002aaaab121bd4: mov $0x7,%eax | |
0x00002aaaab121bd9: jmp 0x00002aaaab121c03 | |
;; B15: # B21 <- B6 Freq: 0.0156189 | |
0x00002aaaab121bdb: mov $0x6,%eax | |
0x00002aaaab121be0: jmp 0x00002aaaab121c03 | |
;; B16: # B21 <- B5 Freq: 0.0312409 | |
0x00002aaaab121be2: mov $0x5,%eax | |
0x00002aaaab121be7: jmp 0x00002aaaab121c03 | |
;; B17: # B21 <- B4 Freq: 0.0624879 | |
0x00002aaaab121be9: mov $0x4,%eax | |
0x00002aaaab121bee: jmp 0x00002aaaab121c03 | |
;; B18: # B21 <- B3 Freq: 0.124988 | |
0x00002aaaab121bf0: mov $0x3,%eax | |
0x00002aaaab121bf5: jmp 0x00002aaaab121c03 | |
;; B19: # B21 <- B2 Freq: 0.25 | |
0x00002aaaab121bf7: mov $0x2,%eax | |
0x00002aaaab121bfc: jmp 0x00002aaaab121c03 | |
;; B20: # B21 <- B1 Freq: 0.500049 | |
0x00002aaaab121bfe: mov $0x1,%eax ;*iadd | |
; - java.lang.Integer::stringSize@13 (line 363) | |
;; B21: # N1 <- B19 B18 B14 B16 B12 B17 B13 B15 B11 B20 Freq: 1 | |
0x00002aaaab121c03: add $0x20,%rsp | |
0x00002aaaab121c07: pop %rbp | |
0x00002aaaab121c08: test %eax,-0x429c0e(%rip) # 0x00002aaaaacf8000 | |
; {poll_return} | |
0x00002aaaab121c0e: retq | |
;; B22: # N1 <- B10 Freq: 1.97733e-09 | |
0x00002aaaab121c0f: mov %esi,(%rsp) | |
0x00002aaaab121c12: mov %r9d,0x4(%rsp) | |
0x00002aaaab121c17: mov $0xffffffe4,%esi | |
0x00002aaaab121c1c: nop | |
0x00002aaaab121c1d: nop | |
0x00002aaaab121c1e: nop | |
0x00002aaaab121c1f: callq 0x00002aaaab0f3fa0 ; OopMap{[4]=NarrowOop off=228} | |
;*iaload | |
; - java.lang.Integer::stringSize@7 (line 362) | |
; {runtime_call} | |
0x00002aaaab121c24: mov $0x2ae74d33c620,%r10 ; {runtime_call} | |
0x00002aaaab121c2e: rex.WB callq *%r10 ;*iinc | |
; - java.lang.Integer::stringSize@15 (line 361) | |
0x00002aaaab121c31: hlt | |
0x00002aaaab121c32: hlt | |
0x00002aaaab121c33: hlt | |
0x00002aaaab121c34: hlt | |
0x00002aaaab121c35: hlt | |
0x00002aaaab121c36: hlt | |
0x00002aaaab121c37: hlt | |
0x00002aaaab121c38: hlt | |
0x00002aaaab121c39: hlt | |
0x00002aaaab121c3a: hlt | |
0x00002aaaab121c3b: hlt | |
0x00002aaaab121c3c: hlt | |
0x00002aaaab121c3d: hlt | |
0x00002aaaab121c3e: hlt | |
0x00002aaaab121c3f: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x00002aaaab121c40: jmpq 0x00002aaaab101c20 ; {no_reloc} | |
[Deopt Handler Code] | |
0x00002aaaab121c45: callq 0x00002aaaab121c4a | |
0x00002aaaab121c4a: subq $0x5,(%rsp) | |
0x00002aaaab121c4f: jmpq 0x00002aaaab0f3ae0 ; {runtime_call} | |
0x00002aaaab121c54: int3 | |
0x00002aaaab121c55: int3 | |
0x00002aaaab121c56: int3 | |
0x00002aaaab121c57: int3 |
This file contains 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
=================================================================================================================== | |
# before: alpha(String, int, char[]), beta(String, int, char[]) | |
VM option '+UnlockDiagnosticVMOptions' | |
VM option '+LogCompilation' | |
VM option '+PrintCompilation' | |
VM option '+AggressiveOpts' | |
VM option '+PrintOptimizeStringConcat' | |
CompilerOracle: exclude *.main | |
446 1 n java.lang.System::arraycopy (0 bytes) (static) | |
518 3 java.lang.AbstractStringBuilder::stringSizeOfInt (21 bytes) | |
528 2 java.lang.Object::<init> (1 bytes) | |
542 4 java.lang.Integer::getChars (131 bytes) | |
### Excluding compile: static Test::main | |
820 5 java.lang.String::length (5 bytes) | |
822 6 java.lang.Math::min (11 bytes) | |
824 7 java.lang.String::getChars (66 bytes) | |
829 8 java.lang.AbstractStringBuilder::append (60 bytes) | |
Warning: TraceDependencies results may be inflated by VerifyDependencies | |
838 9 java.lang.StringBuilder::append (8 bytes) | |
846 10 java.lang.String::<init> (72 bytes) | |
856 11 java.util.Arrays::copyOfRange (63 bytes) | |
858 12 java.lang.AbstractStringBuilder::<init> (12 bytes) | |
862 13 java.lang.StringBuilder::toString (17 bytes) | |
872 14 java.lang.StringBuilder::<init> (7 bytes) | |
876 15 Test::alpha (23 bytes) | |
considering toString call in Test::alpha @ bci:19 | |
fusion would fail for | |
28 Allocate === 5 6 7 8 1 ( 26 24 25 1 10 11 12 ) [[ 29 30 31 38 39 40 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Test::alpha @ bci:0 !jvms: Test::alpha @ bci:0 | |
290 Proj === 289 [[ 309 301 ]] #0 !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::alpha @ bci:16 | |
289 MemBarCPUOrder === 251 1 196 1 1 [[ 290 291 ]] !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::alpha @ bci:16 | |
fusion would fail for region | |
28 Allocate === 5 6 7 8 1 ( 26 24 25 1 10 11 12 ) [[ 29 30 31 38 39 40 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Test::alpha @ bci:0 !jvms: Test::alpha @ bci:0 | |
256 If === 250 255 [[ 257 258 ]] P=0.000001, C=-1.000000 !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::alpha @ bci:16 | |
283 Catch === 278 281 [[ 284 285 ]] !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::alpha @ bci:16 | |
271 CallLeafNoFP === 258 1 214 8 1 ( 264 269 263 1 ) [[ 272 274 ]] # jshort_arraycopy void ( NotNull *+bot, NotNull *+bot, long, half ) !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::alpha @ bci:16 | |
257 IfTrue === 256 [[ 251 ]] #1 !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::alpha @ bci:16 | |
284 CatchProj === 283 [[ 251 ]] #0@bci -1 !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::alpha @ bci:16 | |
272 Proj === 271 [[ 251 ]] #0 !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::alpha @ bci:16 | |
251 Region === 251 272 _ 284 257 _ [[ 251 252 253 289 ]] !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::alpha @ bci:16 | |
923 16 java.lang.StringBuilder::append (8 bytes) | |
932 17 java.lang.AbstractStringBuilder::append (71 bytes) | |
952 18 java.lang.StringBuilder::append (8 bytes) | |
959 19 java.lang.AbstractStringBuilder::append (44 bytes) | |
3852 20 Test::beta (20 bytes) | |
3852 21 java.lang.StringBuilder::<init> (18 bytes) | |
considering toString call in Test::beta @ bci:16 | |
fusion would fail for | |
28 Allocate === 5 6 7 8 1 ( 26 24 25 1 10 11 12 ) [[ 29 30 31 38 39 40 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Test::beta @ bci:0 !jvms: Test::beta @ bci:0 | |
259 Proj === 258 [[ 278 270 ]] #0 !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::beta @ bci:13 | |
258 MemBarCPUOrder === 220 1 165 1 1 [[ 259 260 ]] !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::beta @ bci:13 | |
fusion would fail for region | |
28 Allocate === 5 6 7 8 1 ( 26 24 25 1 10 11 12 ) [[ 29 30 31 38 39 40 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Test::beta @ bci:0 !jvms: Test::beta @ bci:0 | |
225 If === 219 224 [[ 226 227 ]] P=0.000001, C=-1.000000 !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::beta @ bci:13 | |
252 Catch === 247 250 [[ 253 254 ]] !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::beta @ bci:13 | |
240 CallLeafNoFP === 227 1 183 8 1 ( 233 238 232 1 ) [[ 241 243 ]] # jshort_arraycopy void ( NotNull *+bot, NotNull *+bot, long, half ) !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::beta @ bci:13 | |
226 IfTrue === 225 [[ 220 ]] #1 !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::beta @ bci:13 | |
253 CatchProj === 252 [[ 220 ]] #0@bci -1 !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::beta @ bci:13 | |
241 Proj === 240 [[ 220 ]] #0 !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::beta @ bci:13 | |
220 Region === 220 241 _ 253 226 _ [[ 220 221 222 258 ]] !jvms: AbstractStringBuilder::append @ bci:34 StringBuilder::append @ bci:2 Test::beta @ bci:13 | |
6396 22 Test::charlie (77 bytes) | |
considering toString call in Test::charlie @ bci:65 | |
fusion would succeed (2 0) for Test::charlie @ bci:47 | |
11 Parm === 3 [[ 230 213 188 28 155 141 48 119 106 367 ]] Parm1: int !jvms: Test::charlie @ bci:-1 | |
12 Parm === 3 [[ 266 274 248 28 230 213 48 188 155 141 106 119 367 ]] Parm2: char !jvms: Test::charlie @ bci:-1 | |
0--> 266 CallStaticJava === 272 261 262 8 1 ( 279 12 1 1 1 45 1 1 1 1 45 ) [[ 280 281 282 284 293 292 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, char ) Test::charlie @ bci:62 !jvms: Test::charlie @ bci:62 | |
1--> 248 CallStaticJava === 238 243 244 8 1 ( 205 235 1 1 12 45 1 1 1 1 45 ) [[ 249 250 251 253 262 261 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Test::charlie @ bci:58 !jvms: Test::charlie @ bci:58 | |
2--> 230 CallStaticJava === 220 225 226 8 1 ( 11 1 1 12 45 1 1 1 1 45 205 ) [[ 231 232 233 235 244 243 ]] # Static java.lang.Integer::toString java/lang/String:exact * ( int ) Test::charlie @ bci:55 !jvms: Test::charlie @ bci:55 | |
3--> 297 CallStaticJava === 303 292 293 8 1 ( 310 1 1 1 45 1 1 1 1 45 ) [[ 311 312 313 315 324 323 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Test::charlie @ bci:65 !jvms: Test::charlie @ bci:65 | |
4--> 213 CallStaticJava === 202 199 187 8 1 ( 205 1 11 12 45 1 1 1 1 45 205 ) [[ 214 215 216 226 225 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Test::charlie @ bci:51 !jvms: Test::charlie @ bci:51 | |
5--> 188 Allocate === 93 185 186 8 1 ( 26 24 25 1 1 11 12 45 1 1 1 1 45 ) [[ 189 190 191 198 199 200 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Test::charlie @ bci:47 !jvms: Test::charlie @ bci:47 | |
6--> 303 IfTrue === 302 [[ 297 310 ]] #1 !jvms: Test::charlie @ bci:65 | |
7--> 272 IfTrue === 271 [[ 266 279 ]] #1 !jvms: Test::charlie @ bci:62 | |
considering toString call in Test::charlie @ bci:73 | |
fusion would fail for | |
28 Allocate === 5 6 7 8 1 ( 26 24 25 1 10 11 12 1 1 1 1 1 ) [[ 29 30 31 38 39 40 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Test::charlie @ bci:0 !jvms: Test::charlie @ bci:0 | |
336 CatchProj === 335 [[ 346 ]] #0@bci -1 !jvms: Test::charlie @ bci:68 | |
335 Catch === 329 330 [[ 336 337 ]] !jvms: Test::charlie @ bci:68 | |
329 Proj === 328 [[ 335 ]] #0 !jvms: Test::charlie @ bci:68 | |
328 CallStaticJava === 318 323 324 8 1 ( 45 315 1 1 1 45 1 1 1 1 ) [[ 329 330 331 342 341 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Test::charlie @ bci:68 !jvms: Test::charlie @ bci:68 | |
318 CatchProj === 317 [[ 328 ]] #0@bci -1 !jvms: Test::charlie @ bci:65 | |
317 Catch === 311 312 [[ 318 319 ]] !jvms: Test::charlie @ bci:65 | |
311 Proj === 297 [[ 317 ]] #0 !jvms: Test::charlie @ bci:65 | |
297 CallStaticJava === 303 292 293 8 1 ( 310 1 1 1 45 1 1 1 1 45 ) [[ 311 312 313 315 324 323 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Test::charlie @ bci:65 !jvms: Test::charlie @ bci:65 | |
287 CatchProj === 286 [[ 302 ]] #0@bci -1 !jvms: Test::charlie @ bci:62 | |
286 Catch === 280 281 [[ 287 288 ]] !jvms: Test::charlie @ bci:62 | |
280 Proj === 266 [[ 286 ]] #0 !jvms: Test::charlie @ bci:62 | |
266 CallStaticJava === 272 261 262 8 1 ( 279 12 1 1 1 45 1 1 1 1 45 ) [[ 280 281 282 284 293 292 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, char ) Test::charlie @ bci:62 !jvms: Test::charlie @ bci:62 | |
256 CatchProj === 255 [[ 271 ]] #0@bci -1 !jvms: Test::charlie @ bci:58 | |
255 Catch === 249 250 [[ 256 257 ]] !jvms: Test::charlie @ bci:58 | |
249 Proj === 248 [[ 255 ]] #0 !jvms: Test::charlie @ bci:58 | |
248 CallStaticJava === 238 243 244 8 1 ( 205 235 1 1 12 45 1 1 1 1 45 ) [[ 249 250 251 253 262 261 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Test::charlie @ bci:58 !jvms: Test::charlie @ bci:58 | |
238 CatchProj === 237 [[ 248 ]] #0@bci -1 !jvms: Test::charlie @ bci:55 | |
237 Catch === 231 232 [[ 238 239 ]] !jvms: Test::charlie @ bci:55 | |
231 Proj === 230 [[ 237 ]] #0 !jvms: Test::charlie @ bci:55 | |
230 CallStaticJava === 220 225 226 8 1 ( 11 1 1 12 45 1 1 1 1 45 205 ) [[ 231 232 233 235 244 243 ]] # Static java.lang.Integer::toString java/lang/String:exact * ( int ) Test::charlie @ bci:55 !jvms: Test::charlie @ bci:55 | |
220 CatchProj === 219 [[ 230 ]] #0@bci -1 !jvms: Test::charlie @ bci:51 | |
219 Catch === 214 215 [[ 220 221 ]] !jvms: Test::charlie @ bci:51 | |
214 Proj === 213 [[ 219 ]] #0 !jvms: Test::charlie @ bci:51 | |
213 CallStaticJava === 202 199 187 8 1 ( 205 1 11 12 45 1 1 1 1 45 205 ) [[ 214 215 216 226 225 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Test::charlie @ bci:51 !jvms: Test::charlie @ bci:51 | |
193 CatchProj === 192 [[ 201 ]] #0@bci -1 !jvms: Test::charlie @ bci:47 | |
192 Catch === 189 191 [[ 193 194 ]] !jvms: Test::charlie @ bci:47 | |
189 Proj === 188 [[ 192 ]] #0 !jvms: Test::charlie @ bci:47 | |
188 Allocate === 93 185 186 8 1 ( 26 24 25 1 1 11 12 45 1 1 1 1 45 ) [[ 189 190 191 198 199 200 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Test::charlie @ bci:47 !jvms: Test::charlie @ bci:47 | |
fusion would fail for region | |
28 Allocate === 5 6 7 8 1 ( 26 24 25 1 10 11 12 1 1 1 1 1 ) [[ 29 30 31 38 39 40 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Test::charlie @ bci:0 !jvms: Test::charlie @ bci:0 | |
88 If === 71 87 [[ 89 90 ]] P=0.250104, C=7241.000000 !jvms: Test::charlie @ bci:23 | |
180 If === 163 179 [[ 181 182 ]] P=0.749896, C=5430.000000 !jvms: Test::charlie @ bci:23 | |
89 IfTrue === 88 [[ 93 ]] #1 !jvms: Test::charlie @ bci:23 | |
182 IfFalse === 180 [[ 93 ]] #0 !jvms: Test::charlie @ bci:23 | |
93 Region === 93 182 89 [[ 93 188 185 186 ]] !jvms: Test::charlie @ bci:46 | |
6407 23 java.lang.Integer::stringSize (21 bytes) | |
=================================================================================================================== | |
# after: alpha(String, int, char), beta(String, int, char) | |
java -cp . -XX:+PrintOptimizeStringConcat Test | |
VM option '+UnlockDiagnosticVMOptions' | |
VM option '+LogCompilation' | |
VM option '+PrintCompilation' | |
VM option '+AggressiveOpts' | |
VM option '+PrintOptimizeStringConcat' | |
CompilerOracle: exclude *.main | |
452 2 n java.lang.System::arraycopy (0 bytes) (static) | |
458 1 java.lang.Object::<init> (1 bytes) | |
475 4 java.lang.Integer::getChars (131 bytes) | |
488 3 java.lang.AbstractStringBuilder::stringSizeOfInt (21 bytes) | |
521 5 java.lang.String::length (5 bytes) | |
524 6 java.lang.StringBuilder::append (8 bytes) | |
Warning: TraceDependencies results may be inflated by VerifyDependencies | |
529 7 java.lang.AbstractStringBuilder::append (40 bytes) | |
531 8 java.lang.Math::min (11 bytes) | |
533 9 java.lang.String::getChars (66 bytes) | |
538 10 java.lang.AbstractStringBuilder::append (60 bytes) | |
547 11 java.lang.StringBuilder::append (8 bytes) | |
### Excluding compile: static Test::main | |
556 12 java.lang.String::<init> (72 bytes) | |
567 13 java.util.Arrays::copyOfRange (63 bytes) | |
574 14 java.lang.AbstractStringBuilder::<init> (12 bytes) | |
576 15 java.lang.StringBuilder::toString (17 bytes) | |
586 16 java.lang.StringBuilder::<init> (7 bytes) | |
588 17 Test::alpha (23 bytes) | |
considering toString call in Test::alpha @ bci:19 | |
fusion would succeed (3 0) for Test::alpha @ bci:0 | |
10 Parm === 3 [[ 65 48 28 185 ]] Parm0: java/lang/String:exact * Oop:java/lang/String:exact * !jvms: Test::alpha @ bci:-1 | |
11 Parm === 3 [[ 87 97 65 28 48 185 ]] Parm1: int !jvms: Test::alpha @ bci:-1 | |
12 Parm === 3 [[ 120 128 87 28 65 48 185 ]] Parm2: char !jvms: Test::alpha @ bci:-1 | |
0--> 120 CallStaticJava === 126 115 116 8 1 ( 133 12 1 1 1 ) [[ 134 135 136 138 147 146 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, char ) Test::alpha @ bci:16 !jvms: Test::alpha @ bci:16 | |
1--> 87 CallStaticJava === 94 78 79 8 1 ( 102 11 1 1 12 ) [[ 103 104 105 107 116 115 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Test::alpha @ bci:12 !jvms: Test::alpha @ bci:12 | |
2--> 65 CallStaticJava === 55 60 61 8 1 ( 45 10 1 11 12 ) [[ 66 67 68 70 79 78 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Test::alpha @ bci:8 !jvms: Test::alpha @ bci:8 | |
3--> 151 CallStaticJava === 157 146 147 8 1 ( 164 1 1 1 ) [[ 165 166 167 169 178 177 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Test::alpha @ bci:19 !jvms: Test::alpha @ bci:19 | |
4--> 48 CallStaticJava === 42 39 27 8 1 ( 45 10 11 12 45 ) [[ 49 50 51 61 60 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Test::alpha @ bci:4 !jvms: Test::alpha @ bci:4 | |
5--> 28 Allocate === 5 6 7 8 1 ( 26 24 25 1 10 11 12 ) [[ 29 30 31 38 39 40 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Test::alpha @ bci:0 !jvms: Test::alpha @ bci:0 | |
6--> 157 IfTrue === 156 [[ 151 164 ]] #1 !jvms: Test::alpha @ bci:19 | |
7--> 126 IfTrue === 125 [[ 120 133 ]] #1 !jvms: Test::alpha @ bci:16 | |
8--> 94 IfTrue === 93 [[ 87 102 ]] #1 !jvms: Test::alpha @ bci:12 | |
606 19 java.lang.AbstractStringBuilder::append (71 bytes) | |
618 18 java.lang.StringBuilder::append (8 bytes) | |
2363 21 java.lang.StringBuilder::<init> (18 bytes) | |
2375 20 Test::beta (20 bytes) | |
considering toString call in Test::beta @ bci:16 | |
fusion would succeed (2 0) for Test::beta @ bci:0 | |
10 Parm === 3 [[ 48 28 154 ]] Parm0: java/lang/String:exact * Oop:java/lang/String:exact * !jvms: Test::beta @ bci:-1 | |
11 Parm === 3 [[ 65 48 28 154 ]] Parm1: int !jvms: Test::beta @ bci:-1 | |
12 Parm === 3 [[ 87 97 65 28 48 154 ]] Parm2: char !jvms: Test::beta @ bci:-1 | |
0--> 87 CallStaticJava === 94 78 79 8 1 ( 102 12 1 1 1 ) [[ 103 104 105 107 116 115 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, char ) Test::beta @ bci:13 !jvms: Test::beta @ bci:13 | |
1--> 65 CallStaticJava === 55 60 61 8 1 ( 45 11 1 1 12 ) [[ 66 67 68 70 79 78 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Test::beta @ bci:9 !jvms: Test::beta @ bci:9 | |
2--> 120 CallStaticJava === 126 115 116 8 1 ( 133 1 1 1 ) [[ 134 135 136 138 147 146 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Test::beta @ bci:16 !jvms: Test::beta @ bci:16 | |
3--> 48 CallStaticJava === 42 39 27 8 1 ( 45 10 1 11 12 45 ) [[ 49 50 51 61 60 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Test::beta @ bci:5 !jvms: Test::beta @ bci:5 | |
4--> 28 Allocate === 5 6 7 8 1 ( 26 24 25 1 10 11 12 ) [[ 29 30 31 38 39 40 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Test::beta @ bci:0 !jvms: Test::beta @ bci:0 | |
5--> 126 IfTrue === 125 [[ 120 133 ]] #1 !jvms: Test::beta @ bci:16 | |
6--> 94 IfTrue === 93 [[ 87 102 ]] #1 !jvms: Test::beta @ bci:13 | |
4098 22 Test::charlie (77 bytes) | |
considering toString call in Test::charlie @ bci:65 | |
fusion would succeed (2 0) for Test::charlie @ bci:47 | |
11 Parm === 3 [[ 230 213 188 28 155 141 48 119 106 367 ]] Parm1: int !jvms: Test::charlie @ bci:-1 | |
12 Parm === 3 [[ 266 274 248 28 230 213 48 188 155 141 106 119 367 ]] Parm2: char !jvms: Test::charlie @ bci:-1 | |
0--> 266 CallStaticJava === 272 261 262 8 1 ( 279 12 1 1 1 45 1 1 1 1 45 ) [[ 280 281 282 284 293 292 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, char ) Test::charlie @ bci:62 !jvms: Test::charlie @ bci:62 | |
1--> 248 CallStaticJava === 238 243 244 8 1 ( 205 235 1 1 12 45 1 1 1 1 45 ) [[ 249 250 251 253 262 261 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Test::charlie @ bci:58 !jvms: Test::charlie @ bci:58 | |
2--> 230 CallStaticJava === 220 225 226 8 1 ( 11 1 1 12 45 1 1 1 1 45 205 ) [[ 231 232 233 235 244 243 ]] # Static java.lang.Integer::toString java/lang/String:exact * ( int ) Test::charlie @ bci:55 !jvms: Test::charlie @ bci:55 | |
3--> 297 CallStaticJava === 303 292 293 8 1 ( 310 1 1 1 45 1 1 1 1 45 ) [[ 311 312 313 315 324 323 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Test::charlie @ bci:65 !jvms: Test::charlie @ bci:65 | |
4--> 213 CallStaticJava === 202 199 187 8 1 ( 205 1 11 12 45 1 1 1 1 45 205 ) [[ 214 215 216 226 225 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Test::charlie @ bci:51 !jvms: Test::charlie @ bci:51 | |
5--> 188 Allocate === 93 185 186 8 1 ( 26 24 25 1 1 11 12 45 1 1 1 1 45 ) [[ 189 190 191 198 199 200 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Test::charlie @ bci:47 !jvms: Test::charlie @ bci:47 | |
6--> 303 IfTrue === 302 [[ 297 310 ]] #1 !jvms: Test::charlie @ bci:65 | |
7--> 272 IfTrue === 271 [[ 266 279 ]] #1 !jvms: Test::charlie @ bci:62 | |
considering toString call in Test::charlie @ bci:73 | |
fusion would fail for | |
28 Allocate === 5 6 7 8 1 ( 26 24 25 1 10 11 12 1 1 1 1 1 ) [[ 29 30 31 38 39 40 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Test::charlie @ bci:0 !jvms: Test::charlie @ bci:0 | |
336 CatchProj === 335 [[ 346 ]] #0@bci -1 !jvms: Test::charlie @ bci:68 | |
335 Catch === 329 330 [[ 336 337 ]] !jvms: Test::charlie @ bci:68 | |
329 Proj === 328 [[ 335 ]] #0 !jvms: Test::charlie @ bci:68 | |
328 CallStaticJava === 318 323 324 8 1 ( 45 315 1 1 1 45 1 1 1 1 ) [[ 329 330 331 342 341 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Test::charlie @ bci:68 !jvms: Test::charlie @ bci:68 | |
318 CatchProj === 317 [[ 328 ]] #0@bci -1 !jvms: Test::charlie @ bci:65 | |
317 Catch === 311 312 [[ 318 319 ]] !jvms: Test::charlie @ bci:65 | |
311 Proj === 297 [[ 317 ]] #0 !jvms: Test::charlie @ bci:65 | |
297 CallStaticJava === 303 292 293 8 1 ( 310 1 1 1 45 1 1 1 1 45 ) [[ 311 312 313 315 324 323 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Test::charlie @ bci:65 !jvms: Test::charlie @ bci:65 | |
287 CatchProj === 286 [[ 302 ]] #0@bci -1 !jvms: Test::charlie @ bci:62 | |
286 Catch === 280 281 [[ 287 288 ]] !jvms: Test::charlie @ bci:62 | |
280 Proj === 266 [[ 286 ]] #0 !jvms: Test::charlie @ bci:62 | |
266 CallStaticJava === 272 261 262 8 1 ( 279 12 1 1 1 45 1 1 1 1 45 ) [[ 280 281 282 284 293 292 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, char ) Test::charlie @ bci:62 !jvms: Test::charlie @ bci:62 | |
256 CatchProj === 255 [[ 271 ]] #0@bci -1 !jvms: Test::charlie @ bci:58 | |
255 Catch === 249 250 [[ 256 257 ]] !jvms: Test::charlie @ bci:58 | |
249 Proj === 248 [[ 255 ]] #0 !jvms: Test::charlie @ bci:58 | |
248 CallStaticJava === 238 243 244 8 1 ( 205 235 1 1 12 45 1 1 1 1 45 ) [[ 249 250 251 253 262 261 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Test::charlie @ bci:58 !jvms: Test::charlie @ bci:58 | |
238 CatchProj === 237 [[ 248 ]] #0@bci -1 !jvms: Test::charlie @ bci:55 | |
237 Catch === 231 232 [[ 238 239 ]] !jvms: Test::charlie @ bci:55 | |
231 Proj === 230 [[ 237 ]] #0 !jvms: Test::charlie @ bci:55 | |
230 CallStaticJava === 220 225 226 8 1 ( 11 1 1 12 45 1 1 1 1 45 205 ) [[ 231 232 233 235 244 243 ]] # Static java.lang.Integer::toString java/lang/String:exact * ( int ) Test::charlie @ bci:55 !jvms: Test::charlie @ bci:55 | |
220 CatchProj === 219 [[ 230 ]] #0@bci -1 !jvms: Test::charlie @ bci:51 | |
219 Catch === 214 215 [[ 220 221 ]] !jvms: Test::charlie @ bci:51 | |
214 Proj === 213 [[ 219 ]] #0 !jvms: Test::charlie @ bci:51 | |
213 CallStaticJava === 202 199 187 8 1 ( 205 1 11 12 45 1 1 1 1 45 205 ) [[ 214 215 216 226 225 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Test::charlie @ bci:51 !jvms: Test::charlie @ bci:51 | |
193 CatchProj === 192 [[ 201 ]] #0@bci -1 !jvms: Test::charlie @ bci:47 | |
192 Catch === 189 191 [[ 193 194 ]] !jvms: Test::charlie @ bci:47 | |
189 Proj === 188 [[ 192 ]] #0 !jvms: Test::charlie @ bci:47 | |
188 Allocate === 93 185 186 8 1 ( 26 24 25 1 1 11 12 45 1 1 1 1 45 ) [[ 189 190 191 198 199 200 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Test::charlie @ bci:47 !jvms: Test::charlie @ bci:47 | |
fusion would fail for region | |
28 Allocate === 5 6 7 8 1 ( 26 24 25 1 10 11 12 1 1 1 1 1 ) [[ 29 30 31 38 39 40 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Test::charlie @ bci:0 !jvms: Test::charlie @ bci:0 | |
88 If === 71 87 [[ 89 90 ]] P=0.250110, C=6825.000000 !jvms: Test::charlie @ bci:23 | |
180 If === 163 179 [[ 181 182 ]] P=0.749890, C=5118.000000 !jvms: Test::charlie @ bci:23 | |
89 IfTrue === 88 [[ 93 ]] #1 !jvms: Test::charlie @ bci:23 | |
182 IfFalse === 180 [[ 93 ]] #0 !jvms: Test::charlie @ bci:23 | |
93 Region === 93 182 89 [[ 93 188 185 186 ]] !jvms: Test::charlie @ bci:46 | |
4153 23 java.lang.Integer::stringSize (21 bytes) |
This file contains 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
public class Test { | |
private static final int LOOP = 10000000; | |
// C2 generates almost the same code for alpha and beta, when OptimizeStringConcat is on. | |
// Use -XX:+AggressiveOpts to turn it on. | |
// No StringBuilder instance is allocated when this optimization succeeded. | |
// Only applies to append(String), append(int), append(char). | |
// Doesn't accept control flow with merge points, which effectively disallows loops and conditional branches. | |
public static String alpha(String s, int i, char c) { | |
return new StringBuilder().append(s).append(i).append(c).toString(); | |
} | |
public static String beta(String s, int i, char c) { | |
return new StringBuilder(s).append(i).append(c).toString(); | |
} | |
public static String charlie(String[] ss, int i, char c) { | |
StringBuilder b = new StringBuilder(); | |
for (String s : ss) { | |
b.append(s); | |
} | |
b.append(Integer.toString(i) + c); | |
return b.toString(); | |
} | |
public static void main(String[] args) { | |
String s = "Dummy"; | |
int i = 42; | |
char[] cs = new char[] { 'x', 'y', 'z' }; | |
String[] ss = new String[] { "check", "this", "out" }; | |
char c = '!'; | |
for (int x = 0; x < LOOP; x++) { | |
alpha(s, i, c); | |
} | |
for (int x = 0; x < LOOP; x++) { | |
beta(s, i, c); | |
} | |
for (int x = 0; x < LOOP; x++) { | |
charlie(ss, i, c); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment