Skip to content

Instantly share code, notes, and snippets.

@rednaxelafx
Created June 25, 2012 06:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rednaxelafx/2986911 to your computer and use it in GitHub Desktop.
Save rednaxelafx/2986911 to your computer and use it in GitHub Desktop.
Reproduce the OptimizeStringConcat bug in JDK7u4/HS23, as mentioned by Riven here: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2012-June/007916.html
+PrintCompilation
-BackgroundCompilation
PrintIdealGraphLevel=4
PrintIdealGraphFile=ideal.xml
CICompilerCount=1
OpenJDK 64-Bit Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output
Java Version: 23.0-b21-internal-fastdebug
try OSR compilation
469 1 % b Main::foo @ 15 (225 bytes)
Loaded disassembler from /home/sajia/temp/openjdk7u4/jdk1.7.0_04/jre/lib/amd64/server/libhsdis-amd64.so
Decoding compiled method 0x00002aaaab42f510:
Code:
[Disassembling for mach='i386:x86-64']
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} 'foo' '()V' in 'Main'
;; N1517: # B1 <- BLOCK HEAD IS JUNK Freq: 1
0x00002aaaab42f780: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab42f78a: callq *%r10
0x00002aaaab42f78d: nop
0x00002aaaab42f78e: nop
0x00002aaaab42f78f: nop
;; B1: # B76 B2 <- BLOCK HEAD IS JUNK Freq: 1
0x00002aaaab42f790: mov %eax,-0x16000(%rsp)
0x00002aaaab42f797: push %rbp
0x00002aaaab42f798: sub $0x50,%rsp
0x00002aaaab42f79c: mov 0x10(%rsi),%r13d
0x00002aaaab42f7a0: mov 0x18(%rsi),%r10d
0x00002aaaab42f7a4: mov %r10d,0x4(%rsp)
0x00002aaaab42f7a9: mov 0x30(%rsi),%rbp
0x00002aaaab42f7ad: mov 0x20(%rsi),%rbx
0x00002aaaab42f7b1: mov 0x28(%rsi),%r11d
0x00002aaaab42f7b5: mov %r11d,0x10(%rsp)
0x00002aaaab42f7ba: mov %rsi,%rdi
0x00002aaaab42f7bd: mov $0x2b754169c950,%r10
0x00002aaaab42f7c7: callq *%r10
0x00002aaaab42f7ca: test %rbp,%rbp
0x00002aaaab42f7cd: je 0x00002aaaab43038c
;; B2: # B103 B3 <- B1 Freq: 0.999
0x00002aaaab42f7d3: mov %rbp,%r9
0x00002aaaab42f7d6: mov 0x8(%rbp),%r11d
0x00002aaaab42f7da: cmp $0xc0800269,%r11d ; {oop({type array long})}
0x00002aaaab42f7e1: jne 0x00002aaaab430551
;; B3: # B4 <- B2 Freq: 0.998999
0x00002aaaab42f7e7: mov %rbp,%r8
;; B4: # B77 B5 <- B3 B76 Freq: 0.999999
0x00002aaaab42f7ea: test %rbx,%rbx
0x00002aaaab42f7ed: je 0x00002aaaab430397
;; B5: # B103 B6 <- B4 Freq: 0.998999
0x00002aaaab42f7f3: mov 0x8(%rbx),%r10d
0x00002aaaab42f7f7: cmp $0xc0800269,%r10d ; {oop({type array long})}
0x00002aaaab42f7fe: jne 0x00002aaaab430551 ;*iload
; - Main::foo@15 (line 6)
;; B6: # B7 <- B5 Freq: 0.998998
0x00002aaaab42f804: mov %rbx,%r10
0x00002aaaab42f807: add $0xc,%r10 ;*laload
; - Main::foo@24 (line 6)
;; B7: # B75 B8 <- B6 B77 Freq: 0.999998
0x00002aaaab42f80b: cmp 0x4(%rsp),%r13d
0x00002aaaab42f810: jge 0x00002aaaab430384 ;*if_icmpge
; - Main::foo@18 (line 6)
;; B8: # B9 <- B7 Freq: 0.983668
0x00002aaaab42f816: mov %r13d,%ecx
0x00002aaaab42f819: inc %ecx
0x00002aaaab42f81b: xor %r9d,%r9d
0x00002aaaab42f81e: xor %edi,%edi
0x00002aaaab42f820: cmp %r9d,%ecx
0x00002aaaab42f823: cmovl %edi,%ecx
0x00002aaaab42f826: cmp 0x4(%rsp),%ecx
0x00002aaaab42f82a: mov 0x4(%rsp),%edi
0x00002aaaab42f82e: cmovg %edi,%ecx
;; B9: # B94 B10 <- B8 B11 Loop: B9-B11 inner pre of N2716 Freq: 1.96733
0x00002aaaab42f831: test %rbx,%rbx
0x00002aaaab42f834: je 0x00002aaaab43046c
;; B10: # B95 B11 <- B9 Freq: 1.96733
0x00002aaaab42f83a: mov (%r10),%r11d
0x00002aaaab42f83d: cmp %r11d,%r13d
0x00002aaaab42f840: jae 0x00002aaaab430489 ;*laload
; - Main::foo@24 (line 6)
;; B11: # B9 B12 <- B10 Freq: 1.96733
0x00002aaaab42f846: inc %r13d ;*iinc
; - Main::foo@27 (line 6)
0x00002aaaab42f849: cmp %ecx,%r13d
0x00002aaaab42f84c: jl 0x00002aaaab42f831 ;*if_icmpge
; - Main::foo@18 (line 6)
;; B12: # B15 B13 <- B11 Freq: 0.983664
0x00002aaaab42f84e: cmp %r11d,%edi
0x00002aaaab42f851: mov %edi,%r10d
0x00002aaaab42f854: cmovg %r11d,%r10d
0x00002aaaab42f858: movslq %r13d,%rcx
0x00002aaaab42f85b: mov %r10d,%eax
0x00002aaaab42f85e: dec %eax
0x00002aaaab42f860: mov $0x80000000,%edx
0x00002aaaab42f865: cmp %eax,%r10d
0x00002aaaab42f868: cmovl %edx,%eax
0x00002aaaab42f86b: cmp %eax,%r13d
0x00002aaaab42f86e: setl %r10b
0x00002aaaab42f872: movzbl %r10b,%r10d
0x00002aaaab42f876: neg %r10d
0x00002aaaab42f879: movslq %eax,%rdx
0x00002aaaab42f87c: sub %rcx,%rdx
0x00002aaaab42f87f: add $0x1,%rdx
0x00002aaaab42f883: and $0xfffffffffffffffe,%rdx
0x00002aaaab42f887: mov %edx,%ebp
0x00002aaaab42f889: and %r10d,%ebp
0x00002aaaab42f88c: add %r13d,%ebp
0x00002aaaab42f88f: mov %edi,%r10d
0x00002aaaab42f892: cmp %r10d,%ebp
0x00002aaaab42f895: jge 0x00002aaaab42f8ab
0x00002aaaab42f897: nop
;; B13: # B96 B14 <- B12 B14 Loop: B13-B14 inner post of N2716 Freq: 0.983663
0x00002aaaab42f898: cmp %r11d,%ebp
0x00002aaaab42f89b: jae 0x00002aaaab43048c ;*laload
; - Main::foo@24 (line 6)
;; B14: # B13 B15 <- B13 Freq: 0.983662
0x00002aaaab42f8a1: inc %ebp ;*iinc
; - Main::foo@27 (line 6)
0x00002aaaab42f8a3: mov %edi,%r10d
0x00002aaaab42f8a6: cmp %r10d,%ebp
0x00002aaaab42f8a9: jl 0x00002aaaab42f898 ;*new
; - Main::foo@87 (line 20)
;; B15: # B78 B16 <- B75 B12 B14 Freq: 0.999993
0x00002aaaab42f8ab: mov 0x70(%r15),%r11
0x00002aaaab42f8af: mov %r11,%r10
0x00002aaaab42f8b2: add $0x30,%r10
0x00002aaaab42f8b6: cmp 0x80(%r15),%r10
0x00002aaaab42f8bd: jae 0x00002aaaab4303a4
;; B16: # B17 <- B15 Freq: 0.999893
0x00002aaaab42f8c3: mov %r10,0x70(%r15)
0x00002aaaab42f8c7: prefetchnta 0xc0(%r10)
0x00002aaaab42f8cf: movq $0x1,(%r11)
0x00002aaaab42f8d6: prefetchnta 0x100(%r10)
0x00002aaaab42f8de: movl $0xc08000bf,0x8(%r11) ; {oop({type array char})}
0x00002aaaab42f8e6: prefetchnta 0x140(%r10)
0x00002aaaab42f8ee: movl $0x10,0xc(%r11)
0x00002aaaab42f8f6: prefetchnta 0x180(%r10)
0x00002aaaab42f8fe: mov %r9d,(%rsp)
;; B17: # B41 B18 <- B79 B16 Freq: 0.999993
0x00002aaaab42f902: mov %r11,%rbx
0x00002aaaab42f905: add $0x18,%rbx
0x00002aaaab42f909: mov %r11,%r10
0x00002aaaab42f90c: add $0x10,%r10
0x00002aaaab42f910: mov %r10,0x18(%rsp)
0x00002aaaab42f915: mov %r11,0x8(%rsp)
0x00002aaaab42f91a: mov 0x10(%rsp),%r10d
0x00002aaaab42f91f: neg %r10d
0x00002aaaab42f922: mov %r10d,0x4(%rsp)
0x00002aaaab42f927: mov $0xeb0c06b2,%r10d ; {oop([C)}
0x00002aaaab42f92d: lea (%r12,%r10,8),%r11
0x00002aaaab42f931: lea 0x10(%r12,%r10,8),%rbp
0x00002aaaab42f936: mov %rbp,%rdi
0x00002aaaab42f939: mov 0x18(%rsp),%rsi
0x00002aaaab42f93e: mov $0x4,%edx
0x00002aaaab42f943: mov $0x2aaaab40c960,%r10
0x00002aaaab42f94d: callq *%r10
0x00002aaaab42f950: mov %rbp,%rdi
0x00002aaaab42f953: mov %rbx,%rsi
0x00002aaaab42f956: mov $0x4,%edx
0x00002aaaab42f95b: mov $0x2aaaab40c960,%r10
0x00002aaaab42f965: callq *%r10 ;*invokevirtual length
; - Main::foo@111 (line 23)
0x00002aaaab42f968: mov 0x10(%rsp),%r11d
0x00002aaaab42f96d: cmp $0x80000000,%r11d
0x00002aaaab42f974: jne 0x00002aaaab42fd41
;; B18: # B22 <- B17 Freq: 0.499997
0x00002aaaab42f97a: mov $0xb,%ebx
0x00002aaaab42f97f: mov $0x10,%r10d
0x00002aaaab42f985: mov $0x1,%r8d
0x00002aaaab42f98b: mov $0x20,%r9d
0x00002aaaab42f991: mov $0x20,%r11d
0x00002aaaab42f997: mov %r10d,0x2c(%rsp)
0x00002aaaab42f99c: mov %r8d,0x28(%rsp)
0x00002aaaab42f9a1: mov %r9d,0x30(%rsp)
0x00002aaaab42f9a6: jmp 0x00002aaaab42f9e6
0x00002aaaab42f9a8: nop
0x00002aaaab42f9a9: nop
0x00002aaaab42f9aa: nop
0x00002aaaab42f9ab: nop
0x00002aaaab42f9ac: nop
0x00002aaaab42f9ad: nop
0x00002aaaab42f9ae: nop
0x00002aaaab42f9af: nop
;; B19: # B20 <- B20 top-of-loop Freq: 499996
0x00002aaaab42f9b0: inc %r8d
;; B20: # B19 B21 <- B43 B19 Loop: B20-B19 inner Freq: 499996
0x00002aaaab42f9b3: mov $0x758628a38,%rbx ; {oop([I)}
0x00002aaaab42f9bd: mov 0x10(%rbx,%r8,4),%ebx
0x00002aaaab42f9c2: cmp %ebx,%r10d
0x00002aaaab42f9c5: jg 0x00002aaaab42f9b0
;; B21: # B22 <- B20 Freq: 0.499997
0x00002aaaab42f9c7: add %r8d,%ecx
0x00002aaaab42f9ca: mov %ecx,%ebx
0x00002aaaab42f9cc: inc %ebx
0x00002aaaab42f9ce: add $0x16,%ecx
0x00002aaaab42f9d1: mov %r11d,0x10(%rsp)
0x00002aaaab42f9d6: mov %r9d,0x2c(%rsp)
0x00002aaaab42f9db: mov %edi,0x28(%rsp)
0x00002aaaab42f9df: mov %esi,0x30(%rsp)
0x00002aaaab42f9e3: mov %ecx,%r11d
;; B22: # B101 B23 <- B18 B21 Freq: 0.999993
0x00002aaaab42f9e6: mov $0x74,%r10d
0x00002aaaab42f9ec: mov 0x8(%rsp),%r9
0x00002aaaab42f9f1: mov %r10w,0x20(%r9)
0x00002aaaab42f9f6: mov $0x65,%r8d
0x00002aaaab42f9fc: mov %r8w,0x22(%r9)
0x00002aaaab42fa01: mov $0x758600d08,%r9 ; {oop(a 'java/lang/Class' = 'java/lang/System')}
0x00002aaaab42fa0b: mov 0x74(%r9),%ebp ;*getstatic out
; - Main::foo@118 (line 24)
0x00002aaaab42fa0f: mov $0x73,%r9d
0x00002aaaab42fa15: mov 0x8(%rsp),%rcx
0x00002aaaab42fa1a: mov %r9w,0x24(%rcx)
0x00002aaaab42fa1f: mov %r10w,0x26(%rcx)
0x00002aaaab42fa24: mov %r10w,0x28(%rcx)
0x00002aaaab42fa29: mov %r8w,0x2a(%rcx)
0x00002aaaab42fa2e: mov %r9w,0x2c(%rcx)
0x00002aaaab42fa33: mov %r10w,0x2e(%rcx)
0x00002aaaab42fa38: test %r11d,%r11d
0x00002aaaab42fa3b: jl 0x00002aaaab43051d
;; B23: # B82 B24 <- B22 Freq: 0.999992
0x00002aaaab42fa41: cmp $0x80000,%r11d
0x00002aaaab42fa48: ja 0x00002aaaab4303e0
;; B24: # B83 B25 <- B23 Freq: 0.999991
0x00002aaaab42fa4e: mov %r11d,0x14(%rsp)
0x00002aaaab42fa53: mov 0x70(%r15),%r8
0x00002aaaab42fa57: movslq %ebx,%r10
0x00002aaaab42fa5a: shl %r10
0x00002aaaab42fa5d: add $0x41,%r10
0x00002aaaab42fa61: and $0xfffffffffffffff8,%r10
0x00002aaaab42fa65: mov %r8,%r11
0x00002aaaab42fa68: add %r10,%r11
0x00002aaaab42fa6b: cmp 0x80(%r15),%r11
0x00002aaaab42fa72: jae 0x00002aaaab4303e5
;; B25: # B26 <- B24 Freq: 0.999891
0x00002aaaab42fa78: mov %r11,0x70(%r15)
0x00002aaaab42fa7c: prefetchnta 0xc0(%r11)
0x00002aaaab42fa84: movq $0x1,(%r8)
0x00002aaaab42fa8b: prefetchnta 0x100(%r11)
0x00002aaaab42fa93: movl $0xc08000bf,0x8(%r8) ; {oop({type array char})}
0x00002aaaab42fa9b: mov 0x14(%rsp),%r10d
0x00002aaaab42faa0: mov %r10d,0xc(%r8)
0x00002aaaab42faa4: prefetchnta 0x140(%r11)
0x00002aaaab42faac: prefetchnta 0x180(%r11)
;; B26: # B31 B27 <- B84 B25 Freq: 0.999992
0x00002aaaab42fab4: mov %r8,%rsi
0x00002aaaab42fab7: add $0x10,%rsi
0x00002aaaab42fabb: mov %r8,0x20(%rsp)
0x00002aaaab42fac0: mov $0x15,%edx
0x00002aaaab42fac5: mov $0x75866c628,%rdi ; {oop([C)}
0x00002aaaab42facf: add $0x10,%rdi
0x00002aaaab42fad3: mov $0x2aaaab40c960,%r10
0x00002aaaab42fadd: callq *%r10
0x00002aaaab42fae0: mov 0x10(%rsp),%r10d
0x00002aaaab42fae5: cmp $0x80000000,%r10d
0x00002aaaab42faec: je 0x00002aaaab42fb16
;; B27: # B30 B28 <- B26 Freq: 0.499996
0x00002aaaab42faee: test %r10d,%r10d
0x00002aaaab42faf1: jge 0x00002aaaab42faff
;; B28: # B29 <- B27 Freq: 0.249998
0x00002aaaab42faf3: mov $0x2d,%r11d
;; B29: # B33 <- B28 B30 Freq: 0.499996
0x00002aaaab42faf9: mov 0x14(%rsp),%ecx
0x00002aaaab42fafd: jmp 0x00002aaaab42fb57
;; B30: # B29 <- B27 Freq: 0.249998
0x00002aaaab42faff: mov %rax,-0x8(%rsp)
0x00002aaaab42fb04: mov 0x10(%rsp),%eax
0x00002aaaab42fb08: mov %eax,0x4(%rsp)
0x00002aaaab42fb0c: mov -0x8(%rsp),%rax
0x00002aaaab42fb11: xor %r11d,%r11d
0x00002aaaab42fb14: jmp 0x00002aaaab42faf9
;; B31: # B36 <- B26 Freq: 0.499996
0x00002aaaab42fb16: mov 0x20(%rsp),%rsi
0x00002aaaab42fb1b: add $0x3a,%rsi
0x00002aaaab42fb1f: mov $0x7586035c8,%rdi ; {oop([C)}
0x00002aaaab42fb29: add $0x10,%rdi
0x00002aaaab42fb2d: mov $0xb,%edx
0x00002aaaab42fb32: mov $0x2aaaab40c960,%r10
0x00002aaaab42fb3c: callq *%r10
0x00002aaaab42fb3f: jmp 0x00002aaaab42fbac
0x00002aaaab42fb41: nop
0x00002aaaab42fb42: nop
0x00002aaaab42fb43: nop
0x00002aaaab42fb44: nop
0x00002aaaab42fb45: nop
0x00002aaaab42fb46: nop
0x00002aaaab42fb47: nop
0x00002aaaab42fb48: nop
0x00002aaaab42fb49: nop
0x00002aaaab42fb4a: nop
0x00002aaaab42fb4b: nop
0x00002aaaab42fb4c: nop
0x00002aaaab42fb4d: nop
0x00002aaaab42fb4e: nop
0x00002aaaab42fb4f: nop
;; B32: # B33 <- B33 top-of-loop Freq: 4.49996
0x00002aaaab42fb50: dec %ecx
0x00002aaaab42fb52: mov %r8d,0x4(%rsp)
;; B33: # B32 B34 <- B29 B32 Loop: B33-B32 inner Freq: 4.99996
0x00002aaaab42fb57: mov 0x4(%rsp),%r9d
0x00002aaaab42fb5c: sar $0x1f,%r9d
0x00002aaaab42fb60: movslq 0x4(%rsp),%r10
0x00002aaaab42fb65: imul $0x66666667,%r10,%r10
0x00002aaaab42fb6c: sar $0x22,%r10
0x00002aaaab42fb70: mov %r10d,%r10d
0x00002aaaab42fb73: mov %r10d,%r8d
0x00002aaaab42fb76: sub %r9d,%r8d
0x00002aaaab42fb79: mov %r8d,%edi
0x00002aaaab42fb7c: shl $0x3,%edi
0x00002aaaab42fb7f: mov %r8d,%edx
0x00002aaaab42fb82: shl %edx
0x00002aaaab42fb84: add %edi,%edx
0x00002aaaab42fb86: mov 0x4(%rsp),%ebx
0x00002aaaab42fb8a: sub %edx,%ebx
0x00002aaaab42fb8c: add $0x30,%ebx
0x00002aaaab42fb8f: mov 0x20(%rsp),%rdi
0x00002aaaab42fb94: mov %bx,0xe(%rdi,%rcx,2)
0x00002aaaab42fb99: cmp %r9d,%r10d
0x00002aaaab42fb9c: jne 0x00002aaaab42fb50
;; B34: # B36 B35 <- B33 Freq: 0.499996
0x00002aaaab42fb9e: test %r11d,%r11d
0x00002aaaab42fba1: je 0x00002aaaab42fbac
;; B35: # B36 <- B34 Freq: 0.249998
0x00002aaaab42fba3: add $0xfffffffffffffffe,%ecx
0x00002aaaab42fba6: mov %r11w,0x10(%rdi,%rcx,2)
;; B36: # B80 B37 <- B35 B34 B31 Freq: 0.999992
0x00002aaaab42fbac: mov 0x70(%r15),%r10
0x00002aaaab42fbb0: mov %r10,%rdx
0x00002aaaab42fbb3: add $0x20,%r10
0x00002aaaab42fbb7: cmp 0x80(%r15),%r10
0x00002aaaab42fbbe: jae 0x00002aaaab4303c8
;; B37: # B38 <- B36 Freq: 0.999892
0x00002aaaab42fbc4: mov %r10,0x70(%r15)
0x00002aaaab42fbc8: prefetchnta 0xc0(%r10)
0x00002aaaab42fbd0: mov $0xc080165d,%r11d ; {oop('java/lang/String')}
0x00002aaaab42fbd6: mov 0xb0(%r12,%r11,8),%r10
0x00002aaaab42fbde: mov %r10,(%rdx)
0x00002aaaab42fbe1: movl $0xc080165d,0x8(%rdx) ; {oop('java/lang/String')}
0x00002aaaab42fbe8: mov %r12d,0xc(%rdx)
0x00002aaaab42fbec: mov %r12,0x10(%rdx)
0x00002aaaab42fbf0: mov %r12,0x18(%rdx)
;; B38: # B97 B39 <- B81 B37 Freq: 0.999992
0x00002aaaab42fbf4: mov 0x14(%rsp),%r10d
0x00002aaaab42fbf9: mov %r10d,0x14(%rdx)
0x00002aaaab42fbfd: mov 0x20(%rsp),%r10
0x00002aaaab42fc02: push %r10
0x00002aaaab42fc04: mov $0x2b7541d6d950,%r10 ; {external_word}
0x00002aaaab42fc0e: cmp (%r10),%r12
0x00002aaaab42fc11: je 0x00002aaaab42fc96
0x00002aaaab42fc17: mov %rsp,-0x28(%rsp)
0x00002aaaab42fc1c: sub $0x80,%rsp
0x00002aaaab42fc23: mov %rax,0x78(%rsp)
0x00002aaaab42fc28: mov %rcx,0x70(%rsp)
0x00002aaaab42fc2d: mov %rdx,0x68(%rsp)
0x00002aaaab42fc32: mov %rbx,0x60(%rsp)
0x00002aaaab42fc37: mov %rbp,0x50(%rsp)
0x00002aaaab42fc3c: mov %rsi,0x48(%rsp)
0x00002aaaab42fc41: mov %rdi,0x40(%rsp)
0x00002aaaab42fc46: mov %r8,0x38(%rsp)
0x00002aaaab42fc4b: mov %r9,0x30(%rsp)
0x00002aaaab42fc50: mov %r10,0x28(%rsp)
0x00002aaaab42fc55: mov %r11,0x20(%rsp)
0x00002aaaab42fc5a: mov %r12,0x18(%rsp)
0x00002aaaab42fc5f: mov %r13,0x10(%rsp)
0x00002aaaab42fc64: mov %r14,0x8(%rsp)
0x00002aaaab42fc69: mov %r15,(%rsp)
0x00002aaaab42fc6d: mov $0x2b754183d868,%rdi ; {external_word}
0x00002aaaab42fc77: mov $0x2aaaab42fc17,%rsi ; {internal_word}
0x00002aaaab42fc81: mov %rsp,%rdx
0x00002aaaab42fc84: and $0xfffffffffffffff0,%rsp
0x00002aaaab42fc88: mov $0x2b7540d56110,%r10 ; {runtime_call}
0x00002aaaab42fc92: callq *%r10
0x00002aaaab42fc95: hlt
0x00002aaaab42fc96: pop %r10
0x00002aaaab42fc98: test %r10,%r10
0x00002aaaab42fc9b: jne 0x00002aaaab42fd20
0x00002aaaab42fca1: mov %rsp,-0x28(%rsp)
0x00002aaaab42fca6: sub $0x80,%rsp
0x00002aaaab42fcad: mov %rax,0x78(%rsp)
0x00002aaaab42fcb2: mov %rcx,0x70(%rsp)
0x00002aaaab42fcb7: mov %rdx,0x68(%rsp)
0x00002aaaab42fcbc: mov %rbx,0x60(%rsp)
0x00002aaaab42fcc1: mov %rbp,0x50(%rsp)
0x00002aaaab42fcc6: mov %rsi,0x48(%rsp)
0x00002aaaab42fccb: mov %rdi,0x40(%rsp)
0x00002aaaab42fcd0: mov %r8,0x38(%rsp)
0x00002aaaab42fcd5: mov %r9,0x30(%rsp)
0x00002aaaab42fcda: mov %r10,0x28(%rsp)
0x00002aaaab42fcdf: mov %r11,0x20(%rsp)
0x00002aaaab42fce4: mov %r12,0x18(%rsp)
0x00002aaaab42fce9: mov %r13,0x10(%rsp)
0x00002aaaab42fcee: mov %r14,0x8(%rsp)
0x00002aaaab42fcf3: mov %r15,(%rsp)
0x00002aaaab42fcf7: mov $0x2b754183d8a8,%rdi ; {external_word}
0x00002aaaab42fd01: mov $0x2aaaab42fca1,%rsi ; {internal_word}
0x00002aaaab42fd0b: mov %rsp,%rdx
0x00002aaaab42fd0e: and $0xfffffffffffffff0,%rsp
0x00002aaaab42fd12: mov $0x2b7540d56110,%r10 ; {runtime_call}
0x00002aaaab42fd1c: callq *%r10
0x00002aaaab42fd1f: hlt
0x00002aaaab42fd20: shr $0x3,%r10
0x00002aaaab42fd24: mov %r10d,0xc(%rdx)
0x00002aaaab42fd28: test %ebp,%ebp
0x00002aaaab42fd2a: je 0x00002aaaab4304b1 ;*invokevirtual println
; - Main::foo@140 (line 24)
;; B39: # B114 B40 <- B38 Freq: 0.999991
0x00002aaaab42fd30: lea (%r12,%rbp,8),%rsi ;*getstatic out
; - Main::foo@118 (line 24)
0x00002aaaab42fd34: nop
0x00002aaaab42fd35: nop
0x00002aaaab42fd36: nop
0x00002aaaab42fd37: callq 0x00002aaaab401de0 ; OopMap{[8]=Oop [24]=Derived_oop_[8] off=1468}
;*invokevirtual println
; - Main::foo@140 (line 24)
; {optimized virtual_call}
;; B40: # B46 <- B39 Freq: 0.999971
0x00002aaaab42fd3c: xor %r9d,%r9d
0x00002aaaab42fd3f: jmp 0x00002aaaab42fd82
;; B41: # B44 B42 <- B17 Freq: 0.499997
0x00002aaaab42fd41: test %r11d,%r11d
0x00002aaaab42fd44: jge 0x00002aaaab42fd68
;; B42: # B43 <- B41 Freq: 0.249998
0x00002aaaab42fd46: mov 0x4(%rsp),%r10d
0x00002aaaab42fd4b: mov $0x1,%ecx
;; B43: # B20 <- B42 B44 Freq: 0.499997
0x00002aaaab42fd50: xor %r8d,%r8d
0x00002aaaab42fd53: mov $0x10,%r9d
0x00002aaaab42fd59: mov $0x1,%edi
0x00002aaaab42fd5e: mov $0x20,%esi
0x00002aaaab42fd63: jmpq 0x00002aaaab42f9b3
;; B44: # B43 <- B41 Freq: 0.249998
0x00002aaaab42fd68: mov %r11d,%r10d
0x00002aaaab42fd6b: xor %ecx,%ecx
0x00002aaaab42fd6d: jmp 0x00002aaaab42fd50
0x00002aaaab42fd6f: nop
;; B45: # B46 <- B46 top-of-loop Freq: 986865
0x00002aaaab42fd70: mov 0x28(%rsp),%r10d
0x00002aaaab42fd75: inc %r10d
0x00002aaaab42fd78: mov 0x28(%rsp),%r9d
0x00002aaaab42fd7d: mov %r10d,0x28(%rsp)
;; B46: # B45 B47 <- B40 B45 Loop: B46-B45 inner Freq: 986866
0x00002aaaab42fd82: mov $0x758628a38,%r10 ; {oop([I)}
0x00002aaaab42fd8c: mov 0x10(%r10,%r9,4),%r10d
0x00002aaaab42fd91: cmp $0x10,%r10d
0x00002aaaab42fd95: jl 0x00002aaaab42fd70
;; B47: # B102 B48 <- B46 Freq: 0.999971
0x00002aaaab42fd97: mov $0x758600d08,%r10 ; {oop(a 'java/lang/Class' = 'java/lang/System')}
0x00002aaaab42fda1: mov 0x74(%r10),%r10d ;*getstatic out
; - Main::foo@143 (line 25)
0x00002aaaab42fda5: mov %r10d,0x10(%rsp)
0x00002aaaab42fdaa: mov %r9d,%ebp
0x00002aaaab42fdad: add $0x12,%ebp
0x00002aaaab42fdb0: test %ebp,%ebp
0x00002aaaab42fdb2: jl 0x00002aaaab430535
;; B48: # B102 B49 <- B47 Freq: 0.99997
0x00002aaaab42fdb8: mov %r9d,%r10d
0x00002aaaab42fdbb: add $0x16,%r10d
0x00002aaaab42fdbf: test %r10d,%r10d
0x00002aaaab42fdc2: jl 0x00002aaaab430535
;; B49: # B51 <- B48 Freq: 0.999969
0x00002aaaab42fdc8: xor %r11d,%r11d
0x00002aaaab42fdcb: jmp 0x00002aaaab42fdd3
0x00002aaaab42fdcd: nop
0x00002aaaab42fdce: nop
0x00002aaaab42fdcf: nop
;; B50: # B51 <- B51 top-of-loop Freq: 986863
0x00002aaaab42fdd0: inc %r11d
;; B51: # B50 B52 <- B49 B50 Loop: B51-B50 inner Freq: 986864
0x00002aaaab42fdd3: mov $0x758628a38,%r10 ; {oop([I)}
0x00002aaaab42fddd: mov 0x10(%r10,%r11,4),%r10d
0x00002aaaab42fde2: cmp $0x20,%r10d
0x00002aaaab42fde6: jl 0x00002aaaab42fdd0
;; B52: # B102 B53 <- B51 Freq: 0.999969
0x00002aaaab42fde8: add %r11d,%r9d
0x00002aaaab42fdeb: mov %r9d,%r10d
0x00002aaaab42fdee: add $0x17,%r10d
0x00002aaaab42fdf2: test %r10d,%r10d
0x00002aaaab42fdf5: jl 0x00002aaaab430535
;; B53: # B87 B54 <- B52 Freq: 0.999968
0x00002aaaab42fdfb: cmp $0x80000,%r10d
0x00002aaaab42fe02: ja 0x00002aaaab430418
;; B54: # B88 B55 <- B53 Freq: 0.999967
0x00002aaaab42fe08: mov %r10d,0x4(%rsp)
0x00002aaaab42fe0d: mov 0x70(%r15),%rbx
0x00002aaaab42fe11: inc %r9d
0x00002aaaab42fe14: movslq %r9d,%r10
0x00002aaaab42fe17: shl %r10
0x00002aaaab42fe1a: add $0x43,%r10
0x00002aaaab42fe1e: and $0xfffffffffffffff8,%r10
0x00002aaaab42fe22: mov %rbx,%r11
0x00002aaaab42fe25: add %r10,%r11
0x00002aaaab42fe28: cmp 0x80(%r15),%r11
0x00002aaaab42fe2f: jae 0x00002aaaab43041d
;; B55: # B56 <- B54 Freq: 0.999867
0x00002aaaab42fe35: mov %r11,0x70(%r15)
0x00002aaaab42fe39: prefetchnta 0xc0(%r11)
0x00002aaaab42fe41: movq $0x1,(%rbx)
0x00002aaaab42fe48: prefetchnta 0x100(%r11)
0x00002aaaab42fe50: movl $0xc08000bf,0x8(%rbx) ; {oop({type array char})}
0x00002aaaab42fe57: mov 0x4(%rsp),%r8d
0x00002aaaab42fe5c: mov %r8d,0xc(%rbx)
0x00002aaaab42fe60: prefetchnta 0x140(%r11)
0x00002aaaab42fe68: prefetchnta 0x180(%r11)
;; B56: # B58 <- B89 B55 Freq: 0.999968
0x00002aaaab42fe70: mov %rbx,%rsi
0x00002aaaab42fe73: add $0x10,%rsi
0x00002aaaab42fe77: mov $0x11,%edx
0x00002aaaab42fe7c: mov $0x75866c688,%rdi ; {oop([C)}
0x00002aaaab42fe86: add $0x10,%rdi
0x00002aaaab42fe8a: mov $0x2aaaab40c960,%r10
0x00002aaaab42fe94: callq *%r10
0x00002aaaab42fe97: xor %r9d,%r9d
0x00002aaaab42fe9a: jmp 0x00002aaaab42feae
0x00002aaaab42fe9c: nop
0x00002aaaab42fe9d: nop
0x00002aaaab42fe9e: nop
0x00002aaaab42fe9f: nop
;; B57: # B58 <- B58 top-of-loop Freq: 8.99971
0x00002aaaab42fea0: mov %r10d,%r9d
0x00002aaaab42fea3: sar $0x1f,%r9d
0x00002aaaab42fea7: dec %ebp
0x00002aaaab42fea9: mov %r10d,0x2c(%rsp)
;; B58: # B57 B59 <- B56 B57 Loop: B58-B57 inner Freq: 9.99968
0x00002aaaab42feae: movslq 0x2c(%rsp),%r10
0x00002aaaab42feb3: imul $0x66666667,%r10,%r10
0x00002aaaab42feba: sar $0x22,%r10
0x00002aaaab42febe: mov %r10d,%r11d
0x00002aaaab42fec1: mov %r11d,%r10d
0x00002aaaab42fec4: sub %r9d,%r10d
0x00002aaaab42fec7: mov %r10d,%r8d
0x00002aaaab42feca: shl $0x3,%r8d
0x00002aaaab42fece: mov %r10d,%edi
0x00002aaaab42fed1: shl %edi
0x00002aaaab42fed3: add %r8d,%edi
0x00002aaaab42fed6: mov 0x2c(%rsp),%ecx
0x00002aaaab42feda: sub %edi,%ecx
0x00002aaaab42fedc: add $0x30,%ecx
0x00002aaaab42fedf: mov %cx,0xe(%rbx,%rbp,2)
0x00002aaaab42fee4: cmp %r9d,%r11d
0x00002aaaab42fee7: jne 0x00002aaaab42fea0
;; B59: # B61 <- B58 Freq: 0.999968
0x00002aaaab42fee9: movslq 0x28(%rsp),%r10
0x00002aaaab42feee: mov 0x30(%rsp),%r9d
0x00002aaaab42fef3: mov %r9w,0x32(%rbx,%r10,2)
0x00002aaaab42fef9: mov $0x3e,%r8d
0x00002aaaab42feff: mov $0x3c,%r11d
0x00002aaaab42ff05: mov %r11w,0x34(%rbx,%r10,2)
0x00002aaaab42ff0b: mov %r8w,0x36(%rbx,%r10,2)
0x00002aaaab42ff11: mov %r9w,0x38(%rbx,%r10,2)
0x00002aaaab42ff17: mov 0x4(%rsp),%ecx
0x00002aaaab42ff1b: mov %rbx,%rbp
0x00002aaaab42ff1e: jmp 0x00002aaaab42ff30
;; B60: # B61 <- B61 top-of-loop Freq: 8.99971
0x00002aaaab42ff20: mov %r10d,%r8d
0x00002aaaab42ff23: sar $0x1f,%r8d
0x00002aaaab42ff27: dec %ecx
0x00002aaaab42ff29: mov %r8d,(%rsp)
0x00002aaaab42ff2d: mov %r10d,%r9d
;; B61: # B60 B62 <- B59 B60 Loop: B61-B60 inner Freq: 9.99968
0x00002aaaab42ff30: mov %r9d,%r8d
0x00002aaaab42ff33: movslq %r9d,%r10
0x00002aaaab42ff36: imul $0x66666667,%r10,%r10
0x00002aaaab42ff3d: sar $0x22,%r10
0x00002aaaab42ff41: mov %r10d,%r11d
0x00002aaaab42ff44: mov %r11d,%r10d
0x00002aaaab42ff47: sub (%rsp),%r10d
0x00002aaaab42ff4b: mov %r10d,%r9d
0x00002aaaab42ff4e: shl $0x3,%r9d
0x00002aaaab42ff52: mov %r10d,%ebx
0x00002aaaab42ff55: shl %ebx
0x00002aaaab42ff57: add %r9d,%ebx
0x00002aaaab42ff5a: sub %ebx,%r8d
0x00002aaaab42ff5d: add $0x30,%r8d
0x00002aaaab42ff61: mov %r8w,0xe(%rbp,%rcx,2)
0x00002aaaab42ff67: cmp (%rsp),%r11d
0x00002aaaab42ff6b: jne 0x00002aaaab42ff20
;; B62: # B85 B63 <- B61 Freq: 0.999968
0x00002aaaab42ff6d: mov 0x70(%r15),%rdx
0x00002aaaab42ff71: mov %rdx,%r10
0x00002aaaab42ff74: add $0x20,%r10
0x00002aaaab42ff78: cmp 0x80(%r15),%r10
0x00002aaaab42ff7f: jae 0x00002aaaab430400
;; B63: # B64 <- B62 Freq: 0.999868
0x00002aaaab42ff85: mov %r10,0x70(%r15)
0x00002aaaab42ff89: prefetchnta 0xc0(%r10)
0x00002aaaab42ff91: mov $0xc080165d,%r10d ; {oop('java/lang/String')}
0x00002aaaab42ff97: mov 0xb0(%r12,%r10,8),%r10
0x00002aaaab42ff9f: mov %r10,(%rdx)
0x00002aaaab42ffa2: movl $0xc080165d,0x8(%rdx) ; {oop('java/lang/String')}
0x00002aaaab42ffa9: mov %r12d,0xc(%rdx)
0x00002aaaab42ffad: mov %r12,0x10(%rdx)
0x00002aaaab42ffb1: mov %r12,0x18(%rdx)
;; B64: # B98 B65 <- B86 B63 Freq: 0.999968
0x00002aaaab42ffb5: mov 0x4(%rsp),%r11d
0x00002aaaab42ffba: mov %r11d,0x14(%rdx)
0x00002aaaab42ffbe: push %r10
0x00002aaaab42ffc0: mov $0x2b7541d6d950,%r10 ; {external_word}
0x00002aaaab42ffca: cmp (%r10),%r12
0x00002aaaab42ffcd: je 0x00002aaaab430052
0x00002aaaab42ffd3: mov %rsp,-0x28(%rsp)
0x00002aaaab42ffd8: sub $0x80,%rsp
0x00002aaaab42ffdf: mov %rax,0x78(%rsp)
0x00002aaaab42ffe4: mov %rcx,0x70(%rsp)
0x00002aaaab42ffe9: mov %rdx,0x68(%rsp)
0x00002aaaab42ffee: mov %rbx,0x60(%rsp)
0x00002aaaab42fff3: mov %rbp,0x50(%rsp)
0x00002aaaab42fff8: mov %rsi,0x48(%rsp)
0x00002aaaab42fffd: mov %rdi,0x40(%rsp)
0x00002aaaab430002: mov %r8,0x38(%rsp)
0x00002aaaab430007: mov %r9,0x30(%rsp)
0x00002aaaab43000c: mov %r10,0x28(%rsp)
0x00002aaaab430011: mov %r11,0x20(%rsp)
0x00002aaaab430016: mov %r12,0x18(%rsp)
0x00002aaaab43001b: mov %r13,0x10(%rsp)
0x00002aaaab430020: mov %r14,0x8(%rsp)
0x00002aaaab430025: mov %r15,(%rsp)
0x00002aaaab430029: mov $0x2b754183d868,%rdi ; {external_word}
0x00002aaaab430033: mov $0x2aaaab42ffd3,%rsi ; {internal_word}
0x00002aaaab43003d: mov %rsp,%rdx
0x00002aaaab430040: and $0xfffffffffffffff0,%rsp
0x00002aaaab430044: mov $0x2b7540d56110,%r10 ; {runtime_call}
0x00002aaaab43004e: callq *%r10
0x00002aaaab430051: hlt
0x00002aaaab430052: pop %r10
0x00002aaaab430054: test %rbp,%rbp
0x00002aaaab430057: jne 0x00002aaaab4300dc
0x00002aaaab43005d: mov %rsp,-0x28(%rsp)
0x00002aaaab430062: sub $0x80,%rsp
0x00002aaaab430069: mov %rax,0x78(%rsp)
0x00002aaaab43006e: mov %rcx,0x70(%rsp)
0x00002aaaab430073: mov %rdx,0x68(%rsp)
0x00002aaaab430078: mov %rbx,0x60(%rsp)
0x00002aaaab43007d: mov %rbp,0x50(%rsp)
0x00002aaaab430082: mov %rsi,0x48(%rsp)
0x00002aaaab430087: mov %rdi,0x40(%rsp)
0x00002aaaab43008c: mov %r8,0x38(%rsp)
0x00002aaaab430091: mov %r9,0x30(%rsp)
0x00002aaaab430096: mov %r10,0x28(%rsp)
0x00002aaaab43009b: mov %r11,0x20(%rsp)
0x00002aaaab4300a0: mov %r12,0x18(%rsp)
0x00002aaaab4300a5: mov %r13,0x10(%rsp)
0x00002aaaab4300aa: mov %r14,0x8(%rsp)
0x00002aaaab4300af: mov %r15,(%rsp)
0x00002aaaab4300b3: mov $0x2b754183d8a8,%rdi ; {external_word}
0x00002aaaab4300bd: mov $0x2aaaab43005d,%rsi ; {internal_word}
0x00002aaaab4300c7: mov %rsp,%rdx
0x00002aaaab4300ca: and $0xfffffffffffffff0,%rsp
0x00002aaaab4300ce: mov $0x2b7540d56110,%r10 ; {runtime_call}
0x00002aaaab4300d8: callq *%r10
0x00002aaaab4300db: hlt
0x00002aaaab4300dc: mov %rbp,%r10
0x00002aaaab4300df: shr $0x3,%r10
0x00002aaaab4300e3: mov %r10d,0xc(%rdx)
0x00002aaaab4300e7: mov 0x10(%rsp),%r10d
0x00002aaaab4300ec: test %r10d,%r10d
0x00002aaaab4300ef: je 0x00002aaaab4304cd ;*invokevirtual println
; - Main::foo@177 (line 25)
;; B65: # B115 B66 <- B64 Freq: 0.999967
0x00002aaaab4300f5: lea (%r12,%r10,8),%rsi ;*getstatic out
; - Main::foo@143 (line 25)
0x00002aaaab4300f9: nop
0x00002aaaab4300fa: nop
0x00002aaaab4300fb: callq 0x00002aaaab401de0 ; OopMap{[8]=Oop [24]=Derived_oop_[8] off=2432}
;*invokevirtual println
; - Main::foo@177 (line 25)
; {optimized virtual_call}
;; B66: # B99 B67 <- B65 Freq: 0.999947
0x00002aaaab430100: mov $0x758600d08,%r10 ; {oop(a 'java/lang/Class' = 'java/lang/System')}
0x00002aaaab43010a: mov 0x74(%r10),%r10d ;*getstatic out
; - Main::foo@180 (line 26)
0x00002aaaab43010e: test %r10d,%r10d
0x00002aaaab430111: je 0x00002aaaab4304e9 ;*invokevirtual println
; - Main::foo@185 (line 26)
;; B67: # B116 B68 <- B66 Freq: 0.999946
0x00002aaaab430117: lea (%r12,%r10,8),%rsi ;*getstatic out
; - Main::foo@180 (line 26)
0x00002aaaab43011b: mov $0x75866c6f8,%rdx ; {oop("Expected: "testtesttesttesttesttesttesttest"")}
0x00002aaaab430125: nop
0x00002aaaab430126: nop
0x00002aaaab430127: callq 0x00002aaaab401de0 ; OopMap{[8]=Oop [24]=Derived_oop_[8] off=2476}
;*invokevirtual println
; - Main::foo@185 (line 26)
; {optimized virtual_call}
;; B68: # B90 B69 <- B67 Freq: 0.999926
0x00002aaaab43012c: mov 0x70(%r15),%r11
0x00002aaaab430130: mov $0x758600d08,%r10 ; {oop(a 'java/lang/Class' = 'java/lang/System')}
0x00002aaaab43013a: mov 0x74(%r10),%ebp ;*getstatic out
; - Main::foo@188 (line 28)
0x00002aaaab43013e: mov %r11,%r10
0x00002aaaab430141: add $0x48,%r10
0x00002aaaab430145: cmp 0x80(%r15),%r10
0x00002aaaab43014c: jae 0x00002aaaab430438
;; B69: # B70 <- B68 Freq: 0.999826
0x00002aaaab430152: mov %r10,0x70(%r15)
0x00002aaaab430156: prefetchnta 0xc0(%r10)
0x00002aaaab43015e: movq $0x1,(%r11)
0x00002aaaab430165: prefetchnta 0x100(%r10)
0x00002aaaab43016d: movl $0xc08000bf,0x8(%r11) ; {oop({type array char})}
0x00002aaaab430175: prefetchnta 0x140(%r10)
0x00002aaaab43017d: movl $0x1c,0xc(%r11)
0x00002aaaab430185: prefetchnta 0x180(%r10)
;; B70: # B92 B71 <- B91 B69 Freq: 0.999926
0x00002aaaab43018d: mov %r11,%r13
0x00002aaaab430190: add $0x26,%r13
0x00002aaaab430194: mov %r11,%rsi
0x00002aaaab430197: add $0x10,%rsi
0x00002aaaab43019b: mov %r11,(%rsp)
0x00002aaaab43019f: mov $0x22,%ebx
0x00002aaaab4301a4: mov $0x75866c7a0,%rdi ; {oop([C)}
0x00002aaaab4301ae: add $0x10,%rdi
0x00002aaaab4301b2: mov $0xb,%edx
0x00002aaaab4301b7: mov $0x2aaaab40c960,%r10
0x00002aaaab4301c1: callq *%r10
0x00002aaaab4301c4: mov 0x18(%rsp),%rdi
0x00002aaaab4301c9: mov %r13,%rsi
0x00002aaaab4301cc: mov $0x10,%edx
0x00002aaaab4301d1: mov $0x2aaaab40c960,%r10
0x00002aaaab4301db: callq *%r10
0x00002aaaab4301de: mov (%rsp),%r10
0x00002aaaab4301e2: mov %bx,0x46(%r10)
0x00002aaaab4301e7: mov 0x70(%r15),%rdx
0x00002aaaab4301eb: mov %rdx,%r10
0x00002aaaab4301ee: add $0x20,%r10
0x00002aaaab4301f2: cmp 0x80(%r15),%r10
0x00002aaaab4301f9: jae 0x00002aaaab430454
;; B71: # B72 <- B70 Freq: 0.999826
0x00002aaaab4301ff: mov %r10,0x70(%r15)
0x00002aaaab430203: prefetchnta 0xc0(%r10)
0x00002aaaab43020b: mov $0xc080165d,%r11d ; {oop('java/lang/String')}
0x00002aaaab430211: mov 0xb0(%r12,%r11,8),%r10
0x00002aaaab430219: mov %r10,(%rdx)
0x00002aaaab43021c: movl $0xc080165d,0x8(%rdx) ; {oop('java/lang/String')}
0x00002aaaab430223: mov %r12d,0xc(%rdx)
0x00002aaaab430227: mov %r12,0x18(%rdx)
;; B72: # B100 B73 <- B93 B71 Freq: 0.999926
0x00002aaaab43022b: mov (%rsp),%r10
0x00002aaaab43022f: push %r10
0x00002aaaab430231: mov $0x2b7541d6d950,%r10 ; {external_word}
0x00002aaaab43023b: cmp (%r10),%r12
0x00002aaaab43023e: je 0x00002aaaab4302c3
0x00002aaaab430244: mov %rsp,-0x28(%rsp)
0x00002aaaab430249: sub $0x80,%rsp
0x00002aaaab430250: mov %rax,0x78(%rsp)
0x00002aaaab430255: mov %rcx,0x70(%rsp)
0x00002aaaab43025a: mov %rdx,0x68(%rsp)
0x00002aaaab43025f: mov %rbx,0x60(%rsp)
0x00002aaaab430264: mov %rbp,0x50(%rsp)
0x00002aaaab430269: mov %rsi,0x48(%rsp)
0x00002aaaab43026e: mov %rdi,0x40(%rsp)
0x00002aaaab430273: mov %r8,0x38(%rsp)
0x00002aaaab430278: mov %r9,0x30(%rsp)
0x00002aaaab43027d: mov %r10,0x28(%rsp)
0x00002aaaab430282: mov %r11,0x20(%rsp)
0x00002aaaab430287: mov %r12,0x18(%rsp)
0x00002aaaab43028c: mov %r13,0x10(%rsp)
0x00002aaaab430291: mov %r14,0x8(%rsp)
0x00002aaaab430296: mov %r15,(%rsp)
0x00002aaaab43029a: mov $0x2b754183d868,%rdi ; {external_word}
0x00002aaaab4302a4: mov $0x2aaaab430244,%rsi ; {internal_word}
0x00002aaaab4302ae: mov %rsp,%rdx
0x00002aaaab4302b1: and $0xfffffffffffffff0,%rsp
0x00002aaaab4302b5: mov $0x2b7540d56110,%r10 ; {runtime_call}
0x00002aaaab4302bf: callq *%r10
0x00002aaaab4302c2: hlt
0x00002aaaab4302c3: pop %r10
0x00002aaaab4302c5: test %r10,%r10
0x00002aaaab4302c8: jne 0x00002aaaab43034d
0x00002aaaab4302ce: mov %rsp,-0x28(%rsp)
0x00002aaaab4302d3: sub $0x80,%rsp
0x00002aaaab4302da: mov %rax,0x78(%rsp)
0x00002aaaab4302df: mov %rcx,0x70(%rsp)
0x00002aaaab4302e4: mov %rdx,0x68(%rsp)
0x00002aaaab4302e9: mov %rbx,0x60(%rsp)
0x00002aaaab4302ee: mov %rbp,0x50(%rsp)
0x00002aaaab4302f3: mov %rsi,0x48(%rsp)
0x00002aaaab4302f8: mov %rdi,0x40(%rsp)
0x00002aaaab4302fd: mov %r8,0x38(%rsp)
0x00002aaaab430302: mov %r9,0x30(%rsp)
0x00002aaaab430307: mov %r10,0x28(%rsp)
0x00002aaaab43030c: mov %r11,0x20(%rsp)
0x00002aaaab430311: mov %r12,0x18(%rsp)
0x00002aaaab430316: mov %r13,0x10(%rsp)
0x00002aaaab43031b: mov %r14,0x8(%rsp)
0x00002aaaab430320: mov %r15,(%rsp)
0x00002aaaab430324: mov $0x2b754183d8a8,%rdi ; {external_word}
0x00002aaaab43032e: mov $0x2aaaab4302ce,%rsi ; {internal_word}
0x00002aaaab430338: mov %rsp,%rdx
0x00002aaaab43033b: and $0xfffffffffffffff0,%rsp
0x00002aaaab43033f: mov $0x2b7540d56110,%r10 ; {runtime_call}
0x00002aaaab430349: callq *%r10
0x00002aaaab43034c: hlt
0x00002aaaab43034d: mov %r10,%r11
0x00002aaaab430350: shr $0x3,%r11
0x00002aaaab430354: mov $0x1c00000000,%r10
0x00002aaaab43035e: mov %r10,0x10(%rdx)
0x00002aaaab430362: mov %r11d,0xc(%rdx)
0x00002aaaab430366: test %ebp,%ebp
0x00002aaaab430368: je 0x00002aaaab430501 ;*invokevirtual println
; - Main::foo@215 (line 28)
;; B73: # B117 B74 <- B72 Freq: 0.999925
0x00002aaaab43036e: lea (%r12,%rbp,8),%rsi ;*getstatic out
; - Main::foo@188 (line 28)
0x00002aaaab430372: nop
0x00002aaaab430373: callq 0x00002aaaab401de0 ; OopMap{off=3064}
;*invokevirtual println
; - Main::foo@215 (line 28)
; {optimized virtual_call}
;; B74: # N1517 <- B73 Freq: 0.999905
0x00002aaaab430378: add $0x50,%rsp
0x00002aaaab43037c: pop %rbp
0x00002aaaab43037d: test %eax,-0x536383(%rip) # 0x00002aaaaaefa000
; {poll_return}
0x00002aaaab430383: retq
;; B75: # B15 <- B7 Freq: 0.0163304
0x00002aaaab430384: xor %r9d,%r9d
0x00002aaaab430387: jmpq 0x00002aaaab42f8ab
;; B76: # B4 <- B1 Freq: 0.000999987
0x00002aaaab43038c: xor %r8d,%r8d
0x00002aaaab43038f: mov %rbp,%r9
0x00002aaaab430392: jmpq 0x00002aaaab42f7ea
;; B77: # B7 <- B4 Freq: 0.000999986
0x00002aaaab430397: mov $0xc,%r10d
0x00002aaaab43039d: xor %ebx,%ebx
0x00002aaaab43039f: jmpq 0x00002aaaab42f80b
;; B78: # B104 B79 <- B15 Freq: 0.000100016
0x00002aaaab4303a4: mov %r9d,(%rsp)
0x00002aaaab4303a8: mov %r8,%rbp
0x00002aaaab4303ab: mov $0x6040005f8,%rsi ; {oop({type array char})}
0x00002aaaab4303b5: mov $0x10,%edx
0x00002aaaab4303ba: nop
0x00002aaaab4303bb: callq 0x00002aaaab401660 ; OopMap{rbp=Oop off=3136}
;*new ; - Main::foo@41 (line 14)
; {runtime_call}
;; B79: # B17 <- B78 Freq: 0.000100014
0x00002aaaab4303c0: mov %rax,%r11
0x00002aaaab4303c3: jmpq 0x00002aaaab42f902
;; B80: # B112 B81 <- B36 Freq: 0.000100016
0x00002aaaab4303c8: mov $0x60400b2e8,%rsi ; {oop('java/lang/String')}
0x00002aaaab4303d2: nop
0x00002aaaab4303d3: callq 0x00002aaaab338ee0 ; OopMap{rbp=NarrowOop [8]=Oop [24]=Derived_oop_[8] [32]=Oop off=3160}
;*new ; - Main::foo@121 (line 24)
; {runtime_call}
;; B81: # B38 <- B80 Freq: 0.000100014
0x00002aaaab4303d8: mov %rax,%rdx
0x00002aaaab4303db: jmpq 0x00002aaaab42fbf4
;; B82: # B83 <- B23 Freq: 1.01327e-06
0x00002aaaab4303e0: mov %r11d,0x14(%rsp)
;; B83: # B111 B84 <- B82 B24 Freq: 0.000101029
0x00002aaaab4303e5: mov $0x6040005f8,%rsi ; {oop({type array char})}
0x00002aaaab4303ef: mov 0x14(%rsp),%edx
0x00002aaaab4303f3: callq 0x00002aaaab401660 ; OopMap{rbp=NarrowOop [8]=Oop [24]=Derived_oop_[8] off=3192}
;*new ; - Main::foo@121 (line 24)
; {runtime_call}
;; B84: # B26 <- B83 Freq: 0.000101027
0x00002aaaab4303f8: mov %rax,%r8
0x00002aaaab4303fb: jmpq 0x00002aaaab42fab4
;; B85: # B109 B86 <- B62 Freq: 0.000100013
0x00002aaaab430400: mov $0x60400b2e8,%rsi ; {oop('java/lang/String')}
0x00002aaaab43040a: nop
0x00002aaaab43040b: callq 0x00002aaaab338ee0 ; OopMap{rbp=Oop [8]=Oop [16]=NarrowOop [24]=Derived_oop_[8] off=3216}
;*new ; - Main::foo@146 (line 25)
; {runtime_call}
;; B86: # B64 <- B85 Freq: 0.000100011
0x00002aaaab430410: mov %rax,%rdx
0x00002aaaab430413: jmpq 0x00002aaaab42ffb5
;; B87: # B88 <- B53 Freq: 1.01325e-06
0x00002aaaab430418: mov %r10d,0x4(%rsp)
;; B88: # B108 B89 <- B87 B54 Freq: 0.000101027
0x00002aaaab43041d: mov $0x6040005f8,%rsi ; {oop({type array char})}
0x00002aaaab430427: mov 0x4(%rsp),%edx
0x00002aaaab43042b: callq 0x00002aaaab401660 ; OopMap{[8]=Oop [16]=NarrowOop [24]=Derived_oop_[8] off=3248}
;*new ; - Main::foo@146 (line 25)
; {runtime_call}
;; B89: # B56 <- B88 Freq: 0.000101025
0x00002aaaab430430: mov %rax,%rbx
0x00002aaaab430433: jmpq 0x00002aaaab42fe70
;; B90: # B106 B91 <- B68 Freq: 0.000100009
0x00002aaaab430438: mov $0x6040005f8,%rsi ; {oop({type array char})}
0x00002aaaab430442: mov $0x1c,%edx
0x00002aaaab430447: callq 0x00002aaaab401660 ; OopMap{rbp=NarrowOop [8]=Oop [24]=Derived_oop_[8] off=3276}
;*new ; - Main::foo@191 (line 28)
; {runtime_call}
;; B91: # B70 <- B90 Freq: 0.000100007
0x00002aaaab43044c: mov %rax,%r11
0x00002aaaab43044f: jmpq 0x00002aaaab43018d
;; B92: # B105 B93 <- B70 Freq: 0.000100009
0x00002aaaab430454: mov $0x60400b2e8,%rsi ; {oop('java/lang/String')}
0x00002aaaab43045e: nop
0x00002aaaab43045f: callq 0x00002aaaab338ee0 ; OopMap{rbp=NarrowOop [0]=Oop [8]=Oop off=3300}
;*new ; - Main::foo@191 (line 28)
; {runtime_call}
;; B93: # B72 <- B92 Freq: 0.000100007
0x00002aaaab430464: mov %rax,%rdx
0x00002aaaab430467: jmpq 0x00002aaaab43022b
;; B94: # N1517 <- B9 Freq: 1.99346e-06
0x00002aaaab43046c: mov $0xfffffff6,%esi
0x00002aaaab430471: mov %r13d,%ebp
0x00002aaaab430474: nop
0x00002aaaab430475: nop
0x00002aaaab430476: nop
0x00002aaaab430477: callq 0x00002aaaab402b20 ; OopMap{off=3324}
;*laload
; - Main::foo@24 (line 6)
; {runtime_call}
0x00002aaaab43047c: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab430486: callq *%r10
;; B95: # B96 <- B10 Freq: 1.99345e-06
0x00002aaaab430489: mov %r13d,%ebp
;; B96: # N1517 <- B13 B95 Freq: 2.99018e-06
0x00002aaaab43048c: mov $0xffffffe4,%esi
0x00002aaaab430491: mov %rbx,0x8(%rsp)
0x00002aaaab430496: mov %r8,0x18(%rsp)
0x00002aaaab43049b: mov %edi,0x14(%rsp)
0x00002aaaab43049f: callq 0x00002aaaab402b20 ; OopMap{[8]=Oop [24]=Oop off=3364}
;*laload
; - Main::foo@24 (line 6)
; {runtime_call}
0x00002aaaab4304a4: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab4304ae: callq *%r10 ;*laload
; - Main::foo@24 (line 6)
;; B97: # N1517 <- B38 Freq: 1.01327e-06
0x00002aaaab4304b1: mov $0xfffffff6,%esi
0x00002aaaab4304b6: mov %rdx,%rbp
0x00002aaaab4304b9: nop
0x00002aaaab4304ba: nop
0x00002aaaab4304bb: callq 0x00002aaaab402b20 ; OopMap{rbp=Oop off=3392}
;*invokevirtual println
; - Main::foo@140 (line 24)
; {runtime_call}
0x00002aaaab4304c0: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab4304ca: callq *%r10 ;*invokevirtual println
; - Main::foo@140 (line 24)
;; B98: # N1517 <- B64 Freq: 1.01325e-06
0x00002aaaab4304cd: mov $0xfffffff6,%esi
0x00002aaaab4304d2: mov %rdx,%rbp
0x00002aaaab4304d5: nop
0x00002aaaab4304d6: nop
0x00002aaaab4304d7: callq 0x00002aaaab402b20 ; OopMap{rbp=Oop off=3420}
;*invokevirtual println
; - Main::foo@177 (line 25)
; {runtime_call}
0x00002aaaab4304dc: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab4304e6: callq *%r10 ;*invokevirtual println
; - Main::foo@177 (line 25)
;; B99: # N1517 <- B66 Freq: 1.01323e-06
0x00002aaaab4304e9: mov $0xfffffff6,%esi
0x00002aaaab4304ee: nop
0x00002aaaab4304ef: callq 0x00002aaaab402b20 ; OopMap{off=3444}
;*invokevirtual println
; - Main::foo@185 (line 26)
; {runtime_call}
0x00002aaaab4304f4: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab4304fe: callq *%r10 ;*invokevirtual println
; - Main::foo@185 (line 26)
;; B100: # N1517 <- B72 Freq: 1.0132e-06
0x00002aaaab430501: mov $0xfffffff6,%esi
0x00002aaaab430506: mov %rdx,%rbp
0x00002aaaab430509: nop
0x00002aaaab43050a: nop
0x00002aaaab43050b: callq 0x00002aaaab402b20 ; OopMap{rbp=Oop off=3472}
;*invokevirtual println
; - Main::foo@215 (line 28)
; {runtime_call}
0x00002aaaab430510: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab43051a: callq *%r10 ;*invokevirtual println
; - Main::foo@215 (line 28)
;; B101: # N1517 <- B22 Freq: 9.99993e-07
0x00002aaaab43051d: mov $0xffffffcc,%esi
0x00002aaaab430522: nop
0x00002aaaab430523: callq 0x00002aaaab402b20 ; OopMap{rbp=NarrowOop [8]=Oop off=3496}
;*new ; - Main::foo@121 (line 24)
; {runtime_call}
0x00002aaaab430528: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab430532: callq *%r10
;; B102: # N1517 <- B47 B48 B52 Freq: 2.99991e-06
0x00002aaaab430535: mov $0xffffffcc,%esi
0x00002aaaab43053a: mov 0x10(%rsp),%ebp
0x00002aaaab43053e: nop
0x00002aaaab43053f: callq 0x00002aaaab402b20 ; OopMap{rbp=NarrowOop [8]=Oop off=3524}
;*new ; - Main::foo@146 (line 25)
; {runtime_call}
0x00002aaaab430544: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab43054e: callq *%r10
;; B103: # N1517 <- B2 B5 Freq: 1.998e-06
0x00002aaaab430551: mov $0xffffffad,%esi
0x00002aaaab430556: mov %rbx,%rbp
0x00002aaaab430559: mov %r13d,(%rsp)
0x00002aaaab43055d: mov %r9,0x8(%rsp)
0x00002aaaab430562: nop
0x00002aaaab430563: callq 0x00002aaaab402b20 ; OopMap{rbp=Oop [8]=Oop off=3560}
;*iload
; - Main::foo@15 (line 6)
; {runtime_call}
0x00002aaaab430568: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab430572: callq *%r10 ;*iload
; - Main::foo@15 (line 6)
;; B104: # B118 <- B78 Freq: 1.00016e-09
0x00002aaaab430575: mov %rax,%rsi
0x00002aaaab430578: jmp 0x00002aaaab4305a1
;; B105: # B107 <- B92 Freq: 1.00009e-09
0x00002aaaab43057a: jmp 0x00002aaaab43057c
;; B106: # B107 <- B90 Freq: 1.00009e-09
;; B107: # B118 <- B106 B105 Freq: 2.00018e-09
0x00002aaaab43057c: mov %rax,%rsi
0x00002aaaab43057f: jmp 0x00002aaaab4305a1
;; B108: # B110 <- B88 Freq: 1.01027e-09
0x00002aaaab430581: jmp 0x00002aaaab430583
;; B109: # B110 <- B85 Freq: 1.00013e-09
;; B110: # B118 <- B108 B109 Freq: 2.0104e-09
0x00002aaaab430583: mov %rax,%rsi
0x00002aaaab430586: jmp 0x00002aaaab4305a1
;; B111: # B113 <- B83 Freq: 1.01029e-09
0x00002aaaab430588: jmp 0x00002aaaab43058a
;; B112: # B113 <- B80 Freq: 1.00016e-09
;; B113: # B118 <- B111 B112 Freq: 2.01045e-09
0x00002aaaab43058a: mov %rax,%rsi
0x00002aaaab43058d: jmp 0x00002aaaab4305a1 ;*invokevirtual println
; - Main::foo@140 (line 24)
;; B114: # B118 <- B39 Freq: 9.99991e-06
0x00002aaaab43058f: mov %rax,%rsi
0x00002aaaab430592: jmp 0x00002aaaab4305a1 ;*invokevirtual println
; - Main::foo@177 (line 25)
;; B115: # B118 <- B65 Freq: 9.99967e-06
0x00002aaaab430594: mov %rax,%rsi
0x00002aaaab430597: jmp 0x00002aaaab4305a1 ;*invokevirtual println
; - Main::foo@185 (line 26)
;; B116: # B118 <- B67 Freq: 9.99946e-06
0x00002aaaab430599: mov %rax,%rsi
0x00002aaaab43059c: jmp 0x00002aaaab4305a1 ;*invokevirtual println
; - Main::foo@215 (line 28)
;; B117: # B118 <- B73 Freq: 9.99925e-06
0x00002aaaab43059e: mov %rax,%rsi ;*invokespecial <init>
; - Main::foo@49 (line 14)
;; B118: # N1517 <- B117 B107 B116 B115 B110 B114 B113 B104 Freq: 4.00053e-05
0x00002aaaab4305a1: add $0x50,%rsp
0x00002aaaab4305a5: pop %rbp
0x00002aaaab4305a6: jmpq 0x00002aaaab4283a0 ; {runtime_call}
0x00002aaaab4305ab: hlt
0x00002aaaab4305ac: hlt
0x00002aaaab4305ad: hlt
0x00002aaaab4305ae: hlt
0x00002aaaab4305af: hlt
0x00002aaaab4305b0: hlt
0x00002aaaab4305b1: hlt
0x00002aaaab4305b2: hlt
0x00002aaaab4305b3: hlt
0x00002aaaab4305b4: hlt
0x00002aaaab4305b5: hlt
0x00002aaaab4305b6: hlt
0x00002aaaab4305b7: hlt
0x00002aaaab4305b8: hlt
0x00002aaaab4305b9: hlt
0x00002aaaab4305ba: hlt
0x00002aaaab4305bb: hlt
0x00002aaaab4305bc: hlt
0x00002aaaab4305bd: hlt
0x00002aaaab4305be: hlt
0x00002aaaab4305bf: hlt
[Stub Code]
0x00002aaaab4305c0: mov $0x0,%rbx ; {no_reloc}
0x00002aaaab4305ca: jmpq 0x00002aaaab4305ca ; {runtime_call}
0x00002aaaab4305cf: mov $0x0,%rbx ; {static_stub}
0x00002aaaab4305d9: jmpq 0x00002aaaab4305d9 ; {runtime_call}
0x00002aaaab4305de: mov $0x0,%rbx ; {static_stub}
0x00002aaaab4305e8: jmpq 0x00002aaaab4305e8 ; {runtime_call}
0x00002aaaab4305ed: mov $0x0,%rbx ; {static_stub}
0x00002aaaab4305f7: jmpq 0x00002aaaab4305f7 ; {runtime_call}
[Exception Handler]
0x00002aaaab4305fc: jmpq 0x00002aaaab4029e0 ; {runtime_call}
[Deopt Handler Code]
0x00002aaaab430601: callq 0x00002aaaab430606
0x00002aaaab430606: subq $0x5,(%rsp)
0x00002aaaab43060b: jmpq 0x00002aaaab403720 ; {runtime_call}
Failed at iteration: 241
Length mismatch: 16 <> 32
Expected: "testtesttesttesttesttesttesttest"
Actual: "nullnulltesttest"
try standard compilation
560 1 b Main::foo (225 bytes)
Decoding compiled method 0x00002aaaab42bc90:
Code:
[Entry Point]
[Verified Entry Point]
[Constants]
# {method} 'foo' '()V' in 'Main'
# [sp+0x50] (sp of caller)
;; N1: # B1 <- B62 B59 B64 B44 B61 B60 B63 B79 Freq: 1
;; B1: # B45 B2 <- BLOCK HEAD IS JUNK Freq: 1
0x00002aaaab42bee0: mov %eax,-0x16000(%rsp)
0x00002aaaab42bee7: push %rbp
0x00002aaaab42bee8: sub $0x40,%rsp ;*new ; - Main::foo@87 (line 20)
0x00002aaaab42beec: mov 0x70(%r15),%rbx
0x00002aaaab42bef0: mov %rbx,%r10
0x00002aaaab42bef3: add $0x30,%r10
0x00002aaaab42bef7: cmp 0x80(%r15),%r10
0x00002aaaab42befe: jae 0x00002aaaab42c878
;; B2: # B3 <- B1 Freq: 0.9999
0x00002aaaab42bf04: mov %r10,0x70(%r15)
0x00002aaaab42bf08: prefetchnta 0xc0(%r10)
0x00002aaaab42bf10: movq $0x1,(%rbx)
0x00002aaaab42bf17: prefetchnta 0x100(%r10)
0x00002aaaab42bf1f: movl $0xc08000bf,0x8(%rbx) ; {oop({type array char})}
0x00002aaaab42bf26: prefetchnta 0x140(%r10)
0x00002aaaab42bf2e: movl $0x10,0xc(%rbx)
0x00002aaaab42bf35: prefetchnta 0x180(%r10)
;; B3: # B5 <- B46 B2 Freq: 1
0x00002aaaab42bf3d: mov %rbx,%rbp
0x00002aaaab42bf40: add $0x18,%rbp
0x00002aaaab42bf44: mov %rbx,%r10
0x00002aaaab42bf47: add $0x10,%r10
0x00002aaaab42bf4b: mov %r10,(%rsp)
0x00002aaaab42bf4f: mov $0xeb0c06b2,%r10d ; {oop([C)}
0x00002aaaab42bf55: lea (%r12,%r10,8),%r11
0x00002aaaab42bf59: lea 0x10(%r12,%r10,8),%r13
0x00002aaaab42bf5e: mov %r13,%rdi
0x00002aaaab42bf61: mov (%rsp),%rsi
0x00002aaaab42bf65: mov $0x4,%edx
0x00002aaaab42bf6a: mov $0x2aaaab40c960,%r10
0x00002aaaab42bf74: callq *%r10
0x00002aaaab42bf77: mov %r13,%rdi
0x00002aaaab42bf7a: mov %rbp,%rsi
0x00002aaaab42bf7d: mov $0x4,%edx
0x00002aaaab42bf82: mov $0x2aaaab40c960,%r10
0x00002aaaab42bf8c: callq *%r10 ;*invokevirtual length
; - Main::foo@111 (line 23)
0x00002aaaab42bf8f: xor %edi,%edi
0x00002aaaab42bf91: mov $0x10,%r11d
0x00002aaaab42bf97: xor %r8d,%r8d
0x00002aaaab42bf9a: jmp 0x00002aaaab42bfa2
0x00002aaaab42bf9c: nop
0x00002aaaab42bf9d: nop
0x00002aaaab42bf9e: nop
0x00002aaaab42bf9f: nop
;; B4: # B5 <- B5 top-of-loop Freq: 986894
0x00002aaaab42bfa0: inc %edi
;; B5: # B4 B6 <- B3 B4 Loop: B5-B4 inner Freq: 986895
0x00002aaaab42bfa2: mov $0x758628a38,%r10 ; {oop([I)}
0x00002aaaab42bfac: mov 0x10(%r10,%rdi,4),%r10d
0x00002aaaab42bfb1: test %r10d,%r10d
0x00002aaaab42bfb4: jl 0x00002aaaab42bfa0
;; B6: # B63 B7 <- B5 Freq: 1
0x00002aaaab42bfb6: mov %edi,%r9d
0x00002aaaab42bfb9: add $0x16,%r9d
0x00002aaaab42bfbd: mov $0x74,%esi
0x00002aaaab42bfc2: mov %rbx,%rcx
0x00002aaaab42bfc5: mov %si,0x20(%rbx)
0x00002aaaab42bfc9: mov $0x65,%r10d
0x00002aaaab42bfcf: mov %r10w,0x22(%rbx)
0x00002aaaab42bfd4: mov $0x758600d08,%rbx ; {oop(a 'java/lang/Class' = 'java/lang/System')}
0x00002aaaab42bfde: mov 0x74(%rbx),%edx ;*getstatic out
; - Main::foo@118 (line 24)
0x00002aaaab42bfe1: mov %edx,0x1c(%rsp)
0x00002aaaab42bfe5: mov $0x73,%ebx
0x00002aaaab42bfea: mov %bx,0x24(%rcx)
0x00002aaaab42bfee: mov %si,0x26(%rcx)
0x00002aaaab42bff2: mov %si,0x28(%rcx)
0x00002aaaab42bff6: mov %r10w,0x2a(%rcx)
0x00002aaaab42bffb: mov %bx,0x2c(%rcx)
0x00002aaaab42bfff: mov %si,0x2e(%rcx)
0x00002aaaab42c003: test %r9d,%r9d
0x00002aaaab42c006: jl 0x00002aaaab42c9c5
;; B7: # B49 B8 <- B6 Freq: 0.999999
0x00002aaaab42c00c: movslq %edi,%rbp
0x00002aaaab42c00f: shl %rbp
0x00002aaaab42c012: cmp $0x80000,%r9d
0x00002aaaab42c019: ja 0x00002aaaab42c8b0
;; B8: # B49 B9 <- B7 Freq: 0.999998
0x00002aaaab42c01f: mov 0x70(%r15),%r10
0x00002aaaab42c023: mov %rbp,%rbx
0x00002aaaab42c026: add $0x43,%rbx
0x00002aaaab42c02a: and $0xfffffffffffffff8,%rbx
0x00002aaaab42c02e: mov %r10,%rdi
0x00002aaaab42c031: add %rbx,%rdi
0x00002aaaab42c034: cmp 0x80(%r15),%rdi
0x00002aaaab42c03b: jae 0x00002aaaab42c8b0
;; B9: # B10 <- B8 Freq: 0.999898
0x00002aaaab42c041: mov %rdi,0x70(%r15)
0x00002aaaab42c045: prefetchnta 0xc0(%rdi)
0x00002aaaab42c04c: movq $0x1,(%r10)
0x00002aaaab42c053: prefetchnta 0x100(%rdi)
0x00002aaaab42c05a: movl $0xc08000bf,0x8(%r10) ; {oop({type array char})}
0x00002aaaab42c062: mov %r9d,0xc(%r10)
0x00002aaaab42c066: prefetchnta 0x140(%rdi)
0x00002aaaab42c06d: prefetchnta 0x180(%rdi)
0x00002aaaab42c074: mov %rcx,0x8(%rsp)
0x00002aaaab42c079: mov %r11d,0x10(%rsp)
0x00002aaaab42c07e: mov %r8d,0x14(%rsp)
0x00002aaaab42c083: mov %r9d,0x18(%rsp)
;; B10: # B47 B11 <- B50 B9 Freq: 0.999999
0x00002aaaab42c088: mov %r10,%rsi
0x00002aaaab42c08b: add $0x10,%rsi
0x00002aaaab42c08f: mov %r10,0x20(%rsp)
0x00002aaaab42c094: mov $0x30,%r13d
0x00002aaaab42c09a: mov $0x15,%edx
0x00002aaaab42c09f: mov $0x75866c628,%rdi ; {oop([C)}
0x00002aaaab42c0a9: add $0x10,%rdi
0x00002aaaab42c0ad: mov $0x2aaaab40c960,%r10
0x00002aaaab42c0b7: callq *%r10
0x00002aaaab42c0ba: mov 0x20(%rsp),%r10
0x00002aaaab42c0bf: mov %r13w,0x3a(%r10,%rbp,1)
0x00002aaaab42c0c5: mov 0x70(%r15),%rdx
0x00002aaaab42c0c9: mov %rdx,%r10
0x00002aaaab42c0cc: add $0x20,%r10
0x00002aaaab42c0d0: cmp 0x80(%r15),%r10
0x00002aaaab42c0d7: jae 0x00002aaaab42c894
;; B11: # B12 <- B10 Freq: 0.999899
0x00002aaaab42c0dd: mov %r10,0x70(%r15)
0x00002aaaab42c0e1: prefetchnta 0xc0(%r10)
0x00002aaaab42c0e9: mov $0xc080165d,%r10d ; {oop('java/lang/String')}
0x00002aaaab42c0ef: mov 0xb0(%r12,%r10,8),%r10
0x00002aaaab42c0f7: mov %r10,(%rdx)
0x00002aaaab42c0fa: movl $0xc080165d,0x8(%rdx) ; {oop('java/lang/String')}
0x00002aaaab42c101: mov %r12d,0xc(%rdx)
0x00002aaaab42c105: mov %r12,0x10(%rdx)
0x00002aaaab42c109: mov %r12,0x18(%rdx)
;; B12: # B59 B13 <- B48 B11 Freq: 0.999999
0x00002aaaab42c10d: mov 0x18(%rsp),%r11d
0x00002aaaab42c112: mov %r11d,0x14(%rdx)
0x00002aaaab42c116: mov 0x20(%rsp),%r10
0x00002aaaab42c11b: push %r10
0x00002aaaab42c11d: mov $0x2b7541d6d950,%r10 ; {external_word}
0x00002aaaab42c127: cmp (%r10),%r12
0x00002aaaab42c12a: je 0x00002aaaab42c1af
0x00002aaaab42c130: mov %rsp,-0x28(%rsp)
0x00002aaaab42c135: sub $0x80,%rsp
0x00002aaaab42c13c: mov %rax,0x78(%rsp)
0x00002aaaab42c141: mov %rcx,0x70(%rsp)
0x00002aaaab42c146: mov %rdx,0x68(%rsp)
0x00002aaaab42c14b: mov %rbx,0x60(%rsp)
0x00002aaaab42c150: mov %rbp,0x50(%rsp)
0x00002aaaab42c155: mov %rsi,0x48(%rsp)
0x00002aaaab42c15a: mov %rdi,0x40(%rsp)
0x00002aaaab42c15f: mov %r8,0x38(%rsp)
0x00002aaaab42c164: mov %r9,0x30(%rsp)
0x00002aaaab42c169: mov %r10,0x28(%rsp)
0x00002aaaab42c16e: mov %r11,0x20(%rsp)
0x00002aaaab42c173: mov %r12,0x18(%rsp)
0x00002aaaab42c178: mov %r13,0x10(%rsp)
0x00002aaaab42c17d: mov %r14,0x8(%rsp)
0x00002aaaab42c182: mov %r15,(%rsp)
0x00002aaaab42c186: mov $0x2b754183d868,%rdi ; {external_word}
0x00002aaaab42c190: mov $0x2aaaab42c130,%rsi ; {internal_word}
0x00002aaaab42c19a: mov %rsp,%rdx
0x00002aaaab42c19d: and $0xfffffffffffffff0,%rsp
0x00002aaaab42c1a1: mov $0x2b7540d56110,%r10 ; {runtime_call}
0x00002aaaab42c1ab: callq *%r10
0x00002aaaab42c1ae: hlt
0x00002aaaab42c1af: pop %r10
0x00002aaaab42c1b1: test %r10,%r10
0x00002aaaab42c1b4: jne 0x00002aaaab42c239
0x00002aaaab42c1ba: mov %rsp,-0x28(%rsp)
0x00002aaaab42c1bf: sub $0x80,%rsp
0x00002aaaab42c1c6: mov %rax,0x78(%rsp)
0x00002aaaab42c1cb: mov %rcx,0x70(%rsp)
0x00002aaaab42c1d0: mov %rdx,0x68(%rsp)
0x00002aaaab42c1d5: mov %rbx,0x60(%rsp)
0x00002aaaab42c1da: mov %rbp,0x50(%rsp)
0x00002aaaab42c1df: mov %rsi,0x48(%rsp)
0x00002aaaab42c1e4: mov %rdi,0x40(%rsp)
0x00002aaaab42c1e9: mov %r8,0x38(%rsp)
0x00002aaaab42c1ee: mov %r9,0x30(%rsp)
0x00002aaaab42c1f3: mov %r10,0x28(%rsp)
0x00002aaaab42c1f8: mov %r11,0x20(%rsp)
0x00002aaaab42c1fd: mov %r12,0x18(%rsp)
0x00002aaaab42c202: mov %r13,0x10(%rsp)
0x00002aaaab42c207: mov %r14,0x8(%rsp)
0x00002aaaab42c20c: mov %r15,(%rsp)
0x00002aaaab42c210: mov $0x2b754183d8a8,%rdi ; {external_word}
0x00002aaaab42c21a: mov $0x2aaaab42c1ba,%rsi ; {internal_word}
0x00002aaaab42c224: mov %rsp,%rdx
0x00002aaaab42c227: and $0xfffffffffffffff0,%rsp
0x00002aaaab42c22b: mov $0x2b7540d56110,%r10 ; {runtime_call}
0x00002aaaab42c235: callq *%r10
0x00002aaaab42c238: hlt
0x00002aaaab42c239: shr $0x3,%r10
0x00002aaaab42c23d: mov %r10d,0xc(%rdx)
0x00002aaaab42c241: mov 0x1c(%rsp),%r11d
0x00002aaaab42c246: test %r11d,%r11d
0x00002aaaab42c249: je 0x00002aaaab42c958 ;*invokevirtual println
; - Main::foo@140 (line 24)
;; B13: # B75 B14 <- B12 Freq: 0.999998
0x00002aaaab42c24f: lea (%r12,%r11,8),%rsi
0x00002aaaab42c253: callq 0x00002aaaab401de0 ; OopMap{[0]=Derived_oop_[8] [8]=Oop off=888}
;*invokevirtual println
; - Main::foo@140 (line 24)
; {optimized virtual_call}
;; B14: # B16 <- B13 Freq: 0.999978
0x00002aaaab42c258: xor %r8d,%r8d
0x00002aaaab42c25b: mov $0x1,%r10d
0x00002aaaab42c261: jmp 0x00002aaaab42c26f
;; B15: # B16 <- B16 top-of-loop Freq: 986872
0x00002aaaab42c263: mov %r10d,%r11d
0x00002aaaab42c266: inc %r11d
0x00002aaaab42c269: mov %r10d,%r8d
0x00002aaaab42c26c: mov %r11d,%r10d
;; B16: # B15 B17 <- B14 B15 Loop: B16-B15 inner Freq: 986873
0x00002aaaab42c26f: mov $0x758628a38,%r11 ; {oop([I)}
0x00002aaaab42c279: mov 0x10(%r11,%r8,4),%r11d
0x00002aaaab42c27e: cmp $0x10,%r11d
0x00002aaaab42c282: jl 0x00002aaaab42c263
;; B17: # B64 B18 <- B16 Freq: 0.999978
0x00002aaaab42c284: mov $0x758600d08,%r11 ; {oop(a 'java/lang/Class' = 'java/lang/System')}
0x00002aaaab42c28e: mov 0x74(%r11),%r9d ;*getstatic out
; - Main::foo@143 (line 25)
0x00002aaaab42c292: mov %r9d,0x20(%rsp)
0x00002aaaab42c297: mov %r8d,%ebp
0x00002aaaab42c29a: add $0x12,%ebp
0x00002aaaab42c29d: test %ebp,%ebp
0x00002aaaab42c29f: jl 0x00002aaaab42c9e1
;; B18: # B64 B19 <- B17 Freq: 0.999977
0x00002aaaab42c2a5: mov %r8d,%r11d
0x00002aaaab42c2a8: add $0x16,%r11d
0x00002aaaab42c2ac: test %r11d,%r11d
0x00002aaaab42c2af: jl 0x00002aaaab42c9e1
;; B19: # B21 <- B18 Freq: 0.999976
0x00002aaaab42c2b5: xor %r11d,%r11d
0x00002aaaab42c2b8: jmp 0x00002aaaab42c2c3
0x00002aaaab42c2ba: nop
0x00002aaaab42c2bb: nop
0x00002aaaab42c2bc: nop
0x00002aaaab42c2bd: nop
0x00002aaaab42c2be: nop
0x00002aaaab42c2bf: nop
;; B20: # B21 <- B21 top-of-loop Freq: 986870
0x00002aaaab42c2c0: inc %r11d
;; B21: # B20 B22 <- B19 B20 Loop: B21-B20 inner Freq: 986871
0x00002aaaab42c2c3: mov $0x758628a38,%r9 ; {oop([I)}
0x00002aaaab42c2cd: mov 0x10(%r9,%r11,4),%ecx
0x00002aaaab42c2d2: cmp $0x20,%ecx
0x00002aaaab42c2d5: jl 0x00002aaaab42c2c0
;; B22: # B64 B23 <- B21 Freq: 0.999976
0x00002aaaab42c2d7: add %r11d,%r8d
0x00002aaaab42c2da: mov %r8d,%r11d
0x00002aaaab42c2dd: add $0x17,%r11d
0x00002aaaab42c2e1: test %r11d,%r11d
0x00002aaaab42c2e4: jl 0x00002aaaab42c9e1
;; B23: # B53 B24 <- B22 Freq: 0.999975
0x00002aaaab42c2ea: cmp $0x80000,%r11d
0x00002aaaab42c2f1: ja 0x00002aaaab42c8ff
;; B24: # B53 B25 <- B23 Freq: 0.999974
0x00002aaaab42c2f7: mov 0x70(%r15),%r13
0x00002aaaab42c2fb: inc %r8d
0x00002aaaab42c2fe: movslq %r8d,%r8
0x00002aaaab42c301: shl %r8
0x00002aaaab42c304: add $0x43,%r8
0x00002aaaab42c308: and $0xfffffffffffffff8,%r8
0x00002aaaab42c30c: mov %r13,%r9
0x00002aaaab42c30f: add %r8,%r9
0x00002aaaab42c312: cmp 0x80(%r15),%r9
0x00002aaaab42c319: jae 0x00002aaaab42c8ff
;; B25: # B26 <- B24 Freq: 0.999874
0x00002aaaab42c31f: mov %r9,0x70(%r15)
0x00002aaaab42c323: prefetchnta 0xc0(%r9)
0x00002aaaab42c32b: movq $0x1,0x0(%r13)
0x00002aaaab42c333: prefetchnta 0x100(%r9)
0x00002aaaab42c33b: movl $0xc08000bf,0x8(%r13) ; {oop({type array char})}
0x00002aaaab42c343: mov %r11d,0xc(%r13)
0x00002aaaab42c347: prefetchnta 0x140(%r9)
0x00002aaaab42c34f: prefetchnta 0x180(%r9)
0x00002aaaab42c357: mov %r10d,0x18(%rsp)
0x00002aaaab42c35c: mov %r11d,0x1c(%rsp)
;; B26: # B28 <- B54 B25 Freq: 0.999975
0x00002aaaab42c361: mov %r13,%rsi
0x00002aaaab42c364: add $0x10,%rsi
0x00002aaaab42c368: mov $0x11,%edx
0x00002aaaab42c36d: mov $0x75866c688,%rdi ; {oop([C)}
0x00002aaaab42c377: add $0x10,%rdi
0x00002aaaab42c37b: mov $0x2aaaab40c960,%r10
0x00002aaaab42c385: callq *%r10
0x00002aaaab42c388: xor %r11d,%r11d
0x00002aaaab42c38b: jmp 0x00002aaaab42c39e
0x00002aaaab42c38d: nop
0x00002aaaab42c38e: nop
0x00002aaaab42c38f: nop
;; B27: # B28 <- B28 top-of-loop Freq: 8.99977
0x00002aaaab42c390: mov %r9d,%r11d
0x00002aaaab42c393: sar $0x1f,%r11d
0x00002aaaab42c397: dec %ebp
0x00002aaaab42c399: mov %r9d,0x10(%rsp)
;; B28: # B27 B29 <- B26 B27 Loop: B28-B27 inner Freq: 9.99975
0x00002aaaab42c39e: movslq 0x10(%rsp),%r10
0x00002aaaab42c3a3: imul $0x66666667,%r10,%r10
0x00002aaaab42c3aa: sar $0x22,%r10
0x00002aaaab42c3ae: mov %r10d,%r10d
0x00002aaaab42c3b1: mov %r10d,%r9d
0x00002aaaab42c3b4: sub %r11d,%r9d
0x00002aaaab42c3b7: mov %r9d,%r8d
0x00002aaaab42c3ba: shl $0x3,%r8d
0x00002aaaab42c3be: mov %r9d,%ebx
0x00002aaaab42c3c1: shl %ebx
0x00002aaaab42c3c3: add %r8d,%ebx
0x00002aaaab42c3c6: mov 0x10(%rsp),%r8d
0x00002aaaab42c3cb: sub %ebx,%r8d
0x00002aaaab42c3ce: add $0x30,%r8d
0x00002aaaab42c3d2: mov %r8w,0xe(%r13,%rbp,2)
0x00002aaaab42c3d8: cmp %r11d,%r10d
0x00002aaaab42c3db: jne 0x00002aaaab42c390
;; B29: # B31 <- B28 Freq: 0.999975
0x00002aaaab42c3dd: movslq 0x18(%rsp),%r8
0x00002aaaab42c3e2: mov $0x20,%ebx
0x00002aaaab42c3e7: mov %bx,0x32(%r13,%r8,2)
0x00002aaaab42c3ed: mov $0x3e,%r10d
0x00002aaaab42c3f3: mov $0x3c,%r11d
0x00002aaaab42c3f9: mov %r11w,0x34(%r13,%r8,2)
0x00002aaaab42c3ff: mov %r10w,0x36(%r13,%r8,2)
0x00002aaaab42c405: mov %bx,0x38(%r13,%r8,2)
0x00002aaaab42c40b: mov 0x1c(%rsp),%r10d
0x00002aaaab42c410: jmp 0x00002aaaab42c424
;; B30: # B31 <- B31 top-of-loop Freq: 8.99977
0x00002aaaab42c412: mov %r11d,%r9d
0x00002aaaab42c415: sar $0x1f,%r9d
0x00002aaaab42c419: dec %r10d
0x00002aaaab42c41c: mov %r11d,%ebx
0x00002aaaab42c41f: mov %r9d,0x14(%rsp)
;; B31: # B30 B32 <- B29 B30 Loop: B31-B30 inner Freq: 9.99975
0x00002aaaab42c424: movslq %ebx,%r11
0x00002aaaab42c427: imul $0x66666667,%r11,%r11
0x00002aaaab42c42e: sar $0x22,%r11
0x00002aaaab42c432: mov %r11d,%r8d
0x00002aaaab42c435: mov %r8d,%r11d
0x00002aaaab42c438: sub 0x14(%rsp),%r11d
0x00002aaaab42c43d: mov %r11d,%ecx
0x00002aaaab42c440: shl $0x3,%ecx
0x00002aaaab42c443: mov %r11d,%r9d
0x00002aaaab42c446: shl %r9d
0x00002aaaab42c449: add %ecx,%r9d
0x00002aaaab42c44c: sub %r9d,%ebx
0x00002aaaab42c44f: add $0x30,%ebx
0x00002aaaab42c452: mov %bx,0xe(%r13,%r10,2)
0x00002aaaab42c458: cmp 0x14(%rsp),%r8d
0x00002aaaab42c45d: jne 0x00002aaaab42c412
;; B32: # B51 B33 <- B31 Freq: 0.999975
0x00002aaaab42c45f: mov 0x70(%r15),%rdx
0x00002aaaab42c463: mov %rdx,%r10
0x00002aaaab42c466: add $0x20,%r10
0x00002aaaab42c46a: cmp 0x80(%r15),%r10
0x00002aaaab42c471: jae 0x00002aaaab42c8e0
;; B33: # B34 <- B32 Freq: 0.999875
0x00002aaaab42c477: mov %r10,0x70(%r15)
0x00002aaaab42c47b: prefetchnta 0xc0(%r10)
0x00002aaaab42c483: mov $0xc080165d,%r10d ; {oop('java/lang/String')}
0x00002aaaab42c489: mov 0xb0(%r12,%r10,8),%r10
0x00002aaaab42c491: mov %r10,(%rdx)
0x00002aaaab42c494: movl $0xc080165d,0x8(%rdx) ; {oop('java/lang/String')}
0x00002aaaab42c49b: mov %r12d,0xc(%rdx)
0x00002aaaab42c49f: mov %r12,0x10(%rdx)
0x00002aaaab42c4a3: mov %r12,0x18(%rdx)
;; B34: # B60 B35 <- B52 B33 Freq: 0.999975
0x00002aaaab42c4a7: mov 0x1c(%rsp),%r11d
0x00002aaaab42c4ac: mov %r11d,0x14(%rdx)
0x00002aaaab42c4b0: push %r10
0x00002aaaab42c4b2: mov $0x2b7541d6d950,%r10 ; {external_word}
0x00002aaaab42c4bc: cmp (%r10),%r12
0x00002aaaab42c4bf: je 0x00002aaaab42c544
0x00002aaaab42c4c5: mov %rsp,-0x28(%rsp)
0x00002aaaab42c4ca: sub $0x80,%rsp
0x00002aaaab42c4d1: mov %rax,0x78(%rsp)
0x00002aaaab42c4d6: mov %rcx,0x70(%rsp)
0x00002aaaab42c4db: mov %rdx,0x68(%rsp)
0x00002aaaab42c4e0: mov %rbx,0x60(%rsp)
0x00002aaaab42c4e5: mov %rbp,0x50(%rsp)
0x00002aaaab42c4ea: mov %rsi,0x48(%rsp)
0x00002aaaab42c4ef: mov %rdi,0x40(%rsp)
0x00002aaaab42c4f4: mov %r8,0x38(%rsp)
0x00002aaaab42c4f9: mov %r9,0x30(%rsp)
0x00002aaaab42c4fe: mov %r10,0x28(%rsp)
0x00002aaaab42c503: mov %r11,0x20(%rsp)
0x00002aaaab42c508: mov %r12,0x18(%rsp)
0x00002aaaab42c50d: mov %r13,0x10(%rsp)
0x00002aaaab42c512: mov %r14,0x8(%rsp)
0x00002aaaab42c517: mov %r15,(%rsp)
0x00002aaaab42c51b: mov $0x2b754183d868,%rdi ; {external_word}
0x00002aaaab42c525: mov $0x2aaaab42c4c5,%rsi ; {internal_word}
0x00002aaaab42c52f: mov %rsp,%rdx
0x00002aaaab42c532: and $0xfffffffffffffff0,%rsp
0x00002aaaab42c536: mov $0x2b7540d56110,%r10 ; {runtime_call}
0x00002aaaab42c540: callq *%r10
0x00002aaaab42c543: hlt
0x00002aaaab42c544: pop %r10
0x00002aaaab42c546: test %r13,%r13
0x00002aaaab42c549: jne 0x00002aaaab42c5ce
0x00002aaaab42c54f: mov %rsp,-0x28(%rsp)
0x00002aaaab42c554: sub $0x80,%rsp
0x00002aaaab42c55b: mov %rax,0x78(%rsp)
0x00002aaaab42c560: mov %rcx,0x70(%rsp)
0x00002aaaab42c565: mov %rdx,0x68(%rsp)
0x00002aaaab42c56a: mov %rbx,0x60(%rsp)
0x00002aaaab42c56f: mov %rbp,0x50(%rsp)
0x00002aaaab42c574: mov %rsi,0x48(%rsp)
0x00002aaaab42c579: mov %rdi,0x40(%rsp)
0x00002aaaab42c57e: mov %r8,0x38(%rsp)
0x00002aaaab42c583: mov %r9,0x30(%rsp)
0x00002aaaab42c588: mov %r10,0x28(%rsp)
0x00002aaaab42c58d: mov %r11,0x20(%rsp)
0x00002aaaab42c592: mov %r12,0x18(%rsp)
0x00002aaaab42c597: mov %r13,0x10(%rsp)
0x00002aaaab42c59c: mov %r14,0x8(%rsp)
0x00002aaaab42c5a1: mov %r15,(%rsp)
0x00002aaaab42c5a5: mov $0x2b754183d8a8,%rdi ; {external_word}
0x00002aaaab42c5af: mov $0x2aaaab42c54f,%rsi ; {internal_word}
0x00002aaaab42c5b9: mov %rsp,%rdx
0x00002aaaab42c5bc: and $0xfffffffffffffff0,%rsp
0x00002aaaab42c5c0: mov $0x2b7540d56110,%r10 ; {runtime_call}
0x00002aaaab42c5ca: callq *%r10
0x00002aaaab42c5cd: hlt
0x00002aaaab42c5ce: mov %r13,%r10
0x00002aaaab42c5d1: shr $0x3,%r10
0x00002aaaab42c5d5: mov %r10d,0xc(%rdx)
0x00002aaaab42c5d9: mov 0x20(%rsp),%r10d
0x00002aaaab42c5de: test %r10d,%r10d
0x00002aaaab42c5e1: je 0x00002aaaab42c975 ;*invokevirtual println
; - Main::foo@177 (line 25)
;; B35: # B76 B36 <- B34 Freq: 0.999974
0x00002aaaab42c5e7: lea (%r12,%r10,8),%rsi
0x00002aaaab42c5eb: callq 0x00002aaaab401de0 ; OopMap{[0]=Derived_oop_[8] [8]=Oop off=1808}
;*invokevirtual println
; - Main::foo@177 (line 25)
; {optimized virtual_call}
;; B36: # B61 B37 <- B35 Freq: 0.999954
0x00002aaaab42c5f0: mov $0x758600d08,%r10 ; {oop(a 'java/lang/Class' = 'java/lang/System')}
0x00002aaaab42c5fa: mov 0x74(%r10),%r10d ;*getstatic out
; - Main::foo@180 (line 26)
0x00002aaaab42c5fe: test %r10d,%r10d
0x00002aaaab42c601: je 0x00002aaaab42c991 ;*invokevirtual println
; - Main::foo@185 (line 26)
;; B37: # B77 B38 <- B36 Freq: 0.999953
0x00002aaaab42c607: lea (%r12,%r10,8),%rsi ;*getstatic out
; - Main::foo@180 (line 26)
0x00002aaaab42c60b: mov $0x75866c6f8,%rdx ; {oop("Expected: "testtesttesttesttesttesttesttest"")}
0x00002aaaab42c615: nop
0x00002aaaab42c616: nop
0x00002aaaab42c617: callq 0x00002aaaab401de0 ; OopMap{[0]=Derived_oop_[8] [8]=Oop off=1852}
;*invokevirtual println
; - Main::foo@185 (line 26)
; {optimized virtual_call}
;; B38: # B55 B39 <- B37 Freq: 0.999933
0x00002aaaab42c61c: mov 0x70(%r15),%r11
0x00002aaaab42c620: mov $0x758600d08,%r10 ; {oop(a 'java/lang/Class' = 'java/lang/System')}
0x00002aaaab42c62a: mov 0x74(%r10),%ebp ;*getstatic out
; - Main::foo@188 (line 28)
0x00002aaaab42c62e: mov %r11,%r10
0x00002aaaab42c631: add $0x48,%r10
0x00002aaaab42c635: cmp 0x80(%r15),%r10
0x00002aaaab42c63c: jae 0x00002aaaab42c924
;; B39: # B40 <- B38 Freq: 0.999833
0x00002aaaab42c642: mov %r10,0x70(%r15)
0x00002aaaab42c646: prefetchnta 0xc0(%r10)
0x00002aaaab42c64e: movq $0x1,(%r11)
0x00002aaaab42c655: prefetchnta 0x100(%r10)
0x00002aaaab42c65d: movl $0xc08000bf,0x8(%r11) ; {oop({type array char})}
0x00002aaaab42c665: prefetchnta 0x140(%r10)
0x00002aaaab42c66d: movl $0x1c,0xc(%r11)
0x00002aaaab42c675: prefetchnta 0x180(%r10)
;; B40: # B57 B41 <- B56 B39 Freq: 0.999933
0x00002aaaab42c67d: mov %r11,%r13
0x00002aaaab42c680: add $0x26,%r13
0x00002aaaab42c684: mov %r11,%rsi
0x00002aaaab42c687: add $0x10,%rsi
0x00002aaaab42c68b: mov %r11,0x10(%rsp)
0x00002aaaab42c690: mov $0x22,%ebx
0x00002aaaab42c695: mov $0x75866c7a0,%rdi ; {oop([C)}
0x00002aaaab42c69f: add $0x10,%rdi
0x00002aaaab42c6a3: mov $0xb,%edx
0x00002aaaab42c6a8: mov $0x2aaaab40c960,%r10
0x00002aaaab42c6b2: callq *%r10
0x00002aaaab42c6b5: mov (%rsp),%rdi
0x00002aaaab42c6b9: mov %r13,%rsi
0x00002aaaab42c6bc: mov $0x10,%edx
0x00002aaaab42c6c1: mov $0x2aaaab40c960,%r10
0x00002aaaab42c6cb: callq *%r10
0x00002aaaab42c6ce: mov 0x10(%rsp),%r10
0x00002aaaab42c6d3: mov %bx,0x46(%r10)
0x00002aaaab42c6d8: mov 0x70(%r15),%rdx
0x00002aaaab42c6dc: mov %rdx,%r10
0x00002aaaab42c6df: add $0x20,%r10
0x00002aaaab42c6e3: cmp 0x80(%r15),%r10
0x00002aaaab42c6ea: jae 0x00002aaaab42c940
;; B41: # B42 <- B40 Freq: 0.999833
0x00002aaaab42c6f0: mov %r10,0x70(%r15)
0x00002aaaab42c6f4: prefetchnta 0xc0(%r10)
0x00002aaaab42c6fc: mov $0xc080165d,%r11d ; {oop('java/lang/String')}
0x00002aaaab42c702: mov 0xb0(%r12,%r11,8),%r10
0x00002aaaab42c70a: mov %r10,(%rdx)
0x00002aaaab42c70d: movl $0xc080165d,0x8(%rdx) ; {oop('java/lang/String')}
0x00002aaaab42c714: mov %r12d,0xc(%rdx)
0x00002aaaab42c718: mov %r12,0x18(%rdx)
;; B42: # B62 B43 <- B58 B41 Freq: 0.999933
0x00002aaaab42c71c: mov 0x10(%rsp),%r10
0x00002aaaab42c721: push %r10
0x00002aaaab42c723: mov $0x2b7541d6d950,%r10 ; {external_word}
0x00002aaaab42c72d: cmp (%r10),%r12
0x00002aaaab42c730: je 0x00002aaaab42c7b5
0x00002aaaab42c736: mov %rsp,-0x28(%rsp)
0x00002aaaab42c73b: sub $0x80,%rsp
0x00002aaaab42c742: mov %rax,0x78(%rsp)
0x00002aaaab42c747: mov %rcx,0x70(%rsp)
0x00002aaaab42c74c: mov %rdx,0x68(%rsp)
0x00002aaaab42c751: mov %rbx,0x60(%rsp)
0x00002aaaab42c756: mov %rbp,0x50(%rsp)
0x00002aaaab42c75b: mov %rsi,0x48(%rsp)
0x00002aaaab42c760: mov %rdi,0x40(%rsp)
0x00002aaaab42c765: mov %r8,0x38(%rsp)
0x00002aaaab42c76a: mov %r9,0x30(%rsp)
0x00002aaaab42c76f: mov %r10,0x28(%rsp)
0x00002aaaab42c774: mov %r11,0x20(%rsp)
0x00002aaaab42c779: mov %r12,0x18(%rsp)
0x00002aaaab42c77e: mov %r13,0x10(%rsp)
0x00002aaaab42c783: mov %r14,0x8(%rsp)
0x00002aaaab42c788: mov %r15,(%rsp)
0x00002aaaab42c78c: mov $0x2b754183d868,%rdi ; {external_word}
0x00002aaaab42c796: mov $0x2aaaab42c736,%rsi ; {internal_word}
0x00002aaaab42c7a0: mov %rsp,%rdx
0x00002aaaab42c7a3: and $0xfffffffffffffff0,%rsp
0x00002aaaab42c7a7: mov $0x2b7540d56110,%r10 ; {runtime_call}
0x00002aaaab42c7b1: callq *%r10
0x00002aaaab42c7b4: hlt
0x00002aaaab42c7b5: pop %r10
0x00002aaaab42c7b7: test %r10,%r10
0x00002aaaab42c7ba: jne 0x00002aaaab42c83f
0x00002aaaab42c7c0: mov %rsp,-0x28(%rsp)
0x00002aaaab42c7c5: sub $0x80,%rsp
0x00002aaaab42c7cc: mov %rax,0x78(%rsp)
0x00002aaaab42c7d1: mov %rcx,0x70(%rsp)
0x00002aaaab42c7d6: mov %rdx,0x68(%rsp)
0x00002aaaab42c7db: mov %rbx,0x60(%rsp)
0x00002aaaab42c7e0: mov %rbp,0x50(%rsp)
0x00002aaaab42c7e5: mov %rsi,0x48(%rsp)
0x00002aaaab42c7ea: mov %rdi,0x40(%rsp)
0x00002aaaab42c7ef: mov %r8,0x38(%rsp)
0x00002aaaab42c7f4: mov %r9,0x30(%rsp)
0x00002aaaab42c7f9: mov %r10,0x28(%rsp)
0x00002aaaab42c7fe: mov %r11,0x20(%rsp)
0x00002aaaab42c803: mov %r12,0x18(%rsp)
0x00002aaaab42c808: mov %r13,0x10(%rsp)
0x00002aaaab42c80d: mov %r14,0x8(%rsp)
0x00002aaaab42c812: mov %r15,(%rsp)
0x00002aaaab42c816: mov $0x2b754183d8a8,%rdi ; {external_word}
0x00002aaaab42c820: mov $0x2aaaab42c7c0,%rsi ; {internal_word}
0x00002aaaab42c82a: mov %rsp,%rdx
0x00002aaaab42c82d: and $0xfffffffffffffff0,%rsp
0x00002aaaab42c831: mov $0x2b7540d56110,%r10 ; {runtime_call}
0x00002aaaab42c83b: callq *%r10
0x00002aaaab42c83e: hlt
0x00002aaaab42c83f: mov %r10,%r11
0x00002aaaab42c842: shr $0x3,%r11
0x00002aaaab42c846: mov $0x1c00000000,%r10
0x00002aaaab42c850: mov %r10,0x10(%rdx)
0x00002aaaab42c854: mov %r11d,0xc(%rdx)
0x00002aaaab42c858: test %ebp,%ebp
0x00002aaaab42c85a: je 0x00002aaaab42c9a9 ;*invokevirtual println
; - Main::foo@215 (line 28)
;; B43: # B78 B44 <- B42 Freq: 0.999932
0x00002aaaab42c860: lea (%r12,%rbp,8),%rsi ;*getstatic out
; - Main::foo@188 (line 28)
0x00002aaaab42c864: nop
0x00002aaaab42c865: nop
0x00002aaaab42c866: nop
0x00002aaaab42c867: callq 0x00002aaaab401de0 ; OopMap{off=2444}
;*invokevirtual println
; - Main::foo@215 (line 28)
; {optimized virtual_call}
;; B44: # N1 <- B43 Freq: 0.999912
0x00002aaaab42c86c: add $0x40,%rsp
0x00002aaaab42c870: pop %rbp
0x00002aaaab42c871: test %eax,-0x532877(%rip) # 0x00002aaaaaefa000
; {poll_return}
0x00002aaaab42c877: retq
;; B45: # B65 B46 <- B1 Freq: 0.000100017
0x00002aaaab42c878: mov $0x6040005f8,%rsi ; {oop({type array char})}
0x00002aaaab42c882: mov $0x10,%edx
0x00002aaaab42c887: callq 0x00002aaaab401660 ; OopMap{off=2476}
;*new ; - Main::foo@41 (line 14)
; {runtime_call}
;; B46: # B3 <- B45 Freq: 0.000100015
0x00002aaaab42c88c: mov %rax,%rbx
0x00002aaaab42c88f: jmpq 0x00002aaaab42bf3d
;; B47: # B73 B48 <- B10 Freq: 0.000100016
0x00002aaaab42c894: mov $0x60400b2e8,%rsi ; {oop('java/lang/String')}
0x00002aaaab42c89e: mov 0x1c(%rsp),%ebp
0x00002aaaab42c8a2: nop
0x00002aaaab42c8a3: callq 0x00002aaaab338ee0 ; OopMap{rbp=NarrowOop [0]=Derived_oop_[8] [8]=Oop [28]=NarrowOop [32]=Oop off=2504}
;*new ; - Main::foo@121 (line 24)
; {runtime_call}
;; B48: # B12 <- B47 Freq: 0.000100014
0x00002aaaab42c8a8: mov %rax,%rdx
0x00002aaaab42c8ab: jmpq 0x00002aaaab42c10d
;; B49: # B72 B50 <- B7 B8 Freq: 0.00010103
0x00002aaaab42c8b0: mov %r9d,0x18(%rsp)
0x00002aaaab42c8b5: mov %r8d,0x14(%rsp)
0x00002aaaab42c8ba: mov %r11d,0x10(%rsp)
0x00002aaaab42c8bf: mov %rcx,0x8(%rsp)
0x00002aaaab42c8c4: mov $0x6040005f8,%rsi ; {oop({type array char})}
0x00002aaaab42c8ce: mov %r9d,%edx
0x00002aaaab42c8d1: nop
0x00002aaaab42c8d2: nop
0x00002aaaab42c8d3: callq 0x00002aaaab401660 ; OopMap{[0]=Derived_oop_[8] [8]=Oop [28]=NarrowOop off=2552}
;*new ; - Main::foo@121 (line 24)
; {runtime_call}
;; B50: # B10 <- B49 Freq: 0.000101028
0x00002aaaab42c8d8: mov %rax,%r10
0x00002aaaab42c8db: jmpq 0x00002aaaab42c088
;; B51: # B70 B52 <- B32 Freq: 0.000100014
0x00002aaaab42c8e0: mov %r13,%rbp
0x00002aaaab42c8e3: mov $0x60400b2e8,%rsi ; {oop('java/lang/String')}
0x00002aaaab42c8ed: nop
0x00002aaaab42c8ee: nop
0x00002aaaab42c8ef: callq 0x00002aaaab338ee0 ; OopMap{rbp=Oop [0]=Derived_oop_[8] [8]=Oop [32]=NarrowOop off=2580}
;*new ; - Main::foo@146 (line 25)
; {runtime_call}
;; B52: # B34 <- B51 Freq: 0.000100012
0x00002aaaab42c8f4: mov %rbp,%r13
0x00002aaaab42c8f7: mov %rax,%rdx
0x00002aaaab42c8fa: jmpq 0x00002aaaab42c4a7
;; B53: # B69 B54 <- B23 B24 Freq: 0.000101027
0x00002aaaab42c8ff: mov %r11d,0x1c(%rsp)
0x00002aaaab42c904: mov %r10d,0x18(%rsp)
0x00002aaaab42c909: mov $0x6040005f8,%rsi ; {oop({type array char})}
0x00002aaaab42c913: mov %r11d,%edx
0x00002aaaab42c916: nop
0x00002aaaab42c917: callq 0x00002aaaab401660 ; OopMap{[0]=Derived_oop_[8] [8]=Oop [32]=NarrowOop off=2620}
;*new ; - Main::foo@146 (line 25)
; {runtime_call}
;; B54: # B26 <- B53 Freq: 0.000101025
0x00002aaaab42c91c: mov %rax,%r13
0x00002aaaab42c91f: jmpq 0x00002aaaab42c361
;; B55: # B67 B56 <- B38 Freq: 0.00010001
0x00002aaaab42c924: mov $0x6040005f8,%rsi ; {oop({type array char})}
0x00002aaaab42c92e: mov $0x1c,%edx
0x00002aaaab42c933: callq 0x00002aaaab401660 ; OopMap{rbp=NarrowOop [0]=Derived_oop_[8] [8]=Oop off=2648}
;*new ; - Main::foo@191 (line 28)
; {runtime_call}
;; B56: # B40 <- B55 Freq: 0.000100008
0x00002aaaab42c938: mov %rax,%r11
0x00002aaaab42c93b: jmpq 0x00002aaaab42c67d
;; B57: # B66 B58 <- B40 Freq: 0.00010001
0x00002aaaab42c940: mov $0x60400b2e8,%rsi ; {oop('java/lang/String')}
0x00002aaaab42c94a: nop
0x00002aaaab42c94b: callq 0x00002aaaab338ee0 ; OopMap{rbp=NarrowOop [8]=Oop [16]=Oop off=2672}
;*new ; - Main::foo@191 (line 28)
; {runtime_call}
;; B58: # B42 <- B57 Freq: 0.000100008
0x00002aaaab42c950: mov %rax,%rdx
0x00002aaaab42c953: jmpq 0x00002aaaab42c71c
;; B59: # N1 <- B12 Freq: 1.01328e-06
0x00002aaaab42c958: mov $0xfffffff6,%esi
0x00002aaaab42c95d: mov %rdx,%rbp
0x00002aaaab42c960: nop
0x00002aaaab42c961: nop
0x00002aaaab42c962: nop
0x00002aaaab42c963: callq 0x00002aaaab402b20 ; OopMap{rbp=Oop off=2696}
;*invokevirtual println
; - Main::foo@140 (line 24)
; {runtime_call}
0x00002aaaab42c968: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab42c972: callq *%r10 ;*invokevirtual println
; - Main::foo@140 (line 24)
;; B60: # N1 <- B34 Freq: 1.01325e-06
0x00002aaaab42c975: mov $0xfffffff6,%esi
0x00002aaaab42c97a: mov %rdx,%rbp
0x00002aaaab42c97d: nop
0x00002aaaab42c97e: nop
0x00002aaaab42c97f: callq 0x00002aaaab402b20 ; OopMap{rbp=Oop off=2724}
;*invokevirtual println
; - Main::foo@177 (line 25)
; {runtime_call}
0x00002aaaab42c984: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab42c98e: callq *%r10 ;*invokevirtual println
; - Main::foo@177 (line 25)
;; B61: # N1 <- B36 Freq: 1.01323e-06
0x00002aaaab42c991: mov $0xfffffff6,%esi
0x00002aaaab42c996: nop
0x00002aaaab42c997: callq 0x00002aaaab402b20 ; OopMap{off=2748}
;*invokevirtual println
; - Main::foo@185 (line 26)
; {runtime_call}
0x00002aaaab42c99c: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab42c9a6: callq *%r10 ;*invokevirtual println
; - Main::foo@185 (line 26)
;; B62: # N1 <- B42 Freq: 1.01321e-06
0x00002aaaab42c9a9: mov $0xfffffff6,%esi
0x00002aaaab42c9ae: mov %rdx,%rbp
0x00002aaaab42c9b1: nop
0x00002aaaab42c9b2: nop
0x00002aaaab42c9b3: callq 0x00002aaaab402b20 ; OopMap{rbp=Oop off=2776}
;*invokevirtual println
; - Main::foo@215 (line 28)
; {runtime_call}
0x00002aaaab42c9b8: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab42c9c2: callq *%r10 ;*invokevirtual println
; - Main::foo@215 (line 28)
;; B63: # N1 <- B6 Freq: 1e-06
0x00002aaaab42c9c5: mov $0xffffffcc,%esi
0x00002aaaab42c9ca: mov %rcx,%rbp
0x00002aaaab42c9cd: nop
0x00002aaaab42c9ce: nop
0x00002aaaab42c9cf: callq 0x00002aaaab402b20 ; OopMap{rbp=Oop [28]=NarrowOop off=2804}
;*new ; - Main::foo@121 (line 24)
; {runtime_call}
0x00002aaaab42c9d4: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab42c9de: callq *%r10
;; B64: # N1 <- B17 B18 B22 Freq: 2.99993e-06
0x00002aaaab42c9e1: mov $0xffffffcc,%esi
0x00002aaaab42c9e6: mov 0x20(%rsp),%ebp
0x00002aaaab42c9ea: nop
0x00002aaaab42c9eb: callq 0x00002aaaab402b20 ; OopMap{rbp=NarrowOop [8]=Oop off=2832}
;*new ; - Main::foo@146 (line 25)
; {runtime_call}
0x00002aaaab42c9f0: mov $0x2b75415a0f70,%r10 ; {runtime_call}
0x00002aaaab42c9fa: callq *%r10
;; B65: # B79 <- B45 Freq: 1.00017e-09
0x00002aaaab42c9fd: mov %rax,%rsi
0x00002aaaab42ca00: jmp 0x00002aaaab42ca29
;; B66: # B68 <- B57 Freq: 1.0001e-09
0x00002aaaab42ca02: jmp 0x00002aaaab42ca04
;; B67: # B68 <- B55 Freq: 1.0001e-09
;; B68: # B79 <- B67 B66 Freq: 2.0002e-09
0x00002aaaab42ca04: mov %rax,%rsi
0x00002aaaab42ca07: jmp 0x00002aaaab42ca29
;; B69: # B71 <- B53 Freq: 1.01027e-09
0x00002aaaab42ca09: jmp 0x00002aaaab42ca0b
;; B70: # B71 <- B51 Freq: 1.00014e-09
;; B71: # B79 <- B69 B70 Freq: 2.01041e-09
0x00002aaaab42ca0b: mov %rax,%rsi
0x00002aaaab42ca0e: jmp 0x00002aaaab42ca29
;; B72: # B74 <- B49 Freq: 1.0103e-09
0x00002aaaab42ca10: jmp 0x00002aaaab42ca12
;; B73: # B74 <- B47 Freq: 1.00016e-09
;; B74: # B79 <- B72 B73 Freq: 2.01046e-09
0x00002aaaab42ca12: mov %rax,%rsi
0x00002aaaab42ca15: jmp 0x00002aaaab42ca29 ;*invokevirtual println
; - Main::foo@140 (line 24)
;; B75: # B79 <- B13 Freq: 9.99998e-06
0x00002aaaab42ca17: mov %rax,%rsi
0x00002aaaab42ca1a: jmp 0x00002aaaab42ca29 ;*invokevirtual println
; - Main::foo@177 (line 25)
;; B76: # B79 <- B35 Freq: 9.99974e-06
0x00002aaaab42ca1c: mov %rax,%rsi
0x00002aaaab42ca1f: jmp 0x00002aaaab42ca29 ;*invokevirtual println
; - Main::foo@185 (line 26)
;; B77: # B79 <- B37 Freq: 9.99953e-06
0x00002aaaab42ca21: mov %rax,%rsi
0x00002aaaab42ca24: jmp 0x00002aaaab42ca29 ;*invokevirtual println
; - Main::foo@215 (line 28)
;; B78: # B79 <- B43 Freq: 9.99932e-06
0x00002aaaab42ca26: mov %rax,%rsi ;*invokespecial <init>
; - Main::foo@49 (line 14)
;; B79: # N1 <- B65 B78 B68 B77 B76 B71 B75 B74 Freq: 4.00056e-05
0x00002aaaab42ca29: add $0x40,%rsp
0x00002aaaab42ca2d: pop %rbp
0x00002aaaab42ca2e: jmpq 0x00002aaaab4283a0 ; {runtime_call}
0x00002aaaab42ca33: hlt
0x00002aaaab42ca34: hlt
0x00002aaaab42ca35: hlt
0x00002aaaab42ca36: hlt
0x00002aaaab42ca37: hlt
0x00002aaaab42ca38: hlt
0x00002aaaab42ca39: hlt
0x00002aaaab42ca3a: hlt
0x00002aaaab42ca3b: hlt
0x00002aaaab42ca3c: hlt
0x00002aaaab42ca3d: hlt
0x00002aaaab42ca3e: hlt
0x00002aaaab42ca3f: hlt
[Stub Code]
0x00002aaaab42ca40: mov $0x0,%rbx ; {no_reloc}
0x00002aaaab42ca4a: jmpq 0x00002aaaab42ca4a ; {runtime_call}
0x00002aaaab42ca4f: mov $0x0,%rbx ; {static_stub}
0x00002aaaab42ca59: jmpq 0x00002aaaab42ca59 ; {runtime_call}
0x00002aaaab42ca5e: mov $0x0,%rbx ; {static_stub}
0x00002aaaab42ca68: jmpq 0x00002aaaab42ca68 ; {runtime_call}
0x00002aaaab42ca6d: mov $0x0,%rbx ; {static_stub}
0x00002aaaab42ca77: jmpq 0x00002aaaab42ca77 ; {runtime_call}
[Exception Handler]
0x00002aaaab42ca7c: jmpq 0x00002aaaab4029e0 ; {runtime_call}
[Deopt Handler Code]
0x00002aaaab42ca81: callq 0x00002aaaab42ca86
0x00002aaaab42ca86: subq $0x5,(%rsp)
0x00002aaaab42ca8b: jmpq 0x00002aaaab403720 ; {runtime_call}
Failed at iteration: 17
Length mismatch: 16 <> 32
Expected: "testtesttesttesttesttesttesttest"
Actual: "nullnulltesttest"
Java Version: 23.0-b21-internal-fastdebug
try OSR compilation
471 1 % b Main::foo @ 15 (225 bytes)
considering toString call in Main::foo @ bci:212
fusion would succeed (3 0) for Main::foo @ bci:191
1081 ConP === 0 [[ 1082 1242 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
573 Proj === 555 [[ 595 607 1108 1100 627 1082 647 1064 665 1044 683 1013 714 982 745 951 776 920 796 889 814 857 851 1242 ]] #5 Oop:java/lang/String:exact * !jvms: Main::foo @ bci:102
1131 ConP === 0 [[ 1132 1140 1242 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
0--> 1132 CallStaticJava === 1138 1126 1127 8 1 ( 1145 1131 1 1 1 1 1 1 1 1042 ) [[ 1146 1147 1148 1150 1159 1158 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:209 !jvms: Main::foo @ bci:209
1--> 1100 CallStaticJava === 1106 1095 1096 8 1 ( 1113 573 1 1 1 1 1 1 1 1042 ) [[ 1114 1115 1116 1118 1127 1126 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:204 !jvms: Main::foo @ bci:204
2--> 1082 CallStaticJava === 1071 1076 1077 8 1 ( 1061 1081 1 1 573 1 1 1 1 1042 ) [[ 1083 1084 1085 1087 1096 1095 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:200 !jvms: Main::foo @ bci:200
3--> 1163 CallStaticJava === 1169 1158 1159 8 1 ( 1176 1 1 1 1 1 1 1 1042 ) [[ 1177 1178 1179 1181 1190 1189 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:212 !jvms: Main::foo @ bci:212
4--> 1064 CallStaticJava === 1058 1055 1043 8 1 ( 1061 1 1 573 1 1 1 1 1042 1061 ) [[ 1065 1066 1067 1077 1076 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:195 !jvms: Main::foo @ bci:195
5--> 1044 Allocate === 1033 1028 1029 8 1 ( 36 202 20 1 1 1 573 1 1 1 1 1042 ) [[ 1045 1046 1047 1054 1055 1056 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:191 !jvms: Main::foo @ bci:191
6--> 1169 IfTrue === 1168 [[ 1163 1176 ]] #1 !jvms: Main::foo @ bci:212
7--> 1138 IfTrue === 1137 [[ 1132 1145 ]] #1 !jvms: Main::foo @ bci:209
8--> 1106 IfTrue === 1105 [[ 1100 1113 ]] #1 !jvms: Main::foo @ bci:204
considering toString call in Main::foo @ bci:56
fusion would succeed (1 0) for Main::foo @ bci:41
186 ConP === 0 [[ 275 258 258 204 1243 1243 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
186 ConP === 0 [[ 275 258 258 204 1243 1243 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
0--> 275 CallStaticJava === 265 270 271 8 1 ( 221 186 51 133 1 200 1 1 1 ) [[ 276 277 278 280 289 288 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:53 !jvms: Main::foo @ bci:53
1--> 297 CallStaticJava === 303 288 289 8 1 ( 310 51 133 1 200 1 1 1 ) [[ 311 312 313 315 324 323 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:56 !jvms: Main::foo @ bci:56
2--> 258 CallStaticJava === 218 215 229 8 1 ( 221 186 51 133 186 200 1 1 1 221 ) [[ 259 260 261 271 270 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:49 !jvms: Main::foo @ bci:49
3--> 204 Allocate === 143 130 192 8 1 ( 36 202 20 1 51 133 186 200 1 1 1 ) [[ 205 206 207 214 215 216 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:41 !jvms: Main::foo @ bci:41
4--> 303 IfTrue === 302 [[ 297 310 ]] #1 !jvms: Main::foo @ bci:56
considering toString call in Main::foo @ bci:79
fusion would succeed (1 0) for Main::foo @ bci:64
390 Phi === 376 372 375 [[ 394 1244 ]] #java/lang/String:NotNull:exact * Oop:java/lang/String:NotNull:exact * !jvms: String::valueOf @ bci:13 Main::foo @ bci:69
315 Proj === 297 [[ 411 331 394 366 372 1244 ]] #5 Oop:java/lang/String:exact * !jvms: Main::foo @ bci:56
0--> 411 CallStaticJava === 401 406 407 8 1 ( 348 315 51 133 1 329 1 1 1 ) [[ 412 413 414 416 425 424 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:76 !jvms: Main::foo @ bci:76
1--> 429 CallStaticJava === 435 424 425 8 1 ( 442 51 133 1 329 1 1 1 ) [[ 443 444 445 447 456 455 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:79 !jvms: Main::foo @ bci:79
2--> 394 CallStaticJava === 376 342 361 8 1 ( 348 390 51 133 315 329 1 1 1 348 ) [[ 395 396 397 407 406 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:72 !jvms: Main::foo @ bci:72
3--> 331 Allocate === 318 323 324 8 1 ( 36 202 20 1 51 133 315 329 1 1 1 ) [[ 332 333 334 341 342 343 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:64 !jvms: Main::foo @ bci:64
4--> 435 IfTrue === 434 [[ 429 442 ]] #1 !jvms: Main::foo @ bci:79
considering toString call in Main::foo @ bci:102
fusion would succeed (1 0) for Main::foo @ bci:87
516 Phi === 502 499 375 [[ 520 1245 ]] #java/lang/String:NotNull:exact * Oop:java/lang/String:NotNull:exact * !jvms: String::valueOf @ bci:13 Main::foo @ bci:92
447 Proj === 429 [[ 537 463 520 493 499 1245 ]] #5 Oop:java/lang/String:exact * !jvms: Main::foo @ bci:79
0--> 537 CallStaticJava === 527 532 533 8 1 ( 480 447 51 133 1 461 1 1 1 ) [[ 538 539 540 542 551 550 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:99 !jvms: Main::foo @ bci:99
1--> 555 CallStaticJava === 561 550 551 8 1 ( 568 51 133 1 461 1 1 1 ) [[ 569 570 571 573 582 581 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:102 !jvms: Main::foo @ bci:102
2--> 520 CallStaticJava === 502 474 488 8 1 ( 480 516 51 133 447 461 1 1 1 480 ) [[ 521 522 523 533 532 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:95 !jvms: Main::foo @ bci:95
3--> 463 Allocate === 450 455 456 8 1 ( 36 202 20 1 51 133 447 461 1 1 1 ) [[ 464 465 466 473 474 475 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:87 !jvms: Main::foo @ bci:87
4--> 561 IfTrue === 560 [[ 555 568 ]] #1 !jvms: Main::foo @ bci:102
considering toString call in Main::foo @ bci:137
fusion would succeed (2 0) for Main::foo @ bci:121
664 ConP === 0 [[ 665 1246 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
133 Phi === 129 1221 133 98 [[ 683 691 665 171 184 133 647 204 627 1221 258 555 275 537 297 520 331 463 429 394 411 1246 ]] #int !jvms: Main::foo @ bci:15
0--> 683 CallStaticJava === 689 678 679 8 1 ( 696 133 1 1 573 587 1 1 1 625 ) [[ 697 698 699 701 710 709 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:134 !jvms: Main::foo @ bci:134
1--> 665 CallStaticJava === 654 659 660 8 1 ( 644 664 1 133 573 587 1 1 1 625 ) [[ 666 667 668 670 679 678 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:130 !jvms: Main::foo @ bci:130
2--> 714 CallStaticJava === 720 709 710 8 1 ( 727 1 1 573 587 1 1 1 625 ) [[ 728 729 730 732 741 740 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:137 !jvms: Main::foo @ bci:137
3--> 647 CallStaticJava === 641 638 626 8 1 ( 644 1 133 573 587 1 1 1 625 644 ) [[ 648 649 650 660 659 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:125 !jvms: Main::foo @ bci:125
4--> 627 Allocate === 616 581 582 8 1 ( 36 202 20 1 1 133 573 587 1 1 1 625 ) [[ 628 629 630 637 638 639 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:121 !jvms: Main::foo @ bci:121
5--> 720 IfTrue === 719 [[ 714 727 ]] #1 !jvms: Main::foo @ bci:137
6--> 689 IfTrue === 688 [[ 683 696 ]] #1 !jvms: Main::foo @ bci:134
considering toString call in Main::foo @ bci:174
fusion would succeed (4 1) for Main::foo @ bci:146
813 ConP === 0 [[ 814 1247 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
856 LoadI === _ 828 855 [[ 857 865 1247 ]] @java/lang/String:exact+20 *, name=count, idx=7; #int !jvms: String::length @ bci:1 Main::foo @ bci:159
888 ConP === 0 [[ 889 897 1247 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
587 ConI === 0 [[ 920 928 889 613 627 857 647 814 665 796 683 776 714 745 1247 ]] #int:32
0--> 920 CallStaticJava === 926 915 916 8 1 ( 933 587 1 1 573 1 1 1 1 774 ) [[ 934 935 936 938 947 946 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:171 !jvms: Main::foo @ bci:171
1--> 889 CallStaticJava === 895 883 884 8 1 ( 902 888 1 1 573 587 1 1 1 774 ) [[ 903 904 905 907 916 915 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:167 !jvms: Main::foo @ bci:167
2--> 857 CallStaticJava === 863 827 828 8 1 ( 870 856 1 1 573 587 1 1 1 774 ) [[ 871 872 873 875 884 883 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:162 !jvms: Main::foo @ bci:162
3--> 814 CallStaticJava === 803 808 809 8 1 ( 793 813 1 1 573 587 1 1 1 774 ) [[ 815 816 817 819 828 827 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:155 !jvms: Main::foo @ bci:155
4--> 951 CallStaticJava === 957 946 947 8 1 ( 964 1 1 573 1 1 1 1 774 ) [[ 965 966 967 969 978 977 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:174 !jvms: Main::foo @ bci:174
5--> 796 CallStaticJava === 790 787 775 8 1 ( 793 1 1 573 587 1 1 1 774 793 ) [[ 797 798 799 809 808 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:150 !jvms: Main::foo @ bci:150
6--> 776 Allocate === 765 760 761 8 1 ( 36 202 20 1 1 1 573 587 1 1 1 774 ) [[ 777 778 779 786 787 788 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:146 !jvms: Main::foo @ bci:146
7--> 957 IfTrue === 956 [[ 951 964 ]] #1 !jvms: Main::foo @ bci:174
8--> 926 IfTrue === 925 [[ 920 933 ]] #1 !jvms: Main::foo @ bci:171
9--> 895 IfTrue === 894 [[ 889 902 ]] #1 !jvms: Main::foo @ bci:167
10--> 863 IfTrue === 862 [[ 857 870 ]] #1 !jvms: Main::foo @ bci:162
considering stacked concats
fusion would fail for
463 Allocate === 450 455 456 8 1 ( 36 202 20 1 51 133 447 461 1 1 1 ) [[ 464 465 466 473 474 475 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:87 !jvms: Main::foo @ bci:87
1033 CatchProj === 1032 [[ 1044 ]] #0@bci -1 !jvms: Main::foo @ bci:185
1032 Catch === 1027 1028 [[ 1033 1034 ]] !jvms: Main::foo @ bci:185
1027 Proj === 1013 [[ 1032 ]] #0 !jvms: Main::foo @ bci:185
1013 CallStaticJava === 1019 997 998 8 1 ( 1026 1012 1 1 573 1 1 1 1 ) [[ 1027 1028 1029 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:185 !jvms: Main::foo @ bci:185
1002 CatchProj === 1001 [[ 1018 ]] #0@bci -1 !jvms: Main::foo @ bci:177
1001 Catch === 996 997 [[ 1002 1003 ]] !jvms: Main::foo @ bci:177
996 Proj === 982 [[ 1001 ]] #0 !jvms: Main::foo @ bci:177
982 CallStaticJava === 988 977 978 8 1 ( 995 969 1 1 573 1 1 1 1 ) [[ 996 997 998 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:177 !jvms: Main::foo @ bci:177
972 CatchProj === 971 [[ 987 ]] #0@bci -1 !jvms: Main::foo @ bci:174
971 Catch === 965 966 [[ 972 973 ]] !jvms: Main::foo @ bci:174
965 Proj === 951 [[ 971 ]] #0 !jvms: Main::foo @ bci:174
951 CallStaticJava === 957 946 947 8 1 ( 964 1 1 573 1 1 1 1 774 ) [[ 965 966 967 969 978 977 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:174 !jvms: Main::foo @ bci:174
941 CatchProj === 940 [[ 956 ]] #0@bci -1 !jvms: Main::foo @ bci:171
940 Catch === 934 935 [[ 941 942 ]] !jvms: Main::foo @ bci:171
934 Proj === 920 [[ 940 ]] #0 !jvms: Main::foo @ bci:171
920 CallStaticJava === 926 915 916 8 1 ( 933 587 1 1 573 1 1 1 1 774 ) [[ 934 935 936 938 947 946 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:171 !jvms: Main::foo @ bci:171
910 CatchProj === 909 [[ 925 ]] #0@bci -1 !jvms: Main::foo @ bci:167
909 Catch === 903 904 [[ 910 911 ]] !jvms: Main::foo @ bci:167
903 Proj === 889 [[ 909 ]] #0 !jvms: Main::foo @ bci:167
889 CallStaticJava === 895 883 884 8 1 ( 902 888 1 1 573 587 1 1 1 774 ) [[ 903 904 905 907 916 915 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:167 !jvms: Main::foo @ bci:167
878 CatchProj === 877 [[ 894 ]] #0@bci -1 !jvms: Main::foo @ bci:162
877 Catch === 871 872 [[ 878 879 ]] !jvms: Main::foo @ bci:162
871 Proj === 857 [[ 877 ]] #0 !jvms: Main::foo @ bci:162
857 CallStaticJava === 863 827 828 8 1 ( 870 856 1 1 573 587 1 1 1 774 ) [[ 871 872 873 875 884 883 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:162 !jvms: Main::foo @ bci:162
822 CatchProj === 821 [[ 843 ]] #0@bci -1 !jvms: Main::foo @ bci:155
821 Catch === 815 816 [[ 822 823 ]] !jvms: Main::foo @ bci:155
815 Proj === 814 [[ 821 ]] #0 !jvms: Main::foo @ bci:155
814 CallStaticJava === 803 808 809 8 1 ( 793 813 1 1 573 587 1 1 1 774 ) [[ 815 816 817 819 828 827 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:155 !jvms: Main::foo @ bci:155
803 CatchProj === 802 [[ 814 ]] #0@bci -1 !jvms: Main::foo @ bci:150
802 Catch === 797 798 [[ 803 804 ]] !jvms: Main::foo @ bci:150
797 Proj === 796 [[ 802 ]] #0 !jvms: Main::foo @ bci:150
796 CallStaticJava === 790 787 775 8 1 ( 793 1 1 573 587 1 1 1 774 793 ) [[ 797 798 799 809 808 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:150 !jvms: Main::foo @ bci:150
781 CatchProj === 780 [[ 789 ]] #0@bci -1 !jvms: Main::foo @ bci:146
780 Catch === 777 779 [[ 781 782 ]] !jvms: Main::foo @ bci:146
777 Proj === 776 [[ 780 ]] #0 !jvms: Main::foo @ bci:146
776 Allocate === 765 760 761 8 1 ( 36 202 20 1 1 1 573 587 1 1 1 774 ) [[ 777 778 779 786 787 788 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:146 !jvms: Main::foo @ bci:146
765 CatchProj === 764 [[ 776 ]] #0@bci -1 !jvms: Main::foo @ bci:140
764 Catch === 759 760 [[ 765 766 ]] !jvms: Main::foo @ bci:140
759 Proj === 745 [[ 764 ]] #0 !jvms: Main::foo @ bci:140
745 CallStaticJava === 751 740 741 8 1 ( 758 732 1 1 573 587 1 1 1 ) [[ 759 760 761 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:140 !jvms: Main::foo @ bci:140
735 CatchProj === 734 [[ 750 ]] #0@bci -1 !jvms: Main::foo @ bci:137
734 Catch === 728 729 [[ 735 736 ]] !jvms: Main::foo @ bci:137
728 Proj === 714 [[ 734 ]] #0 !jvms: Main::foo @ bci:137
714 CallStaticJava === 720 709 710 8 1 ( 727 1 1 573 587 1 1 1 625 ) [[ 728 729 730 732 741 740 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:137 !jvms: Main::foo @ bci:137
704 CatchProj === 703 [[ 719 ]] #0@bci -1 !jvms: Main::foo @ bci:134
703 Catch === 697 698 [[ 704 705 ]] !jvms: Main::foo @ bci:134
697 Proj === 683 [[ 703 ]] #0 !jvms: Main::foo @ bci:134
683 CallStaticJava === 689 678 679 8 1 ( 696 133 1 1 573 587 1 1 1 625 ) [[ 697 698 699 701 710 709 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:134 !jvms: Main::foo @ bci:134
673 CatchProj === 672 [[ 688 ]] #0@bci -1 !jvms: Main::foo @ bci:130
672 Catch === 666 667 [[ 673 674 ]] !jvms: Main::foo @ bci:130
666 Proj === 665 [[ 672 ]] #0 !jvms: Main::foo @ bci:130
665 CallStaticJava === 654 659 660 8 1 ( 644 664 1 133 573 587 1 1 1 625 ) [[ 666 667 668 670 679 678 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:130 !jvms: Main::foo @ bci:130
654 CatchProj === 653 [[ 665 ]] #0@bci -1 !jvms: Main::foo @ bci:125
653 Catch === 648 649 [[ 654 655 ]] !jvms: Main::foo @ bci:125
648 Proj === 647 [[ 653 ]] #0 !jvms: Main::foo @ bci:125
647 CallStaticJava === 641 638 626 8 1 ( 644 1 133 573 587 1 1 1 625 644 ) [[ 648 649 650 660 659 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:125 !jvms: Main::foo @ bci:125
632 CatchProj === 631 [[ 640 ]] #0@bci -1 !jvms: Main::foo @ bci:121
631 Catch === 628 630 [[ 632 633 ]] !jvms: Main::foo @ bci:121
628 Proj === 627 [[ 631 ]] #0 !jvms: Main::foo @ bci:121
627 Allocate === 616 581 582 8 1 ( 36 202 20 1 1 133 573 587 1 1 1 625 ) [[ 628 629 630 637 638 639 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:121 !jvms: Main::foo @ bci:121
failing with unknown test
614 Bool === _ 613 [[ 615 ]] [ne] !jvms: Main::foo @ bci:115
613 CmpI === _ 612 587 [[ 614 ]] !jvms: Main::foo @ bci:115
612 LoadI === _ 582 611 [[ 613 ]] @java/lang/String:exact+20 *, name=count, idx=7; #int !jvms: String::length @ bci:1 Main::foo @ bci:111
587 ConI === 0 [[ 920 928 889 613 627 857 647 814 665 796 683 776 714 745 1247 ]] #int:32
stacking would fail
considering stacked concats
fusion would succeed (2 0) for Main::foo @ bci:41
390 Phi === 376 372 375 [[ 394 1244 1249 ]] #java/lang/String:NotNull:exact * Oop:java/lang/String:NotNull:exact * !jvms: String::valueOf @ bci:13 Main::foo @ bci:69
186 ConP === 0 [[ 275 258 258 204 1243 1243 1249 1249 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
186 ConP === 0 [[ 275 258 258 204 1243 1243 1249 1249 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
0--> 411 CallStaticJava === 401 406 407 8 1 ( 348 315 51 133 1 329 1 1 1 ) [[ 412 413 414 416 425 424 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:76 !jvms: Main::foo @ bci:76
1--> 429 CallStaticJava === 435 424 425 8 1 ( 442 51 133 1 329 1 1 1 ) [[ 443 444 445 447 456 455 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:79 !jvms: Main::foo @ bci:79
2--> 394 CallStaticJava === 376 342 361 8 1 ( 348 390 51 133 315 329 1 1 1 348 ) [[ 395 396 397 407 406 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:72 !jvms: Main::foo @ bci:72
3--> 331 Allocate === 318 323 324 8 1 ( 36 202 20 1 51 133 315 329 1 1 1 ) [[ 332 333 334 341 342 343 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:64 !jvms: Main::foo @ bci:64
4--> 275 CallStaticJava === 265 270 271 8 1 ( 221 186 51 133 1 200 1 1 1 ) [[ 276 277 278 280 289 288 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:53 !jvms: Main::foo @ bci:53
5--> 297 CallStaticJava === 303 288 289 8 1 ( 310 51 133 1 200 1 1 1 ) [[ 311 312 313 315 324 323 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:56 !jvms: Main::foo @ bci:56
6--> 258 CallStaticJava === 218 215 229 8 1 ( 221 186 51 133 186 200 1 1 1 221 ) [[ 259 260 261 271 270 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:49 !jvms: Main::foo @ bci:49
7--> 204 Allocate === 143 130 192 8 1 ( 36 202 20 1 51 133 186 200 1 1 1 ) [[ 205 206 207 214 215 216 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:41 !jvms: Main::foo @ bci:41
8--> 435 IfTrue === 434 [[ 429 442 ]] #1 !jvms: Main::foo @ bci:79
9--> 303 IfTrue === 302 [[ 297 310 ]] #1 !jvms: Main::foo @ bci:56
stacking would succeed
considering stacked concats
fusion would fail for
463 Allocate === 450 455 456 8 1 ( 36 202 20 1 51 133 447 461 1 1 1 ) [[ 464 465 466 473 474 475 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:87 !jvms: Main::foo @ bci:87
1033 CatchProj === 1032 [[ 1044 ]] #0@bci -1 !jvms: Main::foo @ bci:185
1032 Catch === 1027 1028 [[ 1033 1034 ]] !jvms: Main::foo @ bci:185
1027 Proj === 1013 [[ 1032 ]] #0 !jvms: Main::foo @ bci:185
1013 CallStaticJava === 1019 997 998 8 1 ( 1026 1012 1 1 573 1 1 1 1 ) [[ 1027 1028 1029 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:185 !jvms: Main::foo @ bci:185
1002 CatchProj === 1001 [[ 1018 ]] #0@bci -1 !jvms: Main::foo @ bci:177
1001 Catch === 996 997 [[ 1002 1003 ]] !jvms: Main::foo @ bci:177
996 Proj === 982 [[ 1001 ]] #0 !jvms: Main::foo @ bci:177
982 CallStaticJava === 988 977 978 8 1 ( 995 969 1 1 573 1 1 1 1 ) [[ 996 997 998 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:177 !jvms: Main::foo @ bci:177
972 CatchProj === 971 [[ 987 ]] #0@bci -1 !jvms: Main::foo @ bci:174
971 Catch === 965 966 [[ 972 973 ]] !jvms: Main::foo @ bci:174
965 Proj === 951 [[ 971 ]] #0 !jvms: Main::foo @ bci:174
951 CallStaticJava === 957 946 947 8 1 ( 964 1 1 573 1 1 1 1 774 ) [[ 965 966 967 969 978 977 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:174 !jvms: Main::foo @ bci:174
941 CatchProj === 940 [[ 956 ]] #0@bci -1 !jvms: Main::foo @ bci:171
940 Catch === 934 935 [[ 941 942 ]] !jvms: Main::foo @ bci:171
934 Proj === 920 [[ 940 ]] #0 !jvms: Main::foo @ bci:171
920 CallStaticJava === 926 915 916 8 1 ( 933 587 1 1 573 1 1 1 1 774 ) [[ 934 935 936 938 947 946 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:171 !jvms: Main::foo @ bci:171
910 CatchProj === 909 [[ 925 ]] #0@bci -1 !jvms: Main::foo @ bci:167
909 Catch === 903 904 [[ 910 911 ]] !jvms: Main::foo @ bci:167
903 Proj === 889 [[ 909 ]] #0 !jvms: Main::foo @ bci:167
889 CallStaticJava === 895 883 884 8 1 ( 902 888 1 1 573 587 1 1 1 774 ) [[ 903 904 905 907 916 915 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:167 !jvms: Main::foo @ bci:167
878 CatchProj === 877 [[ 894 ]] #0@bci -1 !jvms: Main::foo @ bci:162
877 Catch === 871 872 [[ 878 879 ]] !jvms: Main::foo @ bci:162
871 Proj === 857 [[ 877 ]] #0 !jvms: Main::foo @ bci:162
857 CallStaticJava === 863 827 828 8 1 ( 870 856 1 1 573 587 1 1 1 774 ) [[ 871 872 873 875 884 883 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:162 !jvms: Main::foo @ bci:162
822 CatchProj === 821 [[ 843 ]] #0@bci -1 !jvms: Main::foo @ bci:155
821 Catch === 815 816 [[ 822 823 ]] !jvms: Main::foo @ bci:155
815 Proj === 814 [[ 821 ]] #0 !jvms: Main::foo @ bci:155
814 CallStaticJava === 803 808 809 8 1 ( 793 813 1 1 573 587 1 1 1 774 ) [[ 815 816 817 819 828 827 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:155 !jvms: Main::foo @ bci:155
803 CatchProj === 802 [[ 814 ]] #0@bci -1 !jvms: Main::foo @ bci:150
802 Catch === 797 798 [[ 803 804 ]] !jvms: Main::foo @ bci:150
797 Proj === 796 [[ 802 ]] #0 !jvms: Main::foo @ bci:150
796 CallStaticJava === 790 787 775 8 1 ( 793 1 1 573 587 1 1 1 774 793 ) [[ 797 798 799 809 808 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:150 !jvms: Main::foo @ bci:150
781 CatchProj === 780 [[ 789 ]] #0@bci -1 !jvms: Main::foo @ bci:146
780 Catch === 777 779 [[ 781 782 ]] !jvms: Main::foo @ bci:146
777 Proj === 776 [[ 780 ]] #0 !jvms: Main::foo @ bci:146
776 Allocate === 765 760 761 8 1 ( 36 202 20 1 1 1 573 587 1 1 1 774 ) [[ 777 778 779 786 787 788 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:146 !jvms: Main::foo @ bci:146
765 CatchProj === 764 [[ 776 ]] #0@bci -1 !jvms: Main::foo @ bci:140
764 Catch === 759 760 [[ 765 766 ]] !jvms: Main::foo @ bci:140
759 Proj === 745 [[ 764 ]] #0 !jvms: Main::foo @ bci:140
745 CallStaticJava === 751 740 741 8 1 ( 758 732 1 1 573 587 1 1 1 ) [[ 759 760 761 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:140 !jvms: Main::foo @ bci:140
735 CatchProj === 734 [[ 750 ]] #0@bci -1 !jvms: Main::foo @ bci:137
734 Catch === 728 729 [[ 735 736 ]] !jvms: Main::foo @ bci:137
728 Proj === 714 [[ 734 ]] #0 !jvms: Main::foo @ bci:137
714 CallStaticJava === 720 709 710 8 1 ( 727 1 1 573 587 1 1 1 625 ) [[ 728 729 730 732 741 740 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:137 !jvms: Main::foo @ bci:137
704 CatchProj === 703 [[ 719 ]] #0@bci -1 !jvms: Main::foo @ bci:134
703 Catch === 697 698 [[ 704 705 ]] !jvms: Main::foo @ bci:134
697 Proj === 683 [[ 703 ]] #0 !jvms: Main::foo @ bci:134
683 CallStaticJava === 689 678 679 8 1 ( 696 133 1 1 573 587 1 1 1 625 ) [[ 697 698 699 701 710 709 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:134 !jvms: Main::foo @ bci:134
673 CatchProj === 672 [[ 688 ]] #0@bci -1 !jvms: Main::foo @ bci:130
672 Catch === 666 667 [[ 673 674 ]] !jvms: Main::foo @ bci:130
666 Proj === 665 [[ 672 ]] #0 !jvms: Main::foo @ bci:130
665 CallStaticJava === 654 659 660 8 1 ( 644 664 1 133 573 587 1 1 1 625 ) [[ 666 667 668 670 679 678 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:130 !jvms: Main::foo @ bci:130
654 CatchProj === 653 [[ 665 ]] #0@bci -1 !jvms: Main::foo @ bci:125
653 Catch === 648 649 [[ 654 655 ]] !jvms: Main::foo @ bci:125
648 Proj === 647 [[ 653 ]] #0 !jvms: Main::foo @ bci:125
647 CallStaticJava === 641 638 626 8 1 ( 644 1 133 573 587 1 1 1 625 644 ) [[ 648 649 650 660 659 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:125 !jvms: Main::foo @ bci:125
632 CatchProj === 631 [[ 640 ]] #0@bci -1 !jvms: Main::foo @ bci:121
631 Catch === 628 630 [[ 632 633 ]] !jvms: Main::foo @ bci:121
628 Proj === 627 [[ 631 ]] #0 !jvms: Main::foo @ bci:121
627 Allocate === 616 581 582 8 1 ( 36 202 20 1 1 133 573 587 1 1 1 625 ) [[ 628 629 630 637 638 639 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:121 !jvms: Main::foo @ bci:121
failing with unknown test
614 Bool === _ 613 [[ 615 ]] [ne] !jvms: Main::foo @ bci:115
613 CmpI === _ 612 587 [[ 614 ]] !jvms: Main::foo @ bci:115
612 LoadI === _ 582 611 [[ 613 ]] @java/lang/String:exact+20 *, name=count, idx=7; #int !jvms: String::length @ bci:1 Main::foo @ bci:111
587 ConI === 0 [[ 920 928 889 613 627 857 647 814 665 796 683 776 714 745 1247 ]] #int:32
stacking would fail
considering stacked concats
fusion would succeed (3 0) for Main::foo @ bci:41
516 Phi === 502 499 375 [[ 520 1245 1248 1250 1251 ]] #java/lang/String:NotNull:exact * Oop:java/lang/String:NotNull:exact * !jvms: String::valueOf @ bci:13 Main::foo @ bci:92
390 Phi === 376 372 375 [[ 394 1244 1249 1251 ]] #java/lang/String:NotNull:exact * Oop:java/lang/String:NotNull:exact * !jvms: String::valueOf @ bci:13 Main::foo @ bci:69
186 ConP === 0 [[ 275 258 258 204 1243 1243 1249 1249 1251 1251 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
186 ConP === 0 [[ 275 258 258 204 1243 1243 1249 1249 1251 1251 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
0--> 537 CallStaticJava === 527 532 533 8 1 ( 480 447 51 133 1 461 1 1 1 ) [[ 538 539 540 542 551 550 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:99 !jvms: Main::foo @ bci:99
1--> 555 CallStaticJava === 561 550 551 8 1 ( 568 51 133 1 461 1 1 1 ) [[ 569 570 571 573 582 581 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:102 !jvms: Main::foo @ bci:102
2--> 520 CallStaticJava === 502 474 488 8 1 ( 480 516 51 133 447 461 1 1 1 480 ) [[ 521 522 523 533 532 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:95 !jvms: Main::foo @ bci:95
3--> 463 Allocate === 450 455 456 8 1 ( 36 202 20 1 51 133 447 461 1 1 1 ) [[ 464 465 466 473 474 475 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:87 !jvms: Main::foo @ bci:87
4--> 411 CallStaticJava === 401 406 407 8 1 ( 348 315 51 133 1 329 1 1 1 ) [[ 412 413 414 416 425 424 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:76 !jvms: Main::foo @ bci:76
5--> 429 CallStaticJava === 435 424 425 8 1 ( 442 51 133 1 329 1 1 1 ) [[ 443 444 445 447 456 455 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:79 !jvms: Main::foo @ bci:79
6--> 394 CallStaticJava === 376 342 361 8 1 ( 348 390 51 133 315 329 1 1 1 348 ) [[ 395 396 397 407 406 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:72 !jvms: Main::foo @ bci:72
7--> 331 Allocate === 318 323 324 8 1 ( 36 202 20 1 51 133 315 329 1 1 1 ) [[ 332 333 334 341 342 343 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:64 !jvms: Main::foo @ bci:64
8--> 275 CallStaticJava === 265 270 271 8 1 ( 221 186 51 133 1 200 1 1 1 ) [[ 276 277 278 280 289 288 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:53 !jvms: Main::foo @ bci:53
9--> 297 CallStaticJava === 303 288 289 8 1 ( 310 51 133 1 200 1 1 1 ) [[ 311 312 313 315 324 323 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:56 !jvms: Main::foo @ bci:56
10--> 258 CallStaticJava === 218 215 229 8 1 ( 221 186 51 133 186 200 1 1 1 221 ) [[ 259 260 261 271 270 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:49 !jvms: Main::foo @ bci:49
11--> 204 Allocate === 143 130 192 8 1 ( 36 202 20 1 51 133 186 200 1 1 1 ) [[ 205 206 207 214 215 216 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:41 !jvms: Main::foo @ bci:41
12--> 561 IfTrue === 560 [[ 555 568 ]] #1 !jvms: Main::foo @ bci:102
13--> 435 IfTrue === 434 [[ 429 442 ]] #1 !jvms: Main::foo @ bci:79
14--> 303 IfTrue === 302 [[ 297 310 ]] #1 !jvms: Main::foo @ bci:56
stacking would succeed
considering stacked concats
fusion would fail for
204 Allocate === 143 130 192 8 1 ( 36 202 20 1 51 133 186 200 1 1 1 ) [[ 205 206 207 214 215 216 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:41 !jvms: Main::foo @ bci:41
1033 CatchProj === 1032 [[ 1044 ]] #0@bci -1 !jvms: Main::foo @ bci:185
1032 Catch === 1027 1028 [[ 1033 1034 ]] !jvms: Main::foo @ bci:185
1027 Proj === 1013 [[ 1032 ]] #0 !jvms: Main::foo @ bci:185
1013 CallStaticJava === 1019 997 998 8 1 ( 1026 1012 1 1 573 1 1 1 1 ) [[ 1027 1028 1029 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:185 !jvms: Main::foo @ bci:185
1002 CatchProj === 1001 [[ 1018 ]] #0@bci -1 !jvms: Main::foo @ bci:177
1001 Catch === 996 997 [[ 1002 1003 ]] !jvms: Main::foo @ bci:177
996 Proj === 982 [[ 1001 ]] #0 !jvms: Main::foo @ bci:177
982 CallStaticJava === 988 977 978 8 1 ( 995 969 1 1 573 1 1 1 1 ) [[ 996 997 998 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:177 !jvms: Main::foo @ bci:177
972 CatchProj === 971 [[ 987 ]] #0@bci -1 !jvms: Main::foo @ bci:174
971 Catch === 965 966 [[ 972 973 ]] !jvms: Main::foo @ bci:174
965 Proj === 951 [[ 971 ]] #0 !jvms: Main::foo @ bci:174
951 CallStaticJava === 957 946 947 8 1 ( 964 1 1 573 1 1 1 1 774 ) [[ 965 966 967 969 978 977 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:174 !jvms: Main::foo @ bci:174
941 CatchProj === 940 [[ 956 ]] #0@bci -1 !jvms: Main::foo @ bci:171
940 Catch === 934 935 [[ 941 942 ]] !jvms: Main::foo @ bci:171
934 Proj === 920 [[ 940 ]] #0 !jvms: Main::foo @ bci:171
920 CallStaticJava === 926 915 916 8 1 ( 933 587 1 1 573 1 1 1 1 774 ) [[ 934 935 936 938 947 946 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:171 !jvms: Main::foo @ bci:171
910 CatchProj === 909 [[ 925 ]] #0@bci -1 !jvms: Main::foo @ bci:167
909 Catch === 903 904 [[ 910 911 ]] !jvms: Main::foo @ bci:167
903 Proj === 889 [[ 909 ]] #0 !jvms: Main::foo @ bci:167
889 CallStaticJava === 895 883 884 8 1 ( 902 888 1 1 573 587 1 1 1 774 ) [[ 903 904 905 907 916 915 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:167 !jvms: Main::foo @ bci:167
878 CatchProj === 877 [[ 894 ]] #0@bci -1 !jvms: Main::foo @ bci:162
877 Catch === 871 872 [[ 878 879 ]] !jvms: Main::foo @ bci:162
871 Proj === 857 [[ 877 ]] #0 !jvms: Main::foo @ bci:162
857 CallStaticJava === 863 827 828 8 1 ( 870 856 1 1 573 587 1 1 1 774 ) [[ 871 872 873 875 884 883 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:162 !jvms: Main::foo @ bci:162
822 CatchProj === 821 [[ 843 ]] #0@bci -1 !jvms: Main::foo @ bci:155
821 Catch === 815 816 [[ 822 823 ]] !jvms: Main::foo @ bci:155
815 Proj === 814 [[ 821 ]] #0 !jvms: Main::foo @ bci:155
814 CallStaticJava === 803 808 809 8 1 ( 793 813 1 1 573 587 1 1 1 774 ) [[ 815 816 817 819 828 827 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:155 !jvms: Main::foo @ bci:155
803 CatchProj === 802 [[ 814 ]] #0@bci -1 !jvms: Main::foo @ bci:150
802 Catch === 797 798 [[ 803 804 ]] !jvms: Main::foo @ bci:150
797 Proj === 796 [[ 802 ]] #0 !jvms: Main::foo @ bci:150
796 CallStaticJava === 790 787 775 8 1 ( 793 1 1 573 587 1 1 1 774 793 ) [[ 797 798 799 809 808 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:150 !jvms: Main::foo @ bci:150
781 CatchProj === 780 [[ 789 ]] #0@bci -1 !jvms: Main::foo @ bci:146
780 Catch === 777 779 [[ 781 782 ]] !jvms: Main::foo @ bci:146
777 Proj === 776 [[ 780 ]] #0 !jvms: Main::foo @ bci:146
776 Allocate === 765 760 761 8 1 ( 36 202 20 1 1 1 573 587 1 1 1 774 ) [[ 777 778 779 786 787 788 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:146 !jvms: Main::foo @ bci:146
765 CatchProj === 764 [[ 776 ]] #0@bci -1 !jvms: Main::foo @ bci:140
764 Catch === 759 760 [[ 765 766 ]] !jvms: Main::foo @ bci:140
759 Proj === 745 [[ 764 ]] #0 !jvms: Main::foo @ bci:140
745 CallStaticJava === 751 740 741 8 1 ( 758 732 1 1 573 587 1 1 1 ) [[ 759 760 761 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:140 !jvms: Main::foo @ bci:140
735 CatchProj === 734 [[ 750 ]] #0@bci -1 !jvms: Main::foo @ bci:137
734 Catch === 728 729 [[ 735 736 ]] !jvms: Main::foo @ bci:137
728 Proj === 714 [[ 734 ]] #0 !jvms: Main::foo @ bci:137
714 CallStaticJava === 720 709 710 8 1 ( 727 1 1 573 587 1 1 1 625 ) [[ 728 729 730 732 741 740 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:137 !jvms: Main::foo @ bci:137
704 CatchProj === 703 [[ 719 ]] #0@bci -1 !jvms: Main::foo @ bci:134
703 Catch === 697 698 [[ 704 705 ]] !jvms: Main::foo @ bci:134
697 Proj === 683 [[ 703 ]] #0 !jvms: Main::foo @ bci:134
683 CallStaticJava === 689 678 679 8 1 ( 696 133 1 1 573 587 1 1 1 625 ) [[ 697 698 699 701 710 709 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:134 !jvms: Main::foo @ bci:134
673 CatchProj === 672 [[ 688 ]] #0@bci -1 !jvms: Main::foo @ bci:130
672 Catch === 666 667 [[ 673 674 ]] !jvms: Main::foo @ bci:130
666 Proj === 665 [[ 672 ]] #0 !jvms: Main::foo @ bci:130
665 CallStaticJava === 654 659 660 8 1 ( 644 664 1 133 573 587 1 1 1 625 ) [[ 666 667 668 670 679 678 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:130 !jvms: Main::foo @ bci:130
654 CatchProj === 653 [[ 665 ]] #0@bci -1 !jvms: Main::foo @ bci:125
653 Catch === 648 649 [[ 654 655 ]] !jvms: Main::foo @ bci:125
648 Proj === 647 [[ 653 ]] #0 !jvms: Main::foo @ bci:125
647 CallStaticJava === 641 638 626 8 1 ( 644 1 133 573 587 1 1 1 625 644 ) [[ 648 649 650 660 659 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:125 !jvms: Main::foo @ bci:125
632 CatchProj === 631 [[ 640 ]] #0@bci -1 !jvms: Main::foo @ bci:121
631 Catch === 628 630 [[ 632 633 ]] !jvms: Main::foo @ bci:121
628 Proj === 627 [[ 631 ]] #0 !jvms: Main::foo @ bci:121
627 Allocate === 616 581 582 8 1 ( 36 202 20 1 1 133 573 587 1 1 1 625 ) [[ 628 629 630 637 638 639 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:121 !jvms: Main::foo @ bci:121
failing with unknown test
614 Bool === _ 613 [[ 615 ]] [ne] !jvms: Main::foo @ bci:115
613 CmpI === _ 612 587 [[ 614 ]] !jvms: Main::foo @ bci:115
612 LoadI === _ 582 611 [[ 613 ]] @java/lang/String:exact+20 *, name=count, idx=7; #int !jvms: String::length @ bci:1 Main::foo @ bci:111
587 ConI === 0 [[ 920 928 889 613 627 857 647 814 665 796 683 776 714 745 1247 ]] #int:32
stacking would fail
Failed at iteration: 241
Length mismatch: 16 <> 32
Expected: "testtesttesttesttesttesttesttest"
Actual: "nullnulltesttest"
try standard compilation
566 1 b Main::foo (225 bytes)
considering toString call in Main::foo @ bci:212
fusion would succeed (3 0) for Main::foo @ bci:191
1049 ConP === 0 [[ 1050 1196 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
541 Proj === 523 [[ 563 575 1076 1068 595 1050 615 1032 633 1012 651 981 682 950 713 919 744 888 764 857 782 825 819 1196 ]] #5 Oop:java/lang/String:exact * !jvms: Main::foo @ bci:102
1099 ConP === 0 [[ 1100 1108 1196 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
0--> 1100 CallStaticJava === 1106 1094 1095 8 1 ( 1113 1099 1 1 1 1 1 1 1 1010 ) [[ 1114 1115 1116 1118 1127 1126 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:209 !jvms: Main::foo @ bci:209
1--> 1068 CallStaticJava === 1074 1063 1064 8 1 ( 1081 541 1 1 1 1 1 1 1 1010 ) [[ 1082 1083 1084 1086 1095 1094 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:204 !jvms: Main::foo @ bci:204
2--> 1050 CallStaticJava === 1039 1044 1045 8 1 ( 1029 1049 1 1 541 1 1 1 1 1010 ) [[ 1051 1052 1053 1055 1064 1063 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:200 !jvms: Main::foo @ bci:200
3--> 1131 CallStaticJava === 1137 1126 1127 8 1 ( 1144 1 1 1 1 1 1 1 1010 ) [[ 1145 1146 1147 1149 1158 1157 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:212 !jvms: Main::foo @ bci:212
4--> 1032 CallStaticJava === 1026 1023 1011 8 1 ( 1029 1 1 541 1 1 1 1 1010 1029 ) [[ 1033 1034 1035 1045 1044 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:195 !jvms: Main::foo @ bci:195
5--> 1012 Allocate === 1001 996 997 8 1 ( 168 167 26 1 1 1 541 1 1 1 1 1010 ) [[ 1013 1014 1015 1022 1023 1024 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:191 !jvms: Main::foo @ bci:191
6--> 1137 IfTrue === 1136 [[ 1131 1144 ]] #1 !jvms: Main::foo @ bci:212
7--> 1106 IfTrue === 1105 [[ 1100 1113 ]] #1 !jvms: Main::foo @ bci:209
8--> 1074 IfTrue === 1073 [[ 1068 1081 ]] #1 !jvms: Main::foo @ bci:204
considering toString call in Main::foo @ bci:56
fusion would succeed (1 0) for Main::foo @ bci:41
150 ConP === 0 [[ 249 232 232 170 1197 1197 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
150 ConP === 0 [[ 249 232 232 170 1197 1197 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
0--> 249 CallStaticJava === 239 244 245 8 1 ( 187 150 53 97 1 164 1 1 1 ) [[ 250 251 252 254 263 262 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:53 !jvms: Main::foo @ bci:53
1--> 271 CallStaticJava === 277 262 263 8 1 ( 284 53 97 1 164 1 1 1 ) [[ 285 286 287 289 298 297 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:56 !jvms: Main::foo @ bci:56
2--> 232 CallStaticJava === 184 181 201 8 1 ( 187 150 53 97 150 164 1 1 1 187 ) [[ 233 234 235 245 244 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:49 !jvms: Main::foo @ bci:49
3--> 170 Allocate === 107 93 156 8 1 ( 168 167 26 1 53 97 150 164 1 1 1 ) [[ 171 172 173 180 181 182 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:41 !jvms: Main::foo @ bci:41
4--> 277 IfTrue === 276 [[ 271 284 ]] #1 !jvms: Main::foo @ bci:56
considering toString call in Main::foo @ bci:79
fusion would succeed (1 0) for Main::foo @ bci:64
359 Phi === 345 341 344 [[ 363 1198 ]] #java/lang/String:NotNull:exact * Oop:java/lang/String:NotNull:exact * !jvms: String::valueOf @ bci:13 Main::foo @ bci:69
289 Proj === 271 [[ 380 305 363 335 341 1198 ]] #5 Oop:java/lang/String:exact * !jvms: Main::foo @ bci:56
0--> 380 CallStaticJava === 370 375 376 8 1 ( 322 289 53 97 1 303 1 1 1 ) [[ 381 382 383 385 394 393 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:76 !jvms: Main::foo @ bci:76
1--> 398 CallStaticJava === 404 393 394 8 1 ( 411 53 97 1 303 1 1 1 ) [[ 412 413 414 416 425 424 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:79 !jvms: Main::foo @ bci:79
2--> 363 CallStaticJava === 345 316 330 8 1 ( 322 359 53 97 289 303 1 1 1 322 ) [[ 364 365 366 376 375 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:72 !jvms: Main::foo @ bci:72
3--> 305 Allocate === 292 297 298 8 1 ( 168 167 26 1 53 97 289 303 1 1 1 ) [[ 306 307 308 315 316 317 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:64 !jvms: Main::foo @ bci:64
4--> 404 IfTrue === 403 [[ 398 411 ]] #1 !jvms: Main::foo @ bci:79
considering toString call in Main::foo @ bci:102
fusion would succeed (1 0) for Main::foo @ bci:87
484 Phi === 470 467 344 [[ 488 1199 ]] #java/lang/String:NotNull:exact * Oop:java/lang/String:NotNull:exact * !jvms: String::valueOf @ bci:13 Main::foo @ bci:92
416 Proj === 398 [[ 505 431 488 461 467 1199 ]] #5 Oop:java/lang/String:exact * !jvms: Main::foo @ bci:79
0--> 505 CallStaticJava === 495 500 501 8 1 ( 448 416 53 97 1 27 1 1 1 ) [[ 506 507 508 510 519 518 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:99 !jvms: Main::foo @ bci:99
1--> 523 CallStaticJava === 529 518 519 8 1 ( 536 53 97 1 27 1 1 1 ) [[ 537 538 539 541 550 549 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:102 !jvms: Main::foo @ bci:102
2--> 488 CallStaticJava === 470 442 456 8 1 ( 448 484 53 97 416 27 1 1 1 448 ) [[ 489 490 491 501 500 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:95 !jvms: Main::foo @ bci:95
3--> 431 Allocate === 419 424 425 8 1 ( 168 167 26 1 53 97 416 27 1 1 1 ) [[ 432 433 434 441 442 443 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:87 !jvms: Main::foo @ bci:87
4--> 529 IfTrue === 528 [[ 523 536 ]] #1 !jvms: Main::foo @ bci:102
considering toString call in Main::foo @ bci:137
fusion would succeed (2 0) for Main::foo @ bci:121
632 ConP === 0 [[ 633 1200 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
97 Phi === 92 1189 97 61 [[ 651 659 633 136 148 97 615 170 595 1189 232 523 249 505 271 488 305 431 398 363 380 1200 ]] #int !jvms: Main::foo @ bci:15
0--> 651 CallStaticJava === 657 646 647 8 1 ( 664 97 1 1 541 555 1 1 1 593 ) [[ 665 666 667 669 678 677 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:134 !jvms: Main::foo @ bci:134
1--> 633 CallStaticJava === 622 627 628 8 1 ( 612 632 1 97 541 555 1 1 1 593 ) [[ 634 635 636 638 647 646 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:130 !jvms: Main::foo @ bci:130
2--> 682 CallStaticJava === 688 677 678 8 1 ( 695 1 1 541 555 1 1 1 593 ) [[ 696 697 698 700 709 708 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:137 !jvms: Main::foo @ bci:137
3--> 615 CallStaticJava === 609 606 594 8 1 ( 612 1 97 541 555 1 1 1 593 612 ) [[ 616 617 618 628 627 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:125 !jvms: Main::foo @ bci:125
4--> 595 Allocate === 584 549 550 8 1 ( 168 167 26 1 1 97 541 555 1 1 1 593 ) [[ 596 597 598 605 606 607 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:121 !jvms: Main::foo @ bci:121
5--> 688 IfTrue === 687 [[ 682 695 ]] #1 !jvms: Main::foo @ bci:137
6--> 657 IfTrue === 656 [[ 651 664 ]] #1 !jvms: Main::foo @ bci:134
considering toString call in Main::foo @ bci:174
fusion would succeed (4 1) for Main::foo @ bci:146
781 ConP === 0 [[ 782 1201 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
824 LoadI === _ 796 823 [[ 825 833 1201 ]] @java/lang/String:exact+20 *, name=count, idx=6; #int !jvms: String::length @ bci:1 Main::foo @ bci:159
856 ConP === 0 [[ 857 865 1201 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
555 ConI === 0 [[ 888 896 857 581 595 825 615 782 633 764 651 744 682 713 1201 ]] #int:32
0--> 888 CallStaticJava === 894 883 884 8 1 ( 901 555 1 1 541 1 1 1 1 742 ) [[ 902 903 904 906 915 914 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:171 !jvms: Main::foo @ bci:171
1--> 857 CallStaticJava === 863 851 852 8 1 ( 870 856 1 1 541 555 1 1 1 742 ) [[ 871 872 873 875 884 883 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:167 !jvms: Main::foo @ bci:167
2--> 825 CallStaticJava === 831 795 796 8 1 ( 838 824 1 1 541 555 1 1 1 742 ) [[ 839 840 841 843 852 851 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:162 !jvms: Main::foo @ bci:162
3--> 782 CallStaticJava === 771 776 777 8 1 ( 761 781 1 1 541 555 1 1 1 742 ) [[ 783 784 785 787 796 795 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:155 !jvms: Main::foo @ bci:155
4--> 919 CallStaticJava === 925 914 915 8 1 ( 932 1 1 541 1 1 1 1 742 ) [[ 933 934 935 937 946 945 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:174 !jvms: Main::foo @ bci:174
5--> 764 CallStaticJava === 758 755 743 8 1 ( 761 1 1 541 555 1 1 1 742 761 ) [[ 765 766 767 777 776 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:150 !jvms: Main::foo @ bci:150
6--> 744 Allocate === 733 728 729 8 1 ( 168 167 26 1 1 1 541 555 1 1 1 742 ) [[ 745 746 747 754 755 756 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:146 !jvms: Main::foo @ bci:146
7--> 925 IfTrue === 924 [[ 919 932 ]] #1 !jvms: Main::foo @ bci:174
8--> 894 IfTrue === 893 [[ 888 901 ]] #1 !jvms: Main::foo @ bci:171
9--> 863 IfTrue === 862 [[ 857 870 ]] #1 !jvms: Main::foo @ bci:167
10--> 831 IfTrue === 830 [[ 825 838 ]] #1 !jvms: Main::foo @ bci:162
considering stacked concats
fusion would fail for
431 Allocate === 419 424 425 8 1 ( 168 167 26 1 53 97 416 27 1 1 1 ) [[ 432 433 434 441 442 443 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:87 !jvms: Main::foo @ bci:87
1001 CatchProj === 1000 [[ 1012 ]] #0@bci -1 !jvms: Main::foo @ bci:185
1000 Catch === 995 996 [[ 1001 1002 ]] !jvms: Main::foo @ bci:185
995 Proj === 981 [[ 1000 ]] #0 !jvms: Main::foo @ bci:185
981 CallStaticJava === 987 965 966 8 1 ( 994 980 1 1 541 1 1 1 1 ) [[ 995 996 997 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:185 !jvms: Main::foo @ bci:185
970 CatchProj === 969 [[ 986 ]] #0@bci -1 !jvms: Main::foo @ bci:177
969 Catch === 964 965 [[ 970 971 ]] !jvms: Main::foo @ bci:177
964 Proj === 950 [[ 969 ]] #0 !jvms: Main::foo @ bci:177
950 CallStaticJava === 956 945 946 8 1 ( 963 937 1 1 541 1 1 1 1 ) [[ 964 965 966 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:177 !jvms: Main::foo @ bci:177
940 CatchProj === 939 [[ 955 ]] #0@bci -1 !jvms: Main::foo @ bci:174
939 Catch === 933 934 [[ 940 941 ]] !jvms: Main::foo @ bci:174
933 Proj === 919 [[ 939 ]] #0 !jvms: Main::foo @ bci:174
919 CallStaticJava === 925 914 915 8 1 ( 932 1 1 541 1 1 1 1 742 ) [[ 933 934 935 937 946 945 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:174 !jvms: Main::foo @ bci:174
909 CatchProj === 908 [[ 924 ]] #0@bci -1 !jvms: Main::foo @ bci:171
908 Catch === 902 903 [[ 909 910 ]] !jvms: Main::foo @ bci:171
902 Proj === 888 [[ 908 ]] #0 !jvms: Main::foo @ bci:171
888 CallStaticJava === 894 883 884 8 1 ( 901 555 1 1 541 1 1 1 1 742 ) [[ 902 903 904 906 915 914 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:171 !jvms: Main::foo @ bci:171
878 CatchProj === 877 [[ 893 ]] #0@bci -1 !jvms: Main::foo @ bci:167
877 Catch === 871 872 [[ 878 879 ]] !jvms: Main::foo @ bci:167
871 Proj === 857 [[ 877 ]] #0 !jvms: Main::foo @ bci:167
857 CallStaticJava === 863 851 852 8 1 ( 870 856 1 1 541 555 1 1 1 742 ) [[ 871 872 873 875 884 883 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:167 !jvms: Main::foo @ bci:167
846 CatchProj === 845 [[ 862 ]] #0@bci -1 !jvms: Main::foo @ bci:162
845 Catch === 839 840 [[ 846 847 ]] !jvms: Main::foo @ bci:162
839 Proj === 825 [[ 845 ]] #0 !jvms: Main::foo @ bci:162
825 CallStaticJava === 831 795 796 8 1 ( 838 824 1 1 541 555 1 1 1 742 ) [[ 839 840 841 843 852 851 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:162 !jvms: Main::foo @ bci:162
790 CatchProj === 789 [[ 811 ]] #0@bci -1 !jvms: Main::foo @ bci:155
789 Catch === 783 784 [[ 790 791 ]] !jvms: Main::foo @ bci:155
783 Proj === 782 [[ 789 ]] #0 !jvms: Main::foo @ bci:155
782 CallStaticJava === 771 776 777 8 1 ( 761 781 1 1 541 555 1 1 1 742 ) [[ 783 784 785 787 796 795 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:155 !jvms: Main::foo @ bci:155
771 CatchProj === 770 [[ 782 ]] #0@bci -1 !jvms: Main::foo @ bci:150
770 Catch === 765 766 [[ 771 772 ]] !jvms: Main::foo @ bci:150
765 Proj === 764 [[ 770 ]] #0 !jvms: Main::foo @ bci:150
764 CallStaticJava === 758 755 743 8 1 ( 761 1 1 541 555 1 1 1 742 761 ) [[ 765 766 767 777 776 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:150 !jvms: Main::foo @ bci:150
749 CatchProj === 748 [[ 757 ]] #0@bci -1 !jvms: Main::foo @ bci:146
748 Catch === 745 747 [[ 749 750 ]] !jvms: Main::foo @ bci:146
745 Proj === 744 [[ 748 ]] #0 !jvms: Main::foo @ bci:146
744 Allocate === 733 728 729 8 1 ( 168 167 26 1 1 1 541 555 1 1 1 742 ) [[ 745 746 747 754 755 756 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:146 !jvms: Main::foo @ bci:146
733 CatchProj === 732 [[ 744 ]] #0@bci -1 !jvms: Main::foo @ bci:140
732 Catch === 727 728 [[ 733 734 ]] !jvms: Main::foo @ bci:140
727 Proj === 713 [[ 732 ]] #0 !jvms: Main::foo @ bci:140
713 CallStaticJava === 719 708 709 8 1 ( 726 700 1 1 541 555 1 1 1 ) [[ 727 728 729 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:140 !jvms: Main::foo @ bci:140
703 CatchProj === 702 [[ 718 ]] #0@bci -1 !jvms: Main::foo @ bci:137
702 Catch === 696 697 [[ 703 704 ]] !jvms: Main::foo @ bci:137
696 Proj === 682 [[ 702 ]] #0 !jvms: Main::foo @ bci:137
682 CallStaticJava === 688 677 678 8 1 ( 695 1 1 541 555 1 1 1 593 ) [[ 696 697 698 700 709 708 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:137 !jvms: Main::foo @ bci:137
672 CatchProj === 671 [[ 687 ]] #0@bci -1 !jvms: Main::foo @ bci:134
671 Catch === 665 666 [[ 672 673 ]] !jvms: Main::foo @ bci:134
665 Proj === 651 [[ 671 ]] #0 !jvms: Main::foo @ bci:134
651 CallStaticJava === 657 646 647 8 1 ( 664 97 1 1 541 555 1 1 1 593 ) [[ 665 666 667 669 678 677 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:134 !jvms: Main::foo @ bci:134
641 CatchProj === 640 [[ 656 ]] #0@bci -1 !jvms: Main::foo @ bci:130
640 Catch === 634 635 [[ 641 642 ]] !jvms: Main::foo @ bci:130
634 Proj === 633 [[ 640 ]] #0 !jvms: Main::foo @ bci:130
633 CallStaticJava === 622 627 628 8 1 ( 612 632 1 97 541 555 1 1 1 593 ) [[ 634 635 636 638 647 646 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:130 !jvms: Main::foo @ bci:130
622 CatchProj === 621 [[ 633 ]] #0@bci -1 !jvms: Main::foo @ bci:125
621 Catch === 616 617 [[ 622 623 ]] !jvms: Main::foo @ bci:125
616 Proj === 615 [[ 621 ]] #0 !jvms: Main::foo @ bci:125
615 CallStaticJava === 609 606 594 8 1 ( 612 1 97 541 555 1 1 1 593 612 ) [[ 616 617 618 628 627 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:125 !jvms: Main::foo @ bci:125
600 CatchProj === 599 [[ 608 ]] #0@bci -1 !jvms: Main::foo @ bci:121
599 Catch === 596 598 [[ 600 601 ]] !jvms: Main::foo @ bci:121
596 Proj === 595 [[ 599 ]] #0 !jvms: Main::foo @ bci:121
595 Allocate === 584 549 550 8 1 ( 168 167 26 1 1 97 541 555 1 1 1 593 ) [[ 596 597 598 605 606 607 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:121 !jvms: Main::foo @ bci:121
failing with unknown test
582 Bool === _ 581 [[ 583 ]] [ne] !jvms: Main::foo @ bci:115
581 CmpI === _ 580 555 [[ 582 ]] !jvms: Main::foo @ bci:115
580 LoadI === _ 550 579 [[ 581 ]] @java/lang/String:exact+20 *, name=count, idx=6; #int !jvms: String::length @ bci:1 Main::foo @ bci:111
555 ConI === 0 [[ 888 896 857 581 595 825 615 782 633 764 651 744 682 713 1201 ]] #int:32
stacking would fail
considering stacked concats
fusion would succeed (2 0) for Main::foo @ bci:41
359 Phi === 345 341 344 [[ 363 1198 1203 ]] #java/lang/String:NotNull:exact * Oop:java/lang/String:NotNull:exact * !jvms: String::valueOf @ bci:13 Main::foo @ bci:69
150 ConP === 0 [[ 249 232 232 170 1197 1197 1203 1203 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
150 ConP === 0 [[ 249 232 232 170 1197 1197 1203 1203 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
0--> 380 CallStaticJava === 370 375 376 8 1 ( 322 289 53 97 1 303 1 1 1 ) [[ 381 382 383 385 394 393 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:76 !jvms: Main::foo @ bci:76
1--> 398 CallStaticJava === 404 393 394 8 1 ( 411 53 97 1 303 1 1 1 ) [[ 412 413 414 416 425 424 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:79 !jvms: Main::foo @ bci:79
2--> 363 CallStaticJava === 345 316 330 8 1 ( 322 359 53 97 289 303 1 1 1 322 ) [[ 364 365 366 376 375 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:72 !jvms: Main::foo @ bci:72
3--> 305 Allocate === 292 297 298 8 1 ( 168 167 26 1 53 97 289 303 1 1 1 ) [[ 306 307 308 315 316 317 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:64 !jvms: Main::foo @ bci:64
4--> 249 CallStaticJava === 239 244 245 8 1 ( 187 150 53 97 1 164 1 1 1 ) [[ 250 251 252 254 263 262 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:53 !jvms: Main::foo @ bci:53
5--> 271 CallStaticJava === 277 262 263 8 1 ( 284 53 97 1 164 1 1 1 ) [[ 285 286 287 289 298 297 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:56 !jvms: Main::foo @ bci:56
6--> 232 CallStaticJava === 184 181 201 8 1 ( 187 150 53 97 150 164 1 1 1 187 ) [[ 233 234 235 245 244 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:49 !jvms: Main::foo @ bci:49
7--> 170 Allocate === 107 93 156 8 1 ( 168 167 26 1 53 97 150 164 1 1 1 ) [[ 171 172 173 180 181 182 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:41 !jvms: Main::foo @ bci:41
8--> 404 IfTrue === 403 [[ 398 411 ]] #1 !jvms: Main::foo @ bci:79
9--> 277 IfTrue === 276 [[ 271 284 ]] #1 !jvms: Main::foo @ bci:56
stacking would succeed
considering stacked concats
fusion would fail for
431 Allocate === 419 424 425 8 1 ( 168 167 26 1 53 97 416 27 1 1 1 ) [[ 432 433 434 441 442 443 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:87 !jvms: Main::foo @ bci:87
1001 CatchProj === 1000 [[ 1012 ]] #0@bci -1 !jvms: Main::foo @ bci:185
1000 Catch === 995 996 [[ 1001 1002 ]] !jvms: Main::foo @ bci:185
995 Proj === 981 [[ 1000 ]] #0 !jvms: Main::foo @ bci:185
981 CallStaticJava === 987 965 966 8 1 ( 994 980 1 1 541 1 1 1 1 ) [[ 995 996 997 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:185 !jvms: Main::foo @ bci:185
970 CatchProj === 969 [[ 986 ]] #0@bci -1 !jvms: Main::foo @ bci:177
969 Catch === 964 965 [[ 970 971 ]] !jvms: Main::foo @ bci:177
964 Proj === 950 [[ 969 ]] #0 !jvms: Main::foo @ bci:177
950 CallStaticJava === 956 945 946 8 1 ( 963 937 1 1 541 1 1 1 1 ) [[ 964 965 966 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:177 !jvms: Main::foo @ bci:177
940 CatchProj === 939 [[ 955 ]] #0@bci -1 !jvms: Main::foo @ bci:174
939 Catch === 933 934 [[ 940 941 ]] !jvms: Main::foo @ bci:174
933 Proj === 919 [[ 939 ]] #0 !jvms: Main::foo @ bci:174
919 CallStaticJava === 925 914 915 8 1 ( 932 1 1 541 1 1 1 1 742 ) [[ 933 934 935 937 946 945 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:174 !jvms: Main::foo @ bci:174
909 CatchProj === 908 [[ 924 ]] #0@bci -1 !jvms: Main::foo @ bci:171
908 Catch === 902 903 [[ 909 910 ]] !jvms: Main::foo @ bci:171
902 Proj === 888 [[ 908 ]] #0 !jvms: Main::foo @ bci:171
888 CallStaticJava === 894 883 884 8 1 ( 901 555 1 1 541 1 1 1 1 742 ) [[ 902 903 904 906 915 914 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:171 !jvms: Main::foo @ bci:171
878 CatchProj === 877 [[ 893 ]] #0@bci -1 !jvms: Main::foo @ bci:167
877 Catch === 871 872 [[ 878 879 ]] !jvms: Main::foo @ bci:167
871 Proj === 857 [[ 877 ]] #0 !jvms: Main::foo @ bci:167
857 CallStaticJava === 863 851 852 8 1 ( 870 856 1 1 541 555 1 1 1 742 ) [[ 871 872 873 875 884 883 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:167 !jvms: Main::foo @ bci:167
846 CatchProj === 845 [[ 862 ]] #0@bci -1 !jvms: Main::foo @ bci:162
845 Catch === 839 840 [[ 846 847 ]] !jvms: Main::foo @ bci:162
839 Proj === 825 [[ 845 ]] #0 !jvms: Main::foo @ bci:162
825 CallStaticJava === 831 795 796 8 1 ( 838 824 1 1 541 555 1 1 1 742 ) [[ 839 840 841 843 852 851 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:162 !jvms: Main::foo @ bci:162
790 CatchProj === 789 [[ 811 ]] #0@bci -1 !jvms: Main::foo @ bci:155
789 Catch === 783 784 [[ 790 791 ]] !jvms: Main::foo @ bci:155
783 Proj === 782 [[ 789 ]] #0 !jvms: Main::foo @ bci:155
782 CallStaticJava === 771 776 777 8 1 ( 761 781 1 1 541 555 1 1 1 742 ) [[ 783 784 785 787 796 795 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:155 !jvms: Main::foo @ bci:155
771 CatchProj === 770 [[ 782 ]] #0@bci -1 !jvms: Main::foo @ bci:150
770 Catch === 765 766 [[ 771 772 ]] !jvms: Main::foo @ bci:150
765 Proj === 764 [[ 770 ]] #0 !jvms: Main::foo @ bci:150
764 CallStaticJava === 758 755 743 8 1 ( 761 1 1 541 555 1 1 1 742 761 ) [[ 765 766 767 777 776 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:150 !jvms: Main::foo @ bci:150
749 CatchProj === 748 [[ 757 ]] #0@bci -1 !jvms: Main::foo @ bci:146
748 Catch === 745 747 [[ 749 750 ]] !jvms: Main::foo @ bci:146
745 Proj === 744 [[ 748 ]] #0 !jvms: Main::foo @ bci:146
744 Allocate === 733 728 729 8 1 ( 168 167 26 1 1 1 541 555 1 1 1 742 ) [[ 745 746 747 754 755 756 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:146 !jvms: Main::foo @ bci:146
733 CatchProj === 732 [[ 744 ]] #0@bci -1 !jvms: Main::foo @ bci:140
732 Catch === 727 728 [[ 733 734 ]] !jvms: Main::foo @ bci:140
727 Proj === 713 [[ 732 ]] #0 !jvms: Main::foo @ bci:140
713 CallStaticJava === 719 708 709 8 1 ( 726 700 1 1 541 555 1 1 1 ) [[ 727 728 729 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:140 !jvms: Main::foo @ bci:140
703 CatchProj === 702 [[ 718 ]] #0@bci -1 !jvms: Main::foo @ bci:137
702 Catch === 696 697 [[ 703 704 ]] !jvms: Main::foo @ bci:137
696 Proj === 682 [[ 702 ]] #0 !jvms: Main::foo @ bci:137
682 CallStaticJava === 688 677 678 8 1 ( 695 1 1 541 555 1 1 1 593 ) [[ 696 697 698 700 709 708 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:137 !jvms: Main::foo @ bci:137
672 CatchProj === 671 [[ 687 ]] #0@bci -1 !jvms: Main::foo @ bci:134
671 Catch === 665 666 [[ 672 673 ]] !jvms: Main::foo @ bci:134
665 Proj === 651 [[ 671 ]] #0 !jvms: Main::foo @ bci:134
651 CallStaticJava === 657 646 647 8 1 ( 664 97 1 1 541 555 1 1 1 593 ) [[ 665 666 667 669 678 677 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:134 !jvms: Main::foo @ bci:134
641 CatchProj === 640 [[ 656 ]] #0@bci -1 !jvms: Main::foo @ bci:130
640 Catch === 634 635 [[ 641 642 ]] !jvms: Main::foo @ bci:130
634 Proj === 633 [[ 640 ]] #0 !jvms: Main::foo @ bci:130
633 CallStaticJava === 622 627 628 8 1 ( 612 632 1 97 541 555 1 1 1 593 ) [[ 634 635 636 638 647 646 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:130 !jvms: Main::foo @ bci:130
622 CatchProj === 621 [[ 633 ]] #0@bci -1 !jvms: Main::foo @ bci:125
621 Catch === 616 617 [[ 622 623 ]] !jvms: Main::foo @ bci:125
616 Proj === 615 [[ 621 ]] #0 !jvms: Main::foo @ bci:125
615 CallStaticJava === 609 606 594 8 1 ( 612 1 97 541 555 1 1 1 593 612 ) [[ 616 617 618 628 627 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:125 !jvms: Main::foo @ bci:125
600 CatchProj === 599 [[ 608 ]] #0@bci -1 !jvms: Main::foo @ bci:121
599 Catch === 596 598 [[ 600 601 ]] !jvms: Main::foo @ bci:121
596 Proj === 595 [[ 599 ]] #0 !jvms: Main::foo @ bci:121
595 Allocate === 584 549 550 8 1 ( 168 167 26 1 1 97 541 555 1 1 1 593 ) [[ 596 597 598 605 606 607 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:121 !jvms: Main::foo @ bci:121
failing with unknown test
582 Bool === _ 581 [[ 583 ]] [ne] !jvms: Main::foo @ bci:115
581 CmpI === _ 580 555 [[ 582 ]] !jvms: Main::foo @ bci:115
580 LoadI === _ 550 579 [[ 581 ]] @java/lang/String:exact+20 *, name=count, idx=6; #int !jvms: String::length @ bci:1 Main::foo @ bci:111
555 ConI === 0 [[ 888 896 857 581 595 825 615 782 633 764 651 744 682 713 1201 ]] #int:32
stacking would fail
considering stacked concats
fusion would succeed (3 0) for Main::foo @ bci:41
484 Phi === 470 467 344 [[ 488 1199 1202 1204 1205 ]] #java/lang/String:NotNull:exact * Oop:java/lang/String:NotNull:exact * !jvms: String::valueOf @ bci:13 Main::foo @ bci:92
359 Phi === 345 341 344 [[ 363 1198 1203 1205 ]] #java/lang/String:NotNull:exact * Oop:java/lang/String:NotNull:exact * !jvms: String::valueOf @ bci:13 Main::foo @ bci:69
150 ConP === 0 [[ 249 232 232 170 1197 1197 1203 1203 1205 1205 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
150 ConP === 0 [[ 249 232 232 170 1197 1197 1203 1203 1205 1205 ]] #java/lang/String:exact * Oop:java/lang/String:exact *
0--> 505 CallStaticJava === 495 500 501 8 1 ( 448 416 53 97 1 27 1 1 1 ) [[ 506 507 508 510 519 518 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:99 !jvms: Main::foo @ bci:99
1--> 523 CallStaticJava === 529 518 519 8 1 ( 536 53 97 1 27 1 1 1 ) [[ 537 538 539 541 550 549 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:102 !jvms: Main::foo @ bci:102
2--> 488 CallStaticJava === 470 442 456 8 1 ( 448 484 53 97 416 27 1 1 1 448 ) [[ 489 490 491 501 500 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:95 !jvms: Main::foo @ bci:95
3--> 431 Allocate === 419 424 425 8 1 ( 168 167 26 1 53 97 416 27 1 1 1 ) [[ 432 433 434 441 442 443 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:87 !jvms: Main::foo @ bci:87
4--> 380 CallStaticJava === 370 375 376 8 1 ( 322 289 53 97 1 303 1 1 1 ) [[ 381 382 383 385 394 393 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:76 !jvms: Main::foo @ bci:76
5--> 398 CallStaticJava === 404 393 394 8 1 ( 411 53 97 1 303 1 1 1 ) [[ 412 413 414 416 425 424 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:79 !jvms: Main::foo @ bci:79
6--> 363 CallStaticJava === 345 316 330 8 1 ( 322 359 53 97 289 303 1 1 1 322 ) [[ 364 365 366 376 375 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:72 !jvms: Main::foo @ bci:72
7--> 305 Allocate === 292 297 298 8 1 ( 168 167 26 1 53 97 289 303 1 1 1 ) [[ 306 307 308 315 316 317 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:64 !jvms: Main::foo @ bci:64
8--> 249 CallStaticJava === 239 244 245 8 1 ( 187 150 53 97 1 164 1 1 1 ) [[ 250 251 252 254 263 262 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:53 !jvms: Main::foo @ bci:53
9--> 271 CallStaticJava === 277 262 263 8 1 ( 284 53 97 1 164 1 1 1 ) [[ 285 286 287 289 298 297 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:56 !jvms: Main::foo @ bci:56
10--> 232 CallStaticJava === 184 181 201 8 1 ( 187 150 53 97 150 164 1 1 1 187 ) [[ 233 234 235 245 244 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:49 !jvms: Main::foo @ bci:49
11--> 170 Allocate === 107 93 156 8 1 ( 168 167 26 1 53 97 150 164 1 1 1 ) [[ 171 172 173 180 181 182 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:41 !jvms: Main::foo @ bci:41
12--> 529 IfTrue === 528 [[ 523 536 ]] #1 !jvms: Main::foo @ bci:102
13--> 404 IfTrue === 403 [[ 398 411 ]] #1 !jvms: Main::foo @ bci:79
14--> 277 IfTrue === 276 [[ 271 284 ]] #1 !jvms: Main::foo @ bci:56
stacking would succeed
considering stacked concats
fusion would fail for
170 Allocate === 107 93 156 8 1 ( 168 167 26 1 53 97 150 164 1 1 1 ) [[ 171 172 173 180 181 182 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:41 !jvms: Main::foo @ bci:41
1001 CatchProj === 1000 [[ 1012 ]] #0@bci -1 !jvms: Main::foo @ bci:185
1000 Catch === 995 996 [[ 1001 1002 ]] !jvms: Main::foo @ bci:185
995 Proj === 981 [[ 1000 ]] #0 !jvms: Main::foo @ bci:185
981 CallStaticJava === 987 965 966 8 1 ( 994 980 1 1 541 1 1 1 1 ) [[ 995 996 997 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:185 !jvms: Main::foo @ bci:185
970 CatchProj === 969 [[ 986 ]] #0@bci -1 !jvms: Main::foo @ bci:177
969 Catch === 964 965 [[ 970 971 ]] !jvms: Main::foo @ bci:177
964 Proj === 950 [[ 969 ]] #0 !jvms: Main::foo @ bci:177
950 CallStaticJava === 956 945 946 8 1 ( 963 937 1 1 541 1 1 1 1 ) [[ 964 965 966 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:177 !jvms: Main::foo @ bci:177
940 CatchProj === 939 [[ 955 ]] #0@bci -1 !jvms: Main::foo @ bci:174
939 Catch === 933 934 [[ 940 941 ]] !jvms: Main::foo @ bci:174
933 Proj === 919 [[ 939 ]] #0 !jvms: Main::foo @ bci:174
919 CallStaticJava === 925 914 915 8 1 ( 932 1 1 541 1 1 1 1 742 ) [[ 933 934 935 937 946 945 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:174 !jvms: Main::foo @ bci:174
909 CatchProj === 908 [[ 924 ]] #0@bci -1 !jvms: Main::foo @ bci:171
908 Catch === 902 903 [[ 909 910 ]] !jvms: Main::foo @ bci:171
902 Proj === 888 [[ 908 ]] #0 !jvms: Main::foo @ bci:171
888 CallStaticJava === 894 883 884 8 1 ( 901 555 1 1 541 1 1 1 1 742 ) [[ 902 903 904 906 915 914 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:171 !jvms: Main::foo @ bci:171
878 CatchProj === 877 [[ 893 ]] #0@bci -1 !jvms: Main::foo @ bci:167
877 Catch === 871 872 [[ 878 879 ]] !jvms: Main::foo @ bci:167
871 Proj === 857 [[ 877 ]] #0 !jvms: Main::foo @ bci:167
857 CallStaticJava === 863 851 852 8 1 ( 870 856 1 1 541 555 1 1 1 742 ) [[ 871 872 873 875 884 883 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:167 !jvms: Main::foo @ bci:167
846 CatchProj === 845 [[ 862 ]] #0@bci -1 !jvms: Main::foo @ bci:162
845 Catch === 839 840 [[ 846 847 ]] !jvms: Main::foo @ bci:162
839 Proj === 825 [[ 845 ]] #0 !jvms: Main::foo @ bci:162
825 CallStaticJava === 831 795 796 8 1 ( 838 824 1 1 541 555 1 1 1 742 ) [[ 839 840 841 843 852 851 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:162 !jvms: Main::foo @ bci:162
790 CatchProj === 789 [[ 811 ]] #0@bci -1 !jvms: Main::foo @ bci:155
789 Catch === 783 784 [[ 790 791 ]] !jvms: Main::foo @ bci:155
783 Proj === 782 [[ 789 ]] #0 !jvms: Main::foo @ bci:155
782 CallStaticJava === 771 776 777 8 1 ( 761 781 1 1 541 555 1 1 1 742 ) [[ 783 784 785 787 796 795 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:155 !jvms: Main::foo @ bci:155
771 CatchProj === 770 [[ 782 ]] #0@bci -1 !jvms: Main::foo @ bci:150
770 Catch === 765 766 [[ 771 772 ]] !jvms: Main::foo @ bci:150
765 Proj === 764 [[ 770 ]] #0 !jvms: Main::foo @ bci:150
764 CallStaticJava === 758 755 743 8 1 ( 761 1 1 541 555 1 1 1 742 761 ) [[ 765 766 767 777 776 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:150 !jvms: Main::foo @ bci:150
749 CatchProj === 748 [[ 757 ]] #0@bci -1 !jvms: Main::foo @ bci:146
748 Catch === 745 747 [[ 749 750 ]] !jvms: Main::foo @ bci:146
745 Proj === 744 [[ 748 ]] #0 !jvms: Main::foo @ bci:146
744 Allocate === 733 728 729 8 1 ( 168 167 26 1 1 1 541 555 1 1 1 742 ) [[ 745 746 747 754 755 756 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:146 !jvms: Main::foo @ bci:146
733 CatchProj === 732 [[ 744 ]] #0@bci -1 !jvms: Main::foo @ bci:140
732 Catch === 727 728 [[ 733 734 ]] !jvms: Main::foo @ bci:140
727 Proj === 713 [[ 732 ]] #0 !jvms: Main::foo @ bci:140
713 CallStaticJava === 719 708 709 8 1 ( 726 700 1 1 541 555 1 1 1 ) [[ 727 728 729 ]] # Static java.io.PrintStream::println void ( java/io/PrintStream:NotNull *, java/lang/String:exact * ) Main::foo @ bci:140 !jvms: Main::foo @ bci:140
703 CatchProj === 702 [[ 718 ]] #0@bci -1 !jvms: Main::foo @ bci:137
702 Catch === 696 697 [[ 703 704 ]] !jvms: Main::foo @ bci:137
696 Proj === 682 [[ 702 ]] #0 !jvms: Main::foo @ bci:137
682 CallStaticJava === 688 677 678 8 1 ( 695 1 1 541 555 1 1 1 593 ) [[ 696 697 698 700 709 708 ]] # Static java.lang.StringBuilder::toString java/lang/String:exact * ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:137 !jvms: Main::foo @ bci:137
672 CatchProj === 671 [[ 687 ]] #0@bci -1 !jvms: Main::foo @ bci:134
671 Catch === 665 666 [[ 672 673 ]] !jvms: Main::foo @ bci:134
665 Proj === 651 [[ 671 ]] #0 !jvms: Main::foo @ bci:134
651 CallStaticJava === 657 646 647 8 1 ( 664 97 1 1 541 555 1 1 1 593 ) [[ 665 666 667 669 678 677 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, int ) Main::foo @ bci:134 !jvms: Main::foo @ bci:134
641 CatchProj === 640 [[ 656 ]] #0@bci -1 !jvms: Main::foo @ bci:130
640 Catch === 634 635 [[ 641 642 ]] !jvms: Main::foo @ bci:130
634 Proj === 633 [[ 640 ]] #0 !jvms: Main::foo @ bci:130
633 CallStaticJava === 622 627 628 8 1 ( 612 632 1 97 541 555 1 1 1 593 ) [[ 634 635 636 638 647 646 ]] # Static java.lang.StringBuilder::append java/lang/StringBuilder:exact * ( java/lang/StringBuilder:NotNull:exact *, java/lang/String:exact * ) Main::foo @ bci:130 !jvms: Main::foo @ bci:130
622 CatchProj === 621 [[ 633 ]] #0@bci -1 !jvms: Main::foo @ bci:125
621 Catch === 616 617 [[ 622 623 ]] !jvms: Main::foo @ bci:125
616 Proj === 615 [[ 621 ]] #0 !jvms: Main::foo @ bci:125
615 CallStaticJava === 609 606 594 8 1 ( 612 1 97 541 555 1 1 1 593 612 ) [[ 616 617 618 628 627 ]] # Static java.lang.StringBuilder::<init> void ( java/lang/StringBuilder:NotNull:exact * ) Main::foo @ bci:125 !jvms: Main::foo @ bci:125
600 CatchProj === 599 [[ 608 ]] #0@bci -1 !jvms: Main::foo @ bci:121
599 Catch === 596 598 [[ 600 601 ]] !jvms: Main::foo @ bci:121
596 Proj === 595 [[ 599 ]] #0 !jvms: Main::foo @ bci:121
595 Allocate === 584 549 550 8 1 ( 168 167 26 1 1 97 541 555 1 1 1 593 ) [[ 596 597 598 605 606 607 ]] rawptr:NotNull ( int:>=0, java/lang/Object:NotNull *, bool, int ) Main::foo @ bci:121 !jvms: Main::foo @ bci:121
failing with unknown test
582 Bool === _ 581 [[ 583 ]] [ne] !jvms: Main::foo @ bci:115
581 CmpI === _ 580 555 [[ 582 ]] !jvms: Main::foo @ bci:115
580 LoadI === _ 550 579 [[ 581 ]] @java/lang/String:exact+20 *, name=count, idx=6; #int !jvms: String::length @ bci:1 Main::foo @ bci:111
555 ConI === 0 [[ 888 896 857 581 595 825 615 782 633 764 651 744 682 713 1201 ]] #int:32
stacking would fail
Failed at iteration: 17
Length mismatch: 16 <> 32
Expected: "testtesttesttesttesttesttesttest"
Actual: "nullnulltesttest"
Java Version: 23.0-b21-internal-fastdebug
try OSR compilation
470 1 % b Main::foo @ 15 (225 bytes)
{method}
- klass: {other class}
- this oop: 0x0000000604249508
- method holder: 'Main'
- constants: 0x0000000604248e28 constant pool [104] for 'Main' cache=0x00000006042498f8
- access: 0xc100000a private static
- name: 'foo'
- signature: '()V'
- max stack: 3
- max locals: 7
- size of params: 0
- method size: 17
- vtable index: -2
- i2i entry: 0x00002aaaab3541a0
- adapter: 0x0000000004e81178
- compiled entry 0x00002aaaab40242d
- code size: 225
- code start: 0x00000006042493a8
- code end (excl): 0x0000000604249489
- method data: 0x000000060424a308
- checked ex length: 0
- linenumber start: 0x0000000604249489
- localvar length: 8
- localvar start: 0x00000006042494a6
#
# void ( rawptr:BotPTR )
#
#r018 rsi:rsi : parm 0: rawptr:BotPTR
# -- Old rsp -- Framesize: 96 --
#r089 rsp+92: in_preserve
#r088 rsp+88: return address
#r087 rsp+84: in_preserve
#r086 rsp+80: saved fp register
#r085 rsp+76: pad2, stack alignment
#r084 rsp+72: pad2, stack alignment
#r083 rsp+68: Fixed slot 1
#r082 rsp+64: Fixed slot 0
#r105 rsp+60: spill
#r104 rsp+56: spill
#r103 rsp+52: spill
#r102 rsp+48: spill
#r101 rsp+44: spill
#r100 rsp+40: spill
#r099 rsp+36: spill
#r098 rsp+32: spill
#r097 rsp+28: spill
#r096 rsp+24: spill
#r095 rsp+20: spill
#r094 rsp+16: spill
#r093 rsp+12: spill
#r092 rsp+ 8: spill
#r091 rsp+ 4: spill
#r090 rsp+ 0: spill
#
000 N1517: # B1 <- BLOCK HEAD IS JUNK Freq: 1
000 # breakpoint
nop # 3 bytes pad for loops and calls
010 B1: # B76 B2 <- BLOCK HEAD IS JUNK Freq: 1
010 # stack bang
pushq rbp # Save rbp
subq rsp, #80 # Create frame
01c movl R13, [RSI + #16 (8-bit)] # int
020 movl R10, [RSI + #24 (8-bit)] # int
024 movl [rsp + #4], R10 # spill
029 movq RBP, [RSI + #48 (8-bit)] # ptr
02d movq RBX, [RSI + #32 (8-bit)] # ptr
031 movl R11, [RSI + #40 (8-bit)] # int
035 movl [rsp + #16], R11 # spill
03a movq RDI, RSI # spill
03d call_leaf,runtime OSR_migration_end
No JVM State Info
#
04a testq RBP, RBP # ptr
04d je B76 P=0.001000 C=-1.000000
04d
053 B2: # B103 B3 <- B1 Freq: 0.999
053 movq R9, RBP # spill
056 movl R11, [RBP + #8 (8-bit)] # compressed klass ptr
05a cmpl R11, narrowoop: precise klass [J: 0x0000000004f4f988:Constant:exact * # compressed ptr
061 jne,u B103 P=0.000001 C=-1.000000
061
067 B3: # B4 <- B2 Freq: 0.998999
067 movq R8, RBP # spill
06a # checkcastPP of R8
06a
06a B4: # B77 B5 <- B3 B76 Freq: 0.999999
06a testq RBX, RBX # ptr
06d je B77 P=0.001000 C=-1.000000
06d
073 B5: # B103 B6 <- B4 Freq: 0.998999
073 movl R10, [RBX + #8 (8-bit)] # compressed klass ptr
077 cmpl R10, narrowoop: precise klass [J: 0x0000000004f4f988:Constant:exact * # compressed ptr
07e jne,u B103 P=0.000001 C=-1.000000
07e
084 B6: # B7 <- B5 Freq: 0.998998
084 # checkcastPP of RBX
084 movq R10, RBX # spill
087 addq R10, #12 # ptr
08b
08b B7: # B75 B8 <- B6 B77 Freq: 0.999998
08b cmpl R13, [RSP + #4 (32-bit)]
090 jge B75 P=0.016330 C=11451.000000
090
096 B8: # B9 <- B7 Freq: 0.983668
096 movl RCX, R13 # spill
099 incl RCX # int
09b xorl R9, R9 # int
09e xorl RDI, RDI # int
0a0 cmpl RCX, R9
0a3 cmovllt RCX, RDI # max
0a6 cmpl RCX, [RSP + #4 (32-bit)]
0aa movl RDI, [rsp + #4] # spill
0ae cmovlgt RCX, RDI # min
0ae
0b1 B9: # B94 B10 <- B8 B11 Loop: B9-B11 inner pre of N2716 Freq: 1.96733
0b1 testq RBX, RBX # ptr
0b4 je B94 P=0.000001 C=-1.000000
0b4
0ba B10: # B95 B11 <- B9 Freq: 1.96733
0ba movl R11, [R10] # range
0bd cmpl R13, R11 # unsigned
0c0 jnb,u B95 P=0.000001 C=-1.000000
0c0
0c6 B11: # B9 B12 <- B10 Freq: 1.96733
0c6 incl R13 # int
0c9 cmpl R13, RCX
0cc jl,s B9 # loop end P=0.500000 C=11451.000000
0cc
0ce B12: # B15 B13 <- B11 Freq: 0.983664
0ce cmpl RDI, R11
0d1 movl R10, RDI # spill
0d4 cmovlgt R10, R11 # min
0d8 movslq RCX, R13 # i2l
0db movl RAX, R10 # spill
0de decl RAX # int
0e0 movl RDX, #-2147483648 # int
0e5 cmpl R10, RAX
0e8 cmovll RAX, RDX # signed, int
0eb cmpl R13, RAX # cmpLTMask
setlt R10
movzbl R10, R10
negl R10
0f9 movslq RDX, RAX # i2l
0fc subq RDX, RCX # long
0ff addq RDX, #1 # long
103 andq RDX, #-2 # long
107 movl RBP, RDX # l2i
109 andl RBP, R10 # int
10c addl RBP, R13 # int
10f movl R10, RDI # spill
112 cmpl RBP, R10
115 jge,s B15 P=0.500000 C=-1.000000
nop # 1 bytes pad for loops and calls
118 B13: # B96 B14 <- B12 B14 Loop: B13-B14 inner post of N2716 Freq: 0.983663
118 cmpl RBP, R11 # unsigned
11b jnb,u B96 P=0.000001 C=-1.000000
11b
121 B14: # B13 B15 <- B13 Freq: 0.983662
121 incl RBP # int
123 movl R10, RDI # spill
126 cmpl RBP, R10
129 jl,s B13 # loop end P=0.500000 C=11451.000000
129
12b B15: # B78 B16 <- B75 B12 B14 Freq: 0.999993
12b
12b
12b # TLS is in R15
12b movq R11, [R15 + #112 (8-bit)] # ptr
12f movq R10, R11 # spill
132 addq R10, #48 # ptr
136 # TLS is in R15
136 cmpq R10, [R15 + #128 (32-bit)] # raw ptr
13d jnb,u B78 P=0.000100 C=-1.000000
13d
143 B16: # B17 <- B15 Freq: 0.999893
143 # TLS is in R15
143 movq [R15 + #112 (8-bit)], R10 # ptr
147 PREFETCHNTA [R10 + #192 (32-bit)] # Prefetch allocation to non-temporal cache for write
14f movq [R11], 0x0000000000000001 # ptr
156 PREFETCHNTA [R10 + #256 (32-bit)] # Prefetch allocation to non-temporal cache for write
15e movl [R11 + #8 (8-bit)], narrowoop: precise klass [C: 0x0000000004f4f778:Constant:exact * # compressed ptr
166 PREFETCHNTA [R10 + #320 (32-bit)] # Prefetch allocation to non-temporal cache for write
16e movl [R11 + #12 (8-bit)], #16 # int
176 PREFETCHNTA [R10 + #384 (32-bit)] # Prefetch allocation to non-temporal cache for write
17e movl [rsp + #0], R9 # spill
17e
182 B17: # B41 B18 <- B79 B16 Freq: 0.999993
182
182 # checkcastPP of R11
182 movq RBX, R11 # spill
185 addq RBX, #24 # ptr
189 movq R10, R11 # spill
18c addq R10, #16 # ptr
190 movq [rsp + #24], R10 # spill
195 movq [rsp + #8], R11 # spill
19a movl R10, [rsp + #16] # spill
19f negl R10 # int
1a2 movl [rsp + #4], R10 # spill
1a7 movl R10, narrowoop: char[int:4]<ciTypeArray length=4 type=<ciTypeArrayKlass name=[C ident=708 PERM address=0x4f4f778> ident=759 SCAVENGABLE address=0x4fe88c8> * # compressed ptr
1ad decode_heap_oop_not_null R11,R10
1b1 leaq RBP, [R12 + R10 << 3 + #16] (compressed oop addressing) # ptr compressedoopoff32
1b6 movq RDI, RBP # spill
1b9 movq RSI, [rsp + #24] # spill
1be movl RDX, #4 # long (unsigned 32-bit)
1c3 call_leaf_nofp,runtime jshort_disjoint_arraycopy
No JVM State Info
#
1d0 movq RDI, RBP # spill
1d3 movq RSI, RBX # spill
1d6 movl RDX, #4 # long (unsigned 32-bit)
1db call_leaf_nofp,runtime jshort_disjoint_arraycopy
No JVM State Info
#
1e8 movl R11, [rsp + #16] # spill
1ed cmpl R11, #-2147483648
1f4 jne B41 P=0.500000 C=-1.000000
1f4
1fa B18: # B22 <- B17 Freq: 0.499997
1fa movl RBX, #11 # int
1ff movl R10, #16 # int
205 movl R8, #1 # int
20b movl R9, #32 # int
211 movl R11, #32 # int
217 movl [rsp + #44], R10 # spill
21c movl [rsp + #40], R8 # spill
221 movl [rsp + #48], R9 # spill
226 jmp,s B22
nop # 8 bytes pad for loops and calls
230 B19: # B20 <- B20 top-of-loop Freq: 499996
230 incl R8 # int
233
233 B20: # B19 B21 <- B43 B19 Loop: B20-B19 inner Freq: 499996
233 movq RBX, int[int:10]<ciTypeArray length=10 type=<ciTypeArrayKlass name=[I ident=713 PERM address=0x4f4f948> ident=750 SCAVENGABLE address=0x4fe8568> * # ptr
23d movl RBX, [RBX + #16 + R8 << #2] # int
242 cmpl R10, RBX
245 jg,s B19 P=0.999999 C=-1.000000
245
247 B21: # B22 <- B20 Freq: 0.499997
247 addl RCX, R8 # int
24a movl RBX, RCX # spill
24c incl RBX # int
24e addl RCX, #22 # int
251 movl [rsp + #16], R11 # spill
256 movl [rsp + #44], R9 # spill
25b movl [rsp + #40], RDI # spill
25f movl [rsp + #48], RSI # spill
263 movl R11, RCX # spill
263
266 B22: # B101 B23 <- B18 B21 Freq: 0.999993
266 movl R10, #116 # int
26c movq R9, [rsp + #8] # spill
271 movw [R9 + #32 (8-bit)], R10 # char/short
276 movl R8, #101 # int
27c movw [R9 + #34 (8-bit)], R8 # char/short
281 movq R9, java/lang/Class:exact * # ptr
28b movl RBP, [R9 + #116 (8-bit)] # compressed ptr ! Field java/lang/System.out
28f movl R9, #115 # int
295 movq RCX, [rsp + #8] # spill
29a movw [RCX + #36 (8-bit)], R9 # char/short
29f movw [RCX + #38 (8-bit)], R10 # char/short
2a4 movw [RCX + #40 (8-bit)], R10 # char/short
2a9 movw [RCX + #42 (8-bit)], R8 # char/short
2ae movw [RCX + #44 (8-bit)], R9 # char/short
2b3 movw [RCX + #46 (8-bit)], R10 # char/short
2b8 testl R11, R11
2bb jl B101 P=0.000001 C=-1.000000
2bb
2c1 B23: # B82 B24 <- B22 Freq: 0.999992
2c1 cmpl R11, #524288 # unsigned
2c8 jnbe,u B82 P=0.000001 C=-1.000000
2c8
2ce B24: # B83 B25 <- B23 Freq: 0.999991
2ce movl [rsp + #20], R11 # spill
2d3 # TLS is in R15
2d3 movq R8, [R15 + #112 (8-bit)] # ptr
2d7 movslq R10, RBX # i2l
2da salq R10, #1
2dd addq R10, #65 # long
2e1 andq R10, #-8 # long
2e5 movq R11, R8 # spill
2e8 addq R11, R10 # ptr
2eb # TLS is in R15
2eb cmpq R11, [R15 + #128 (32-bit)] # raw ptr
2f2 jnb,u B83 P=0.000100 C=-1.000000
2f2
2f8 B25: # B26 <- B24 Freq: 0.999891
2f8 # TLS is in R15
2f8 movq [R15 + #112 (8-bit)], R11 # ptr
2fc PREFETCHNTA [R11 + #192 (32-bit)] # Prefetch allocation to non-temporal cache for write
304 movq [R8], 0x0000000000000001 # ptr
30b PREFETCHNTA [R11 + #256 (32-bit)] # Prefetch allocation to non-temporal cache for write
313 movl [R8 + #8 (8-bit)], narrowoop: precise klass [C: 0x0000000004f4f778:Constant:exact * # compressed ptr
31b movl R10, [rsp + #20] # spill
320 movl [R8 + #12 (8-bit)], R10 # int
324 PREFETCHNTA [R11 + #320 (32-bit)] # Prefetch allocation to non-temporal cache for write
32c PREFETCHNTA [R11 + #384 (32-bit)] # Prefetch allocation to non-temporal cache for write
32c
334 B26: # B31 B27 <- B84 B25 Freq: 0.999992
334
334 MEMBAR-storestore (empty encoding)
334 # checkcastPP of R8
334 movq RSI, R8 # spill
337 addq RSI, #16 # ptr
33b movq [rsp + #32], R8 # spill
340 movl RDX, #21 # long (unsigned 32-bit)
345 movq RDI, char[int:21]<ciTypeArray length=21 type=<ciTypeArrayKlass name=[C ident=708 PERM address=0x4f4f778> ident=754 SCAVENGABLE address=0x4fe86e8> * # ptr
34f addq RDI, #16 # ptr
353 call_leaf_nofp,runtime jshort_disjoint_arraycopy
No JVM State Info
#
360 movl R10, [rsp + #16] # spill
365 cmpl R10, #-2147483648
36c je,s B31 P=0.500000 C=-1.000000
36c
36e B27: # B30 B28 <- B26 Freq: 0.499996
36e testl R10, R10
371 jge,s B30 P=0.500000 C=-1.000000
371
373 B28: # B29 <- B27 Freq: 0.249998
373 movl R11, #45 # int
373
379 B29: # B33 <- B28 B30 Freq: 0.499996
379 movl RCX, [rsp + #20] # spill
37d jmp,s B33
37d
37f B30: # B29 <- B27 Freq: 0.249998
37f movq [rsp - #8], rax # 32-bit mem-mem spill
movl rax, [rsp + #16]
movl [rsp + #4], rax
movq rax, [rsp - #8]
391 xorl R11, R11 # int
394 jmp,s B29
394
396 B31: # B36 <- B26 Freq: 0.499996
396 movq RSI, [rsp + #32] # spill
39b addq RSI, #58 # ptr
39f movq RDI, char[int:11]<ciTypeArray length=11 type=<ciTypeArrayKlass name=[C ident=708 PERM address=0x4f4f778> ident=756 SCAVENGABLE address=0x4fe87a8> * # ptr
3a9 addq RDI, #16 # ptr
3ad movl RDX, #11 # long (unsigned 32-bit)
3b2 call_leaf_nofp,runtime jshort_disjoint_arraycopy
No JVM State Info
#
3bf jmp,s B36
nop # 15 bytes pad for loops and calls
3d0 B32: # B33 <- B33 top-of-loop Freq: 4.49996
3d0 decl RCX # int
3d2 movl [rsp + #4], R8 # spill
3d2
3d7 B33: # B32 B34 <- B29 B32 Loop: B33-B32 inner Freq: 4.99996
3d7 movl R9, [rsp + #4] # spill
3dc sarl R9, #31
3e0 movslq R10, [RSP + #4 (32-bit)] # int -> long
3e5 imulq R10, R10, #1717986919 # long
3ec sarq R10, #34
3f0 movl R10, R10 # l2i
3f3 movl R8, R10 # spill
3f6 subl R8, R9 # int
3f9 movl RDI, R8 # spill
3fc sall RDI, #3
3ff movl RDX, R8 # spill
402 sall RDX, #1
404 addl RDX, RDI # int
406 movl RBX, [rsp + #4] # spill
40a subl RBX, RDX # int
40c addl RBX, #48 # int
40f movq RDI, [rsp + #32] # spill
414 movw [RDI + #14 + RCX << #1], RBX # char/short
419 cmpl R10, R9
41c jne,s B32 P=0.900000 C=-1.000000
41c
41e B34: # B36 B35 <- B33 Freq: 0.499996
41e testl R11, R11
421 je,s B36 P=0.500000 C=-1.000000
421
423 B35: # B36 <- B34 Freq: 0.249998
423 addl RCX, #-2 # int
426 movw [RDI + #16 + RCX << #1], R11 # char/short
426
42c B36: # B80 B37 <- B35 B34 B31 Freq: 0.999992
42c # TLS is in R15
42c movq R10, [R15 + #112 (8-bit)] # ptr
430 movq RDX, R10 # spill
433 addq R10, #32 # ptr
437 # TLS is in R15
437 cmpq R10, [R15 + #128 (32-bit)] # raw ptr
43e jnb,u B80 P=0.000100 C=-1.000000
43e
444 B37: # B38 <- B36 Freq: 0.999892
444 # TLS is in R15
444 movq [R15 + #112 (8-bit)], R10 # ptr
448 PREFETCHNTA [R10 + #192 (32-bit)] # Prefetch allocation to non-temporal cache for write
450 movl R11, narrowoop: precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # compressed ptr
456 movq R10, [R12 + R11 << 3 + #176] (compressed oop addressing) # ptr
45e movq [RDX], R10 # ptr
461 movl [RDX + #8 (8-bit)], narrowoop: precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # compressed ptr
468 movl [RDX + #12 (8-bit)], R12 # int (R12_heapbase==0)
46c movq [RDX + #16 (8-bit)], R12 # long (R12_heapbase==0)
470 movq [RDX + #24 (8-bit)], R12 # long (R12_heapbase==0)
470
474 B38: # B97 B39 <- B81 B37 Freq: 0.999992
474
474 MEMBAR-storestore (empty encoding)
474 # checkcastPP of RDX
474 movl R10, [rsp + #20] # spill
479 movl [RDX + #20 (8-bit)], R10 # int ! Field java/lang/String.count
47d movq R10, [rsp + #32] # spill
482 encode_heap_oop_not_null R10,R10
5a4 movl [RDX + #12 (8-bit)], R10 # compressed ptr ! Field java/lang/String.value
5a8 testl RBP, RBP # compressed ptr
5aa je B97 P=0.000001 C=-1.000000
5aa
5b0 B39: # B114 B40 <- B38 Freq: 0.999991
5b0 decode_heap_oop_not_null RSI,RBP
nop # 3 bytes pad for loops and calls
5b7 call,static java.io.PrintStream::println
# Main::foo @ bci:140 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=#32 L[4]=_ L[5]=_ L[6]=_
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{[8]=Oop [24]=Derived_oop_[8] off=1468}
5bc
5bc B40: # B46 <- B39 Freq: 0.999971
# Block is sole successor of call
5bc xorl R9, R9 # int
5bf jmp,s B46
5bf
5c1 B41: # B44 B42 <- B17 Freq: 0.499997
5c1 testl R11, R11
5c4 jge,s B44 P=0.500000 C=-1.000000
5c4
5c6 B42: # B43 <- B41 Freq: 0.249998
5c6 movl R10, [rsp + #4] # spill
5cb movl RCX, #1 # int
5cb
5d0 B43: # B20 <- B42 B44 Freq: 0.499997
5d0 xorl R8, R8 # int
5d3 movl R9, #16 # int
5d9 movl RDI, #1 # int
5de movl RSI, #32 # int
5e3 jmp B20
5e3
5e8 B44: # B43 <- B41 Freq: 0.249998
5e8 movl R10, R11 # spill
5eb xorl RCX, RCX # int
5ed jmp,s B43
nop # 1 bytes pad for loops and calls
5f0 B45: # B46 <- B46 top-of-loop Freq: 986865
5f0 movl R10, [rsp + #40] # spill
5f5 incl R10 # int
5f8 movl R9, [rsp + #40] # spill
5fd movl [rsp + #40], R10 # spill
5fd
602 B46: # B45 B47 <- B40 B45 Loop: B46-B45 inner Freq: 986866
602 movq R10, int[int:10]<ciTypeArray length=10 type=<ciTypeArrayKlass name=[I ident=713 PERM address=0x4f4f948> ident=750 SCAVENGABLE address=0x4fe8568> * # ptr
60c movl R10, [R10 + #16 + R9 << #2] # int
611 cmpl R10, #16
615 jl,s B45 P=0.999999 C=-1.000000
615
617 B47: # B102 B48 <- B46 Freq: 0.999971
617 movq R10, java/lang/Class:exact * # ptr
621 movl R10, [R10 + #116 (8-bit)] # compressed ptr ! Field java/lang/System.out
625 movl [rsp + #16], R10 # spill
62a movl RBP, R9 # spill
62d addl RBP, #18 # int
630 testl RBP, RBP
632 jl B102 P=0.000001 C=-1.000000
632
638 B48: # B102 B49 <- B47 Freq: 0.99997
638 movl R10, R9 # spill
63b addl R10, #22 # int
63f testl R10, R10
642 jl B102 P=0.000001 C=-1.000000
642
648 B49: # B51 <- B48 Freq: 0.999969
648 xorl R11, R11 # int
64b jmp,s B51
nop # 3 bytes pad for loops and calls
650 B50: # B51 <- B51 top-of-loop Freq: 986863
650 incl R11 # int
653
653 B51: # B50 B52 <- B49 B50 Loop: B51-B50 inner Freq: 986864
653 movq R10, int[int:10]<ciTypeArray length=10 type=<ciTypeArrayKlass name=[I ident=713 PERM address=0x4f4f948> ident=750 SCAVENGABLE address=0x4fe8568> * # ptr
65d movl R10, [R10 + #16 + R11 << #2] # int
662 cmpl R10, #32
666 jl,s B50 P=0.999999 C=-1.000000
666
668 B52: # B102 B53 <- B51 Freq: 0.999969
668 addl R9, R11 # int
66b movl R10, R9 # spill
66e addl R10, #23 # int
672 testl R10, R10
675 jl B102 P=0.000001 C=-1.000000
675
67b B53: # B87 B54 <- B52 Freq: 0.999968
67b cmpl R10, #524288 # unsigned
682 jnbe,u B87 P=0.000001 C=-1.000000
682
688 B54: # B88 B55 <- B53 Freq: 0.999967
688 movl [rsp + #4], R10 # spill
68d # TLS is in R15
68d movq RBX, [R15 + #112 (8-bit)] # ptr
691 incl R9 # int
694 movslq R10, R9 # i2l
697 salq R10, #1
69a addq R10, #67 # long
69e andq R10, #-8 # long
6a2 movq R11, RBX # spill
6a5 addq R11, R10 # ptr
6a8 # TLS is in R15
6a8 cmpq R11, [R15 + #128 (32-bit)] # raw ptr
6af jnb,u B88 P=0.000100 C=-1.000000
6af
6b5 B55: # B56 <- B54 Freq: 0.999867
6b5 # TLS is in R15
6b5 movq [R15 + #112 (8-bit)], R11 # ptr
6b9 PREFETCHNTA [R11 + #192 (32-bit)] # Prefetch allocation to non-temporal cache for write
6c1 movq [RBX], 0x0000000000000001 # ptr
6c8 PREFETCHNTA [R11 + #256 (32-bit)] # Prefetch allocation to non-temporal cache for write
6d0 movl [RBX + #8 (8-bit)], narrowoop: precise klass [C: 0x0000000004f4f778:Constant:exact * # compressed ptr
6d7 movl R8, [rsp + #4] # spill
6dc movl [RBX + #12 (8-bit)], R8 # int
6e0 PREFETCHNTA [R11 + #320 (32-bit)] # Prefetch allocation to non-temporal cache for write
6e8 PREFETCHNTA [R11 + #384 (32-bit)] # Prefetch allocation to non-temporal cache for write
6e8
6f0 B56: # B58 <- B89 B55 Freq: 0.999968
6f0
6f0 MEMBAR-storestore (empty encoding)
6f0 # checkcastPP of RBX
6f0 movq RSI, RBX # spill
6f3 addq RSI, #16 # ptr
6f7 movl RDX, #17 # long (unsigned 32-bit)
6fc movq RDI, char[int:17]<ciTypeArray length=17 type=<ciTypeArrayKlass name=[C ident=708 PERM address=0x4f4f778> ident=757 SCAVENGABLE address=0x4fe8808> * # ptr
706 addq RDI, #16 # ptr
70a call_leaf_nofp,runtime jshort_disjoint_arraycopy
No JVM State Info
#
717 xorl R9, R9 # int
71a jmp,s B58
nop # 4 bytes pad for loops and calls
720 B57: # B58 <- B58 top-of-loop Freq: 8.99971
720 movl R9, R10 # spill
723 sarl R9, #31
727 decl RBP # int
729 movl [rsp + #44], R10 # spill
729
72e B58: # B57 B59 <- B56 B57 Loop: B58-B57 inner Freq: 9.99968
72e movslq R10, [RSP + #44 (32-bit)] # int -> long
733 imulq R10, R10, #1717986919 # long
73a sarq R10, #34
73e movl R11, R10 # l2i
741 movl R10, R11 # spill
744 subl R10, R9 # int
747 movl R8, R10 # spill
74a sall R8, #3
74e movl RDI, R10 # spill
751 sall RDI, #1
753 addl RDI, R8 # int
756 movl RCX, [rsp + #44] # spill
75a subl RCX, RDI # int
75c addl RCX, #48 # int
75f movw [RBX + #14 + RBP << #1], RCX # char/short
764 cmpl R11, R9
767 jne,s B57 P=0.900000 C=-1.000000
767
769 B59: # B61 <- B58 Freq: 0.999968
769 movslq R10, [RSP + #40 (32-bit)] # int -> long
76e movl R9, [rsp + #48] # spill
773 movw [RBX + #50 + R10 << #1], R9 # char/short
779 movl R8, #62 # int
77f movl R11, #60 # int
785 movw [RBX + #52 + R10 << #1], R11 # char/short
78b movw [RBX + #54 + R10 << #1], R8 # char/short
791 movw [RBX + #56 + R10 << #1], R9 # char/short
797 movl RCX, [rsp + #4] # spill
79b movq RBP, RBX # spill
79e jmp,s B61
79e
7a0 B60: # B61 <- B61 top-of-loop Freq: 8.99971
7a0 movl R8, R10 # spill
7a3 sarl R8, #31
7a7 decl RCX # int
7a9 movl [rsp + #0], R8 # spill
7ad movl R9, R10 # spill
7ad
7b0 B61: # B60 B62 <- B59 B60 Loop: B61-B60 inner Freq: 9.99968
7b0 movl R8, R9 # spill
7b3 movslq R10, R9 # i2l
7b6 imulq R10, R10, #1717986919 # long
7bd sarq R10, #34
7c1 movl R11, R10 # l2i
7c4 movl R10, R11 # spill
7c7 subl R10, [RSP + #0 (32-bit)] # int
7cb movl R9, R10 # spill
7ce sall R9, #3
7d2 movl RBX, R10 # spill
7d5 sall RBX, #1
7d7 addl RBX, R9 # int
7da subl R8, RBX # int
7dd addl R8, #48 # int
7e1 movw [RBP + #14 + RCX << #1], R8 # char/short
7e7 cmpl R11, [RSP + #0 (32-bit)]
7eb jne,s B60 P=0.900000 C=-1.000000
7eb
7ed B62: # B85 B63 <- B61 Freq: 0.999968
7ed # TLS is in R15
7ed movq RDX, [R15 + #112 (8-bit)] # ptr
7f1 movq R10, RDX # spill
7f4 addq R10, #32 # ptr
7f8 # TLS is in R15
7f8 cmpq R10, [R15 + #128 (32-bit)] # raw ptr
7ff jnb,u B85 P=0.000100 C=-1.000000
7ff
805 B63: # B64 <- B62 Freq: 0.999868
805 # TLS is in R15
805 movq [R15 + #112 (8-bit)], R10 # ptr
809 PREFETCHNTA [R10 + #192 (32-bit)] # Prefetch allocation to non-temporal cache for write
811 movl R10, narrowoop: precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # compressed ptr
817 movq R10, [R12 + R10 << 3 + #176] (compressed oop addressing) # ptr
81f movq [RDX], R10 # ptr
822 movl [RDX + #8 (8-bit)], narrowoop: precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # compressed ptr
829 movl [RDX + #12 (8-bit)], R12 # int (R12_heapbase==0)
82d movq [RDX + #16 (8-bit)], R12 # long (R12_heapbase==0)
831 movq [RDX + #24 (8-bit)], R12 # long (R12_heapbase==0)
831
835 B64: # B98 B65 <- B86 B63 Freq: 0.999968
835
835 MEMBAR-storestore (empty encoding)
835 # checkcastPP of RDX
835 movl R11, [rsp + #4] # spill
83a movl [RDX + #20 (8-bit)], R11 # int ! Field java/lang/String.count
83e encode_heap_oop_not_null R10,RBP
963 movl [RDX + #12 (8-bit)], R10 # compressed ptr ! Field java/lang/String.value
967 movl R10, [rsp + #16] # spill
96c testl R10, R10 # compressed ptr
96f je B98 P=0.000001 C=-1.000000
96f
975 B65: # B115 B66 <- B64 Freq: 0.999967
975 decode_heap_oop_not_null RSI,R10
nop # 2 bytes pad for loops and calls
97b call,static java.io.PrintStream::println
# Main::foo @ bci:177 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=_ L[4]=_ L[5]=_ L[6]=_
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{[8]=Oop [24]=Derived_oop_[8] off=2432}
980
980 B66: # B99 B67 <- B65 Freq: 0.999947
# Block is sole successor of call
980 movq R10, java/lang/Class:exact * # ptr
98a movl R10, [R10 + #116 (8-bit)] # compressed ptr ! Field java/lang/System.out
98e testl R10, R10 # compressed ptr
991 je B99 P=0.000001 C=-1.000000
991
997 B67: # B116 B68 <- B66 Freq: 0.999946
997 decode_heap_oop_not_null RSI,R10
99b movq RDX, java/lang/String:exact * # ptr
nop # 2 bytes pad for loops and calls
9a7 call,static java.io.PrintStream::println
# Main::foo @ bci:185 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=_ L[4]=_ L[5]=_ L[6]=_
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{[8]=Oop [24]=Derived_oop_[8] off=2476}
9ac
9ac B68: # B90 B69 <- B67 Freq: 0.999926
# Block is sole successor of call
9ac # TLS is in R15
9ac movq R11, [R15 + #112 (8-bit)] # ptr
9b0 movq R10, java/lang/Class:exact * # ptr
9ba movl RBP, [R10 + #116 (8-bit)] # compressed ptr ! Field java/lang/System.out
9be movq R10, R11 # spill
9c1 addq R10, #72 # ptr
9c5 # TLS is in R15
9c5 cmpq R10, [R15 + #128 (32-bit)] # raw ptr
9cc jnb,u B90 P=0.000100 C=-1.000000
9cc
9d2 B69: # B70 <- B68 Freq: 0.999826
9d2 # TLS is in R15
9d2 movq [R15 + #112 (8-bit)], R10 # ptr
9d6 PREFETCHNTA [R10 + #192 (32-bit)] # Prefetch allocation to non-temporal cache for write
9de movq [R11], 0x0000000000000001 # ptr
9e5 PREFETCHNTA [R10 + #256 (32-bit)] # Prefetch allocation to non-temporal cache for write
9ed movl [R11 + #8 (8-bit)], narrowoop: precise klass [C: 0x0000000004f4f778:Constant:exact * # compressed ptr
9f5 PREFETCHNTA [R10 + #320 (32-bit)] # Prefetch allocation to non-temporal cache for write
9fd movl [R11 + #12 (8-bit)], #28 # int
a05 PREFETCHNTA [R10 + #384 (32-bit)] # Prefetch allocation to non-temporal cache for write
a05
a0d B70: # B92 B71 <- B91 B69 Freq: 0.999926
a0d
a0d MEMBAR-storestore (empty encoding)
a0d # checkcastPP of R11
a0d movq R13, R11 # spill
a10 addq R13, #38 # ptr
a14 movq RSI, R11 # spill
a17 addq RSI, #16 # ptr
a1b movq [rsp + #0], R11 # spill
a1f movl RBX, #34 # int
a24 movq RDI, char[int:11]<ciTypeArray length=11 type=<ciTypeArrayKlass name=[C ident=708 PERM address=0x4f4f778> ident=751 SCAVENGABLE address=0x4fe85c8> * # ptr
a2e addq RDI, #16 # ptr
a32 movl RDX, #11 # long (unsigned 32-bit)
a37 call_leaf_nofp,runtime jshort_disjoint_arraycopy
No JVM State Info
#
a44 movq RDI, [rsp + #24] # spill
a49 movq RSI, R13 # spill
a4c movl RDX, #16 # long (unsigned 32-bit)
a51 call_leaf_nofp,runtime jshort_disjoint_arraycopy
No JVM State Info
#
a5e movq R10, [rsp + #0] # spill
a62 movw [R10 + #70 (8-bit)], RBX # char/short
a67 # TLS is in R15
a67 movq RDX, [R15 + #112 (8-bit)] # ptr
a6b movq R10, RDX # spill
a6e addq R10, #32 # ptr
a72 # TLS is in R15
a72 cmpq R10, [R15 + #128 (32-bit)] # raw ptr
a79 jnb,u B92 P=0.000100 C=-1.000000
a79
a7f B71: # B72 <- B70 Freq: 0.999826
a7f # TLS is in R15
a7f movq [R15 + #112 (8-bit)], R10 # ptr
a83 PREFETCHNTA [R10 + #192 (32-bit)] # Prefetch allocation to non-temporal cache for write
a8b movl R11, narrowoop: precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # compressed ptr
a91 movq R10, [R12 + R11 << 3 + #176] (compressed oop addressing) # ptr
a99 movq [RDX], R10 # ptr
a9c movl [RDX + #8 (8-bit)], narrowoop: precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # compressed ptr
aa3 movl [RDX + #12 (8-bit)], R12 # int (R12_heapbase==0)
aa7 movq [RDX + #24 (8-bit)], R12 # long (R12_heapbase==0)
aa7
aab B72: # B100 B73 <- B93 B71 Freq: 0.999926
aab movq R10, [rsp + #0] # spill
aaf encode_heap_oop_not_null R11,R10
bd4 movq R10, #120259084288 # long
bde movq [RDX + #16 (8-bit)], R10 # long
be2
be2 MEMBAR-storestore (empty encoding)
be2 # checkcastPP of RDX
be2 movl [RDX + #12 (8-bit)], R11 # compressed ptr ! Field java/lang/String.value
be6 testl RBP, RBP # compressed ptr
be8 je B100 P=0.000001 C=-1.000000
be8
bee B73: # B117 B74 <- B72 Freq: 0.999925
bee decode_heap_oop_not_null RSI,RBP
nop # 1 bytes pad for loops and calls
bf3 call,static java.io.PrintStream::println
# Main::foo @ bci:215 L[0]=_ L[1]=_ L[2]=_ L[3]=_ L[4]=_ L[5]=_ L[6]=_
# OopMap{off=3064}
bf8
bf8 B74: # N1517 <- B73 Freq: 0.999905
# Block is sole successor of call
bf8 addq rsp, 80 # Destroy frame
popq rbp
testl rax, [rip + #offset_to_poll_page] # Safepoint: poll for GC
c03 ret
c03
c04 B75: # B15 <- B7 Freq: 0.0163304
c04 xorl R9, R9 # int
c07 jmp B15
c07
c0c B76: # B4 <- B1 Freq: 0.000999987
c0c xorl R8, R8 # ptr
c0f movq R9, RBP # spill
c12 jmp B4
c12
c17 B77: # B7 <- B4 Freq: 0.000999986
c17 movl R10, NULL+12 # ptr (positive 32-bit)
c1d xorl RBX, RBX # ptr
c1f jmp B7
c1f
c24 B78: # B104 B79 <- B15 Freq: 0.000100016
c24 movl [rsp + #0], R9 # spill
c28 movq RBP, R8 # spill
c2b movq RSI, precise klass [C: 0x0000000004f4f778:Constant:exact * # ptr
c35 movl RDX, #16 # int
nop # 1 bytes pad for loops and calls
c3b call,static wrapper for: _new_array_Java
# Main::foo @ bci:41 L[0]=RBP L[1]=rsp + #16 L[2]=#Ptr0x0000000004f89b88 L[3]=#4 L[4]=_ L[5]=_ L[6]=_
# OopMap{rbp=Oop off=3136}
c40
c40 B79: # B17 <- B78 Freq: 0.000100014
# Block is sole successor of call
c40 movq R11, RAX # spill
c43 jmp B17
c43
c48 B80: # B112 B81 <- B36 Freq: 0.000100016
c48 movq RSI, precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # ptr
nop # 1 bytes pad for loops and calls
c53 call,static wrapper for: _new_instance_Java
# Main::foo @ bci:121 L[0]=_ L[1]=rsp + #16 L[2]=#ScObj0 L[3]=#32 L[4]=_ L[5]=_ L[6]=_ STK[0]=RBP
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{rbp=NarrowOop [8]=Oop [24]=Derived_oop_[8] [32]=Oop off=3160}
c58
c58 B81: # B38 <- B80 Freq: 0.000100014
# Block is sole successor of call
c58 movq RDX, RAX # spill
c5b jmp B38
c5b
c60 B82: # B83 <- B23 Freq: 1.01327e-06
c60 movl [rsp + #20], R11 # spill
c60
c65 B83: # B111 B84 <- B82 B24 Freq: 0.000101029
c65 movq RSI, precise klass [C: 0x0000000004f4f778:Constant:exact * # ptr
c6f movl RDX, [rsp + #20] # spill
c73 call,static wrapper for: _new_array_Java
# Main::foo @ bci:121 L[0]=_ L[1]=rsp + #16 L[2]=#ScObj0 L[3]=#32 L[4]=_ L[5]=_ L[6]=_ STK[0]=RBP
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{rbp=NarrowOop [8]=Oop [24]=Derived_oop_[8] off=3192}
c78
c78 B84: # B26 <- B83 Freq: 0.000101027
# Block is sole successor of call
c78 movq R8, RAX # spill
c7b jmp B26
c7b
c80 B85: # B109 B86 <- B62 Freq: 0.000100013
c80 movq RSI, precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # ptr
nop # 1 bytes pad for loops and calls
c8b call,static wrapper for: _new_instance_Java
# Main::foo @ bci:146 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=#32 L[4]=_ L[5]=_ L[6]=_ STK[0]=rsp + #16
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{rbp=Oop [8]=Oop [16]=NarrowOop [24]=Derived_oop_[8] off=3216}
c90
c90 B86: # B64 <- B85 Freq: 0.000100011
# Block is sole successor of call
c90 movq RDX, RAX # spill
c93 jmp B64
c93
c98 B87: # B88 <- B53 Freq: 1.01325e-06
c98 movl [rsp + #4], R10 # spill
c98
c9d B88: # B108 B89 <- B87 B54 Freq: 0.000101027
c9d movq RSI, precise klass [C: 0x0000000004f4f778:Constant:exact * # ptr
ca7 movl RDX, [rsp + #4] # spill
cab call,static wrapper for: _new_array_Java
# Main::foo @ bci:146 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=#32 L[4]=_ L[5]=_ L[6]=_ STK[0]=rsp + #16
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{[8]=Oop [16]=NarrowOop [24]=Derived_oop_[8] off=3248}
cb0
cb0 B89: # B56 <- B88 Freq: 0.000101025
# Block is sole successor of call
cb0 movq RBX, RAX # spill
cb3 jmp B56
cb3
cb8 B90: # B106 B91 <- B68 Freq: 0.000100009
cb8 movq RSI, precise klass [C: 0x0000000004f4f778:Constant:exact * # ptr
cc2 movl RDX, #28 # int
cc7 call,static wrapper for: _new_array_Java
# Main::foo @ bci:191 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=_ L[4]=_ L[5]=_ L[6]=_ STK[0]=RBP
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{rbp=NarrowOop [8]=Oop [24]=Derived_oop_[8] off=3276}
ccc
ccc B91: # B70 <- B90 Freq: 0.000100007
# Block is sole successor of call
ccc movq R11, RAX # spill
ccf jmp B70
ccf
cd4 B92: # B105 B93 <- B70 Freq: 0.000100009
cd4 movq RSI, precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # ptr
nop # 1 bytes pad for loops and calls
cdf call,static wrapper for: _new_instance_Java
# Main::foo @ bci:191 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=_ L[4]=_ L[5]=_ L[6]=_ STK[0]=RBP
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{rbp=NarrowOop [0]=Oop [8]=Oop off=3300}
ce4
ce4 B93: # B72 <- B92 Freq: 0.000100007
# Block is sole successor of call
ce4 movq RDX, RAX # spill
ce7 jmp B72
ce7
cec B94: # N1517 <- B9 Freq: 1.99346e-06
cec movl RSI, #-10 # int
cf1 movl RBP, R13 # spill
nop # 3 bytes pad for loops and calls
cf7 call,static wrapper for: uncommon_trap(reason='null_check' action='maybe_recompile')
# Main::foo @ bci:24 L[0]=_ L[1]=_ L[2]=_ L[3]=_ L[4]=_ L[5]=_ L[6]=_ STK[0]=#NULL STK[1]=RBP
# OopMap{off=3324}
cfc int3 # ShouldNotReachHere
cfc
d09 B95: # B96 <- B10 Freq: 1.99345e-06
d09 movl RBP, R13 # spill
d09
d0c B96: # N1517 <- B13 B95 Freq: 2.99018e-06
d0c movl RSI, #-28 # int
d11 movq [rsp + #8], RBX # spill
d16 movq [rsp + #24], R8 # spill
d1b movl [rsp + #20], RDI # spill
d1f call,static wrapper for: uncommon_trap(reason='range_check' action='make_not_entrant')
# Main::foo @ bci:24 L[0]=rsp + #24 L[1]=rsp + #16 L[2]=rsp + #8 L[3]=rsp + #20 L[4]=RBP L[5]=_ L[6]=_ STK[0]=rsp + #8 STK[1]=RBP
# OopMap{[8]=Oop [24]=Oop off=3364}
d24 int3 # ShouldNotReachHere
d24
d31 B97: # N1517 <- B38 Freq: 1.01327e-06
d31 movl RSI, #-10 # int
d36 movq RBP, RDX # spill
nop # 2 bytes pad for loops and calls
d3b call,static wrapper for: uncommon_trap(reason='null_check' action='maybe_recompile')
# Main::foo @ bci:140 L[0]=_ L[1]=_ L[2]=_ L[3]=_ L[4]=_ L[5]=_ L[6]=_ STK[0]=#NULL STK[1]=RBP
# OopMap{rbp=Oop off=3392}
d40 int3 # ShouldNotReachHere
d40
d4d B98: # N1517 <- B64 Freq: 1.01325e-06
d4d movl RSI, #-10 # int
d52 movq RBP, RDX # spill
nop # 2 bytes pad for loops and calls
d57 call,static wrapper for: uncommon_trap(reason='null_check' action='maybe_recompile')
# Main::foo @ bci:177 L[0]=_ L[1]=_ L[2]=_ L[3]=_ L[4]=_ L[5]=_ L[6]=_ STK[0]=#NULL STK[1]=RBP
# OopMap{rbp=Oop off=3420}
d5c int3 # ShouldNotReachHere
d5c
d69 B99: # N1517 <- B66 Freq: 1.01323e-06
d69 movl RSI, #-10 # int
nop # 1 bytes pad for loops and calls
d6f call,static wrapper for: uncommon_trap(reason='null_check' action='maybe_recompile')
# Main::foo @ bci:185 L[0]=_ L[1]=_ L[2]=_ L[3]=_ L[4]=_ L[5]=_ L[6]=_ STK[0]=#NULL STK[1]=#Ptr0x0000000004f8b228
# OopMap{off=3444}
d74 int3 # ShouldNotReachHere
d74
d81 B100: # N1517 <- B72 Freq: 1.0132e-06
d81 movl RSI, #-10 # int
d86 movq RBP, RDX # spill
nop # 2 bytes pad for loops and calls
d8b call,static wrapper for: uncommon_trap(reason='null_check' action='maybe_recompile')
# Main::foo @ bci:215 L[0]=_ L[1]=_ L[2]=_ L[3]=_ L[4]=_ L[5]=_ L[6]=_ STK[0]=#NULL STK[1]=RBP
# OopMap{rbp=Oop off=3472}
d90 int3 # ShouldNotReachHere
d90
d9d B101: # N1517 <- B22 Freq: 9.99993e-07
d9d movl RSI, #-52 # int
nop # 1 bytes pad for loops and calls
da3 call,static wrapper for: uncommon_trap(reason='intrinsic' action='make_not_entrant')
# Main::foo @ bci:121 L[0]=_ L[1]=rsp + #16 L[2]=#ScObj0 L[3]=#32 L[4]=_ L[5]=_ L[6]=_ STK[0]=RBP
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{rbp=NarrowOop [8]=Oop off=3496}
da8 int3 # ShouldNotReachHere
da8
db5 B102: # N1517 <- B47 B48 B52 Freq: 2.99991e-06
db5 movl RSI, #-52 # int
dba movl RBP, [rsp + #16] # spill
nop # 1 bytes pad for loops and calls
dbf call,static wrapper for: uncommon_trap(reason='intrinsic' action='make_not_entrant')
# Main::foo @ bci:146 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=#32 L[4]=_ L[5]=_ L[6]=_ STK[0]=RBP
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{rbp=NarrowOop [8]=Oop off=3524}
dc4 int3 # ShouldNotReachHere
dc4
dd1 B103: # N1517 <- B2 B5 Freq: 1.998e-06
dd1 movl RSI, #-83 # int
dd6 movq RBP, RBX # spill
dd9 movl [rsp + #0], R13 # spill
ddd movq [rsp + #8], R9 # spill
nop # 1 bytes pad for loops and calls
de3 call,static wrapper for: uncommon_trap(reason='unreached' action='reinterpret')
# Main::foo @ bci:15 L[0]=rsp + #8 L[1]=rsp + #16 L[2]=RBP L[3]=rsp + #4 L[4]=rsp + #0 L[5]=_ L[6]=_
# OopMap{rbp=Oop [8]=Oop off=3560}
de8 int3 # ShouldNotReachHere
de8
df5 B104: # B118 <- B78 Freq: 1.00016e-09
df5 # exception oop is in rax; no code emitted
df5 movq RSI, RAX # spill
df8 jmp,s B118
df8
dfa B105: # B107 <- B92 Freq: 1.00009e-09
dfa # exception oop is in rax; no code emitted
dfa jmp,s B107
dfa
dfc B106: # B107 <- B90 Freq: 1.00009e-09
dfc # exception oop is in rax; no code emitted
dfc
dfc B107: # B118 <- B106 B105 Freq: 2.00018e-09
dfc movq RSI, RAX # spill
dff jmp,s B118
dff
e01 B108: # B110 <- B88 Freq: 1.01027e-09
e01 # exception oop is in rax; no code emitted
e01 jmp,s B110
e01
e03 B109: # B110 <- B85 Freq: 1.00013e-09
e03 # exception oop is in rax; no code emitted
e03
e03 B110: # B118 <- B108 B109 Freq: 2.0104e-09
e03 movq RSI, RAX # spill
e06 jmp,s B118
e06
e08 B111: # B113 <- B83 Freq: 1.01029e-09
e08 # exception oop is in rax; no code emitted
e08 jmp,s B113
e08
e0a B112: # B113 <- B80 Freq: 1.00016e-09
e0a # exception oop is in rax; no code emitted
e0a
e0a B113: # B118 <- B111 B112 Freq: 2.01045e-09
e0a movq RSI, RAX # spill
e0d jmp,s B118
e0d
e0f B114: # B118 <- B39 Freq: 9.99991e-06
e0f # exception oop is in rax; no code emitted
e0f movq RSI, RAX # spill
e12 jmp,s B118
e12
e14 B115: # B118 <- B65 Freq: 9.99967e-06
e14 # exception oop is in rax; no code emitted
e14 movq RSI, RAX # spill
e17 jmp,s B118
e17
e19 B116: # B118 <- B67 Freq: 9.99946e-06
e19 # exception oop is in rax; no code emitted
e19 movq RSI, RAX # spill
e1c jmp,s B118
e1c
e1e B117: # B118 <- B73 Freq: 9.99925e-06
e1e # exception oop is in rax; no code emitted
e1e movq RSI, RAX # spill
e1e
e21 B118: # N1517 <- B117 B107 B116 B115 B110 B114 B113 B104 Freq: 4.00053e-05
e21 addq rsp, 80 # Destroy frame
popq rbp
e26 jmp rethrow_stub
e26
Failed at iteration: 241
Length mismatch: 16 <> 32
Expected: "testtesttesttesttesttesttesttest"
Actual: "nullnulltesttest"
try standard compilation
559 1 b Main::foo (225 bytes)
{method}
- klass: {other class}
- this oop: 0x0000000604249508
- method holder: 'Main'
- constants: 0x0000000604248e28 constant pool [104] for 'Main' cache=0x00000006042498f8
- access: 0xc100000a private static
- name: 'foo'
- signature: '()V'
- max stack: 3
- max locals: 7
- size of params: 0
- method size: 17
- vtable index: -2
- i2i entry: 0x00002aaaab3541a0
- adapter: 0x0000000004e81178
- compiled entry 0x00002aaaab40242d
- code size: 225
- code start: 0x00000006042493a8
- code end (excl): 0x0000000604249489
- method data: 0x000000060424a308
- checked ex length: 0
- linenumber start: 0x0000000604249489
- localvar length: 8
- localvar start: 0x00000006042494a6
#
# void ( )
#
# -- Old rsp -- Framesize: 80 --
#r089 rsp+76: in_preserve
#r088 rsp+72: return address
#r087 rsp+68: in_preserve
#r086 rsp+64: saved fp register
#r085 rsp+60: pad2, stack alignment
#r084 rsp+56: pad2, stack alignment
#r083 rsp+52: Fixed slot 1
#r082 rsp+48: Fixed slot 0
#r101 rsp+44: spill
#r100 rsp+40: spill
#r099 rsp+36: spill
#r098 rsp+32: spill
#r097 rsp+28: spill
#r096 rsp+24: spill
#r095 rsp+20: spill
#r094 rsp+16: spill
#r093 rsp+12: spill
#r092 rsp+ 8: spill
#r091 rsp+ 4: spill
#r090 rsp+ 0: spill
#
abababab N1: # B1 <- B62 B59 B64 B44 B61 B60 B63 B79 Freq: 1
abababab
000 B1: # B45 B2 <- BLOCK HEAD IS JUNK Freq: 1
000 # stack bang
pushq rbp # Save rbp
subq rsp, #64 # Create frame
00c
00c
00c # TLS is in R15
00c movq RBX, [R15 + #112 (8-bit)] # ptr
010 movq R10, RBX # spill
013 addq R10, #48 # ptr
017 # TLS is in R15
017 cmpq R10, [R15 + #128 (32-bit)] # raw ptr
01e jnb,u B45 P=0.000100 C=-1.000000
01e
024 B2: # B3 <- B1 Freq: 0.9999
024 # TLS is in R15
024 movq [R15 + #112 (8-bit)], R10 # ptr
028 PREFETCHNTA [R10 + #192 (32-bit)] # Prefetch allocation to non-temporal cache for write
030 movq [RBX], 0x0000000000000001 # ptr
037 PREFETCHNTA [R10 + #256 (32-bit)] # Prefetch allocation to non-temporal cache for write
03f movl [RBX + #8 (8-bit)], narrowoop: precise klass [C: 0x0000000004f4f778:Constant:exact * # compressed ptr
046 PREFETCHNTA [R10 + #320 (32-bit)] # Prefetch allocation to non-temporal cache for write
04e movl [RBX + #12 (8-bit)], #16 # int
055 PREFETCHNTA [R10 + #384 (32-bit)] # Prefetch allocation to non-temporal cache for write
055
05d B3: # B5 <- B46 B2 Freq: 1
05d
05d # checkcastPP of RBX
05d movq RBP, RBX # spill
060 addq RBP, #24 # ptr
064 movq R10, RBX # spill
067 addq R10, #16 # ptr
06b movq [rsp + #0], R10 # spill
06f movl R10, narrowoop: char[int:4]<ciTypeArray length=4 type=<ciTypeArrayKlass name=[C ident=708 PERM address=0x4f4f778> ident=759 SCAVENGABLE address=0x51fb3c8> * # compressed ptr
075 decode_heap_oop_not_null R11,R10
079 leaq R13, [R12 + R10 << 3 + #16] (compressed oop addressing) # ptr compressedoopoff32
07e movq RDI, R13 # spill
081 movq RSI, [rsp + #0] # spill
085 movl RDX, #4 # long (unsigned 32-bit)
08a call_leaf_nofp,runtime jshort_disjoint_arraycopy
No JVM State Info
#
097 movq RDI, R13 # spill
09a movq RSI, RBP # spill
09d movl RDX, #4 # long (unsigned 32-bit)
0a2 call_leaf_nofp,runtime jshort_disjoint_arraycopy
No JVM State Info
#
0af xorl RDI, RDI # int
0b1 movl R11, #16 # int
0b7 xorl R8, R8 # int
0ba jmp,s B5
nop # 4 bytes pad for loops and calls
0c0 B4: # B5 <- B5 top-of-loop Freq: 986894
0c0 incl RDI # int
0c2
0c2 B5: # B4 B6 <- B3 B4 Loop: B5-B4 inner Freq: 986895
0c2 movq R10, int[int:10]<ciTypeArray length=10 type=<ciTypeArrayKlass name=[I ident=713 PERM address=0x4f4f948> ident=750 SCAVENGABLE address=0x51fb068> * # ptr
0cc movl R10, [R10 + #16 + RDI << #2] # int
0d1 testl R10, R10
0d4 jl,s B4 P=0.999999 C=-1.000000
0d4
0d6 B6: # B63 B7 <- B5 Freq: 1
0d6 movl R9, RDI # spill
0d9 addl R9, #22 # int
0dd movl RSI, #116 # int
0e2 movq RCX, RBX # spill
0e5 movw [RBX + #32 (8-bit)], RSI # char/short
0e9 movl R10, #101 # int
0ef movw [RBX + #34 (8-bit)], R10 # char/short
0f4 movq RBX, java/lang/Class:exact * # ptr
0fe movl RDX, [RBX + #116 (8-bit)] # compressed ptr ! Field java/lang/System.out
101 movl [rsp + #28], RDX # spill
105 movl RBX, #115 # int
10a movw [RCX + #36 (8-bit)], RBX # char/short
10e movw [RCX + #38 (8-bit)], RSI # char/short
112 movw [RCX + #40 (8-bit)], RSI # char/short
116 movw [RCX + #42 (8-bit)], R10 # char/short
11b movw [RCX + #44 (8-bit)], RBX # char/short
11f movw [RCX + #46 (8-bit)], RSI # char/short
123 testl R9, R9
126 jl B63 P=0.000001 C=-1.000000
126
12c B7: # B49 B8 <- B6 Freq: 0.999999
12c movslq RBP, RDI # i2l
12f salq RBP, #1
132 cmpl R9, #524288 # unsigned
139 jnbe,u B49 P=0.000001 C=-1.000000
139
13f B8: # B49 B9 <- B7 Freq: 0.999998
13f # TLS is in R15
13f movq R10, [R15 + #112 (8-bit)] # ptr
143 movq RBX, RBP # spill
146 addq RBX, #67 # long
14a andq RBX, #-8 # long
14e movq RDI, R10 # spill
151 addq RDI, RBX # ptr
154 # TLS is in R15
154 cmpq RDI, [R15 + #128 (32-bit)] # raw ptr
15b jnb,u B49 P=0.000100 C=-1.000000
15b
161 B9: # B10 <- B8 Freq: 0.999898
161 # TLS is in R15
161 movq [R15 + #112 (8-bit)], RDI # ptr
165 PREFETCHNTA [RDI + #192 (32-bit)] # Prefetch allocation to non-temporal cache for write
16c movq [R10], 0x0000000000000001 # ptr
173 PREFETCHNTA [RDI + #256 (32-bit)] # Prefetch allocation to non-temporal cache for write
17a movl [R10 + #8 (8-bit)], narrowoop: precise klass [C: 0x0000000004f4f778:Constant:exact * # compressed ptr
182 movl [R10 + #12 (8-bit)], R9 # int
186 PREFETCHNTA [RDI + #320 (32-bit)] # Prefetch allocation to non-temporal cache for write
18d PREFETCHNTA [RDI + #384 (32-bit)] # Prefetch allocation to non-temporal cache for write
194 movq [rsp + #8], RCX # spill
199 movl [rsp + #16], R11 # spill
19e movl [rsp + #20], R8 # spill
1a3 movl [rsp + #24], R9 # spill
1a3
1a8 B10: # B47 B11 <- B50 B9 Freq: 0.999999
1a8
1a8 MEMBAR-storestore (empty encoding)
1a8 # checkcastPP of R10
1a8 movq RSI, R10 # spill
1ab addq RSI, #16 # ptr
1af movq [rsp + #32], R10 # spill
1b4 movl R13, #48 # int
1ba movl RDX, #21 # long (unsigned 32-bit)
1bf movq RDI, char[int:21]<ciTypeArray length=21 type=<ciTypeArrayKlass name=[C ident=708 PERM address=0x4f4f778> ident=754 SCAVENGABLE address=0x51fb1e8> * # ptr
1c9 addq RDI, #16 # ptr
1cd call_leaf_nofp,runtime jshort_disjoint_arraycopy
No JVM State Info
#
1da movq R10, [rsp + #32] # spill
1df movw [R10 + #58 + RBP], R13 # char/short
1e5 # TLS is in R15
1e5 movq RDX, [R15 + #112 (8-bit)] # ptr
1e9 movq R10, RDX # spill
1ec addq R10, #32 # ptr
1f0 # TLS is in R15
1f0 cmpq R10, [R15 + #128 (32-bit)] # raw ptr
1f7 jnb,u B47 P=0.000100 C=-1.000000
1f7
1fd B11: # B12 <- B10 Freq: 0.999899
1fd # TLS is in R15
1fd movq [R15 + #112 (8-bit)], R10 # ptr
201 PREFETCHNTA [R10 + #192 (32-bit)] # Prefetch allocation to non-temporal cache for write
209 movl R10, narrowoop: precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # compressed ptr
20f movq R10, [R12 + R10 << 3 + #176] (compressed oop addressing) # ptr
217 movq [RDX], R10 # ptr
21a movl [RDX + #8 (8-bit)], narrowoop: precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # compressed ptr
221 movl [RDX + #12 (8-bit)], R12 # int (R12_heapbase==0)
225 movq [RDX + #16 (8-bit)], R12 # long (R12_heapbase==0)
229 movq [RDX + #24 (8-bit)], R12 # long (R12_heapbase==0)
229
22d B12: # B59 B13 <- B48 B11 Freq: 0.999999
22d
22d MEMBAR-storestore (empty encoding)
22d # checkcastPP of RDX
22d movl R11, [rsp + #24] # spill
232 movl [RDX + #20 (8-bit)], R11 # int ! Field java/lang/String.count
236 movq R10, [rsp + #32] # spill
23b encode_heap_oop_not_null R10,R10
35d movl [RDX + #12 (8-bit)], R10 # compressed ptr ! Field java/lang/String.value
361 movl R11, [rsp + #28] # spill
366 testl R11, R11 # compressed ptr
369 je B59 P=0.000001 C=-1.000000
369
36f B13: # B75 B14 <- B12 Freq: 0.999998
36f decode_heap_oop_not_null RSI,R11
373 call,static java.io.PrintStream::println
# Main::foo @ bci:140 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=#32 L[4]=_ L[5]=_ L[6]=_
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{[0]=Derived_oop_[8] [8]=Oop off=888}
378
378 B14: # B16 <- B13 Freq: 0.999978
# Block is sole successor of call
378 xorl R8, R8 # int
37b movl R10, #1 # int
381 jmp,s B16
381
383 B15: # B16 <- B16 top-of-loop Freq: 986872
383 movl R11, R10 # spill
386 incl R11 # int
389 movl R8, R10 # spill
38c movl R10, R11 # spill
38c
38f B16: # B15 B17 <- B14 B15 Loop: B16-B15 inner Freq: 986873
38f movq R11, int[int:10]<ciTypeArray length=10 type=<ciTypeArrayKlass name=[I ident=713 PERM address=0x4f4f948> ident=750 SCAVENGABLE address=0x51fb068> * # ptr
399 movl R11, [R11 + #16 + R8 << #2] # int
39e cmpl R11, #16
3a2 jl,s B15 P=0.999999 C=-1.000000
3a2
3a4 B17: # B64 B18 <- B16 Freq: 0.999978
3a4 movq R11, java/lang/Class:exact * # ptr
3ae movl R9, [R11 + #116 (8-bit)] # compressed ptr ! Field java/lang/System.out
3b2 movl [rsp + #32], R9 # spill
3b7 movl RBP, R8 # spill
3ba addl RBP, #18 # int
3bd testl RBP, RBP
3bf jl B64 P=0.000001 C=-1.000000
3bf
3c5 B18: # B64 B19 <- B17 Freq: 0.999977
3c5 movl R11, R8 # spill
3c8 addl R11, #22 # int
3cc testl R11, R11
3cf jl B64 P=0.000001 C=-1.000000
3cf
3d5 B19: # B21 <- B18 Freq: 0.999976
3d5 xorl R11, R11 # int
3d8 jmp,s B21
nop # 6 bytes pad for loops and calls
3e0 B20: # B21 <- B21 top-of-loop Freq: 986870
3e0 incl R11 # int
3e3
3e3 B21: # B20 B22 <- B19 B20 Loop: B21-B20 inner Freq: 986871
3e3 movq R9, int[int:10]<ciTypeArray length=10 type=<ciTypeArrayKlass name=[I ident=713 PERM address=0x4f4f948> ident=750 SCAVENGABLE address=0x51fb068> * # ptr
3ed movl RCX, [R9 + #16 + R11 << #2] # int
3f2 cmpl RCX, #32
3f5 jl,s B20 P=0.999999 C=-1.000000
3f5
3f7 B22: # B64 B23 <- B21 Freq: 0.999976
3f7 addl R8, R11 # int
3fa movl R11, R8 # spill
3fd addl R11, #23 # int
401 testl R11, R11
404 jl B64 P=0.000001 C=-1.000000
404
40a B23: # B53 B24 <- B22 Freq: 0.999975
40a cmpl R11, #524288 # unsigned
411 jnbe,u B53 P=0.000001 C=-1.000000
411
417 B24: # B53 B25 <- B23 Freq: 0.999974
417 # TLS is in R15
417 movq R13, [R15 + #112 (8-bit)] # ptr
41b incl R8 # int
41e movslq R8, R8 # i2l
421 salq R8, #1
424 addq R8, #67 # long
428 andq R8, #-8 # long
42c movq R9, R13 # spill
42f addq R9, R8 # ptr
432 # TLS is in R15
432 cmpq R9, [R15 + #128 (32-bit)] # raw ptr
439 jnb,u B53 P=0.000100 C=-1.000000
439
43f B25: # B26 <- B24 Freq: 0.999874
43f # TLS is in R15
43f movq [R15 + #112 (8-bit)], R9 # ptr
443 PREFETCHNTA [R9 + #192 (32-bit)] # Prefetch allocation to non-temporal cache for write
44b movq [R13], 0x0000000000000001 # ptr
453 PREFETCHNTA [R9 + #256 (32-bit)] # Prefetch allocation to non-temporal cache for write
45b movl [R13 + #8 (8-bit)], narrowoop: precise klass [C: 0x0000000004f4f778:Constant:exact * # compressed ptr
463 movl [R13 + #12 (8-bit)], R11 # int
467 PREFETCHNTA [R9 + #320 (32-bit)] # Prefetch allocation to non-temporal cache for write
46f PREFETCHNTA [R9 + #384 (32-bit)] # Prefetch allocation to non-temporal cache for write
477 movl [rsp + #24], R10 # spill
47c movl [rsp + #28], R11 # spill
47c
481 B26: # B28 <- B54 B25 Freq: 0.999975
481
481 MEMBAR-storestore (empty encoding)
481 # checkcastPP of R13
481 movq RSI, R13 # spill
484 addq RSI, #16 # ptr
488 movl RDX, #17 # long (unsigned 32-bit)
48d movq RDI, char[int:17]<ciTypeArray length=17 type=<ciTypeArrayKlass name=[C ident=708 PERM address=0x4f4f778> ident=757 SCAVENGABLE address=0x51fb308> * # ptr
497 addq RDI, #16 # ptr
49b call_leaf_nofp,runtime jshort_disjoint_arraycopy
No JVM State Info
#
4a8 xorl R11, R11 # int
4ab jmp,s B28
nop # 3 bytes pad for loops and calls
4b0 B27: # B28 <- B28 top-of-loop Freq: 8.99977
4b0 movl R11, R9 # spill
4b3 sarl R11, #31
4b7 decl RBP # int
4b9 movl [rsp + #16], R9 # spill
4b9
4be B28: # B27 B29 <- B26 B27 Loop: B28-B27 inner Freq: 9.99975
4be movslq R10, [RSP + #16 (32-bit)] # int -> long
4c3 imulq R10, R10, #1717986919 # long
4ca sarq R10, #34
4ce movl R10, R10 # l2i
4d1 movl R9, R10 # spill
4d4 subl R9, R11 # int
4d7 movl R8, R9 # spill
4da sall R8, #3
4de movl RBX, R9 # spill
4e1 sall RBX, #1
4e3 addl RBX, R8 # int
4e6 movl R8, [rsp + #16] # spill
4eb subl R8, RBX # int
4ee addl R8, #48 # int
4f2 movw [R13 + #14 + RBP << #1], R8 # char/short
4f8 cmpl R10, R11
4fb jne,s B27 P=0.900000 C=-1.000000
4fb
4fd B29: # B31 <- B28 Freq: 0.999975
4fd movslq R8, [RSP + #24 (32-bit)] # int -> long
502 movl RBX, #32 # int
507 movw [R13 + #50 + R8 << #1], RBX # char/short
50d movl R10, #62 # int
513 movl R11, #60 # int
519 movw [R13 + #52 + R8 << #1], R11 # char/short
51f movw [R13 + #54 + R8 << #1], R10 # char/short
525 movw [R13 + #56 + R8 << #1], RBX # char/short
52b movl R10, [rsp + #28] # spill
530 jmp,s B31
530
532 B30: # B31 <- B31 top-of-loop Freq: 8.99977
532 movl R9, R11 # spill
535 sarl R9, #31
539 decl R10 # int
53c movl RBX, R11 # spill
53f movl [rsp + #20], R9 # spill
53f
544 B31: # B30 B32 <- B29 B30 Loop: B31-B30 inner Freq: 9.99975
544 movslq R11, RBX # i2l
547 imulq R11, R11, #1717986919 # long
54e sarq R11, #34
552 movl R8, R11 # l2i
555 movl R11, R8 # spill
558 subl R11, [RSP + #20 (32-bit)] # int
55d movl RCX, R11 # spill
560 sall RCX, #3
563 movl R9, R11 # spill
566 sall R9, #1
569 addl R9, RCX # int
56c subl RBX, R9 # int
56f addl RBX, #48 # int
572 movw [R13 + #14 + R10 << #1], RBX # char/short
578 cmpl R8, [RSP + #20 (32-bit)]
57d jne,s B30 P=0.900000 C=-1.000000
57d
57f B32: # B51 B33 <- B31 Freq: 0.999975
57f # TLS is in R15
57f movq RDX, [R15 + #112 (8-bit)] # ptr
583 movq R10, RDX # spill
586 addq R10, #32 # ptr
58a # TLS is in R15
58a cmpq R10, [R15 + #128 (32-bit)] # raw ptr
591 jnb,u B51 P=0.000100 C=-1.000000
591
597 B33: # B34 <- B32 Freq: 0.999875
597 # TLS is in R15
597 movq [R15 + #112 (8-bit)], R10 # ptr
59b PREFETCHNTA [R10 + #192 (32-bit)] # Prefetch allocation to non-temporal cache for write
5a3 movl R10, narrowoop: precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # compressed ptr
5a9 movq R10, [R12 + R10 << 3 + #176] (compressed oop addressing) # ptr
5b1 movq [RDX], R10 # ptr
5b4 movl [RDX + #8 (8-bit)], narrowoop: precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # compressed ptr
5bb movl [RDX + #12 (8-bit)], R12 # int (R12_heapbase==0)
5bf movq [RDX + #16 (8-bit)], R12 # long (R12_heapbase==0)
5c3 movq [RDX + #24 (8-bit)], R12 # long (R12_heapbase==0)
5c3
5c7 B34: # B60 B35 <- B52 B33 Freq: 0.999975
5c7
5c7 MEMBAR-storestore (empty encoding)
5c7 # checkcastPP of RDX
5c7 movl R11, [rsp + #28] # spill
5cc movl [RDX + #20 (8-bit)], R11 # int ! Field java/lang/String.count
5d0 encode_heap_oop_not_null R10,R13
6f5 movl [RDX + #12 (8-bit)], R10 # compressed ptr ! Field java/lang/String.value
6f9 movl R10, [rsp + #32] # spill
6fe testl R10, R10 # compressed ptr
701 je B60 P=0.000001 C=-1.000000
701
707 B35: # B76 B36 <- B34 Freq: 0.999974
707 decode_heap_oop_not_null RSI,R10
70b call,static java.io.PrintStream::println
# Main::foo @ bci:177 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=_ L[4]=_ L[5]=_ L[6]=_
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{[0]=Derived_oop_[8] [8]=Oop off=1808}
710
710 B36: # B61 B37 <- B35 Freq: 0.999954
# Block is sole successor of call
710 movq R10, java/lang/Class:exact * # ptr
71a movl R10, [R10 + #116 (8-bit)] # compressed ptr ! Field java/lang/System.out
71e testl R10, R10 # compressed ptr
721 je B61 P=0.000001 C=-1.000000
721
727 B37: # B77 B38 <- B36 Freq: 0.999953
727 decode_heap_oop_not_null RSI,R10
72b movq RDX, java/lang/String:exact * # ptr
nop # 2 bytes pad for loops and calls
737 call,static java.io.PrintStream::println
# Main::foo @ bci:185 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=_ L[4]=_ L[5]=_ L[6]=_
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{[0]=Derived_oop_[8] [8]=Oop off=1852}
73c
73c B38: # B55 B39 <- B37 Freq: 0.999933
# Block is sole successor of call
73c # TLS is in R15
73c movq R11, [R15 + #112 (8-bit)] # ptr
740 movq R10, java/lang/Class:exact * # ptr
74a movl RBP, [R10 + #116 (8-bit)] # compressed ptr ! Field java/lang/System.out
74e movq R10, R11 # spill
751 addq R10, #72 # ptr
755 # TLS is in R15
755 cmpq R10, [R15 + #128 (32-bit)] # raw ptr
75c jnb,u B55 P=0.000100 C=-1.000000
75c
762 B39: # B40 <- B38 Freq: 0.999833
762 # TLS is in R15
762 movq [R15 + #112 (8-bit)], R10 # ptr
766 PREFETCHNTA [R10 + #192 (32-bit)] # Prefetch allocation to non-temporal cache for write
76e movq [R11], 0x0000000000000001 # ptr
775 PREFETCHNTA [R10 + #256 (32-bit)] # Prefetch allocation to non-temporal cache for write
77d movl [R11 + #8 (8-bit)], narrowoop: precise klass [C: 0x0000000004f4f778:Constant:exact * # compressed ptr
785 PREFETCHNTA [R10 + #320 (32-bit)] # Prefetch allocation to non-temporal cache for write
78d movl [R11 + #12 (8-bit)], #28 # int
795 PREFETCHNTA [R10 + #384 (32-bit)] # Prefetch allocation to non-temporal cache for write
795
79d B40: # B57 B41 <- B56 B39 Freq: 0.999933
79d
79d MEMBAR-storestore (empty encoding)
79d # checkcastPP of R11
79d movq R13, R11 # spill
7a0 addq R13, #38 # ptr
7a4 movq RSI, R11 # spill
7a7 addq RSI, #16 # ptr
7ab movq [rsp + #16], R11 # spill
7b0 movl RBX, #34 # int
7b5 movq RDI, char[int:11]<ciTypeArray length=11 type=<ciTypeArrayKlass name=[C ident=708 PERM address=0x4f4f778> ident=751 SCAVENGABLE address=0x51fb0c8> * # ptr
7bf addq RDI, #16 # ptr
7c3 movl RDX, #11 # long (unsigned 32-bit)
7c8 call_leaf_nofp,runtime jshort_disjoint_arraycopy
No JVM State Info
#
7d5 movq RDI, [rsp + #0] # spill
7d9 movq RSI, R13 # spill
7dc movl RDX, #16 # long (unsigned 32-bit)
7e1 call_leaf_nofp,runtime jshort_disjoint_arraycopy
No JVM State Info
#
7ee movq R10, [rsp + #16] # spill
7f3 movw [R10 + #70 (8-bit)], RBX # char/short
7f8 # TLS is in R15
7f8 movq RDX, [R15 + #112 (8-bit)] # ptr
7fc movq R10, RDX # spill
7ff addq R10, #32 # ptr
803 # TLS is in R15
803 cmpq R10, [R15 + #128 (32-bit)] # raw ptr
80a jnb,u B57 P=0.000100 C=-1.000000
80a
810 B41: # B42 <- B40 Freq: 0.999833
810 # TLS is in R15
810 movq [R15 + #112 (8-bit)], R10 # ptr
814 PREFETCHNTA [R10 + #192 (32-bit)] # Prefetch allocation to non-temporal cache for write
81c movl R11, narrowoop: precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # compressed ptr
822 movq R10, [R12 + R11 << 3 + #176] (compressed oop addressing) # ptr
82a movq [RDX], R10 # ptr
82d movl [RDX + #8 (8-bit)], narrowoop: precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # compressed ptr
834 movl [RDX + #12 (8-bit)], R12 # int (R12_heapbase==0)
838 movq [RDX + #24 (8-bit)], R12 # long (R12_heapbase==0)
838
83c B42: # B62 B43 <- B58 B41 Freq: 0.999933
83c movq R10, [rsp + #16] # spill
841 encode_heap_oop_not_null R11,R10
966 movq R10, #120259084288 # long
970 movq [RDX + #16 (8-bit)], R10 # long
974
974 MEMBAR-storestore (empty encoding)
974 # checkcastPP of RDX
974 movl [RDX + #12 (8-bit)], R11 # compressed ptr ! Field java/lang/String.value
978 testl RBP, RBP # compressed ptr
97a je B62 P=0.000001 C=-1.000000
97a
980 B43: # B78 B44 <- B42 Freq: 0.999932
980 decode_heap_oop_not_null RSI,RBP
nop # 3 bytes pad for loops and calls
987 call,static java.io.PrintStream::println
# Main::foo @ bci:215 L[0]=_ L[1]=_ L[2]=_ L[3]=_ L[4]=_ L[5]=_ L[6]=_
# OopMap{off=2444}
98c
98c B44: # N1 <- B43 Freq: 0.999912
# Block is sole successor of call
98c addq rsp, 64 # Destroy frame
popq rbp
testl rax, [rip + #offset_to_poll_page] # Safepoint: poll for GC
997 ret
997
998 B45: # B65 B46 <- B1 Freq: 0.000100017
998 movq RSI, precise klass [C: 0x0000000004f4f778:Constant:exact * # ptr
9a2 movl RDX, #16 # int
9a7 call,static wrapper for: _new_array_Java
# Main::foo @ bci:41 L[0]=#ScObj0 L[1]=#0 L[2]=#Ptr0x00000000052ced68 L[3]=#4 L[4]=_ L[5]=_ L[6]=_
# ScObj0 long[60]={ [0]=#0 , [1]=#0 , [2]=#0 , [3]=#0 , [4]=#0 , [5]=#0 , [6]=#0 , [7]=#0 , [8]=#0 , [9]=#0 , [10]=#0 , [11]=#0 , [12]=#0 , [13]=#0 , [14]=#0 , [15]=#0 , [16]=#0 , [17]=#0 , [18]=#0 , [19]=#0 , [20]=#0 , [21]=#0 , [22]=#0 , [23]=#0 , [24]=#0 , [25]=#0 , [26]=#0 , [27]=#0 , [28]=#0 , [29]=#0 , [30]=#0 , [31]=#0 , [32]=#0 , [33]=#0 , [34]=#0 , [35]=#0 , [36]=#0 , [37]=#0 , [38]=#0 , [39]=#0 , [40]=#0 , [41]=#0 , [42]=#0 , [43]=#0 , [44]=#0 , [45]=#0 , [46]=#0 , [47]=#0 , [48]=#0 , [49]=#0 , [50]=#0 , [51]=#0 , [52]=#0 , [53]=#0 , [54]=#0 , [55]=#0 , [56]=#0 , [57]=#0 , [58]=#0 , [59]=#0 }
# OopMap{off=2476}
9ac
9ac B46: # B3 <- B45 Freq: 0.000100015
# Block is sole successor of call
9ac movq RBX, RAX # spill
9af jmp B3
9af
9b4 B47: # B73 B48 <- B10 Freq: 0.000100016
9b4 movq RSI, precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # ptr
9be movl RBP, [rsp + #28] # spill
nop # 1 bytes pad for loops and calls
9c3 call,static wrapper for: _new_instance_Java
# Main::foo @ bci:121 L[0]=_ L[1]=#0 L[2]=#ScObj0 L[3]=#32 L[4]=_ L[5]=_ L[6]=_ STK[0]=RBP
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{rbp=NarrowOop [0]=Derived_oop_[8] [8]=Oop [28]=NarrowOop [32]=Oop off=2504}
9c8
9c8 B48: # B12 <- B47 Freq: 0.000100014
# Block is sole successor of call
9c8 movq RDX, RAX # spill
9cb jmp B12
9cb
9d0 B49: # B72 B50 <- B7 B8 Freq: 0.00010103
9d0 movl [rsp + #24], R9 # spill
9d5 movl [rsp + #20], R8 # spill
9da movl [rsp + #16], R11 # spill
9df movq [rsp + #8], RCX # spill
9e4 movq RSI, precise klass [C: 0x0000000004f4f778:Constant:exact * # ptr
9ee movl RDX, R9 # spill
nop # 2 bytes pad for loops and calls
9f3 call,static wrapper for: _new_array_Java
# Main::foo @ bci:121 L[0]=_ L[1]=#0 L[2]=#ScObj0 L[3]=#32 L[4]=_ L[5]=_ L[6]=_ STK[0]=rsp + #28
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{[0]=Derived_oop_[8] [8]=Oop [28]=NarrowOop off=2552}
9f8
9f8 B50: # B10 <- B49 Freq: 0.000101028
# Block is sole successor of call
9f8 movq R10, RAX # spill
9fb jmp B10
9fb
a00 B51: # B70 B52 <- B32 Freq: 0.000100014
a00 movq RBP, R13 # spill
a03 movq RSI, precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # ptr
nop # 2 bytes pad for loops and calls
a0f call,static wrapper for: _new_instance_Java
# Main::foo @ bci:146 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=#32 L[4]=_ L[5]=_ L[6]=_ STK[0]=rsp + #32
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{rbp=Oop [0]=Derived_oop_[8] [8]=Oop [32]=NarrowOop off=2580}
a14
a14 B52: # B34 <- B51 Freq: 0.000100012
# Block is sole successor of call
a14 movq R13, RBP # spill
a17 movq RDX, RAX # spill
a1a jmp B34
a1a
a1f B53: # B69 B54 <- B23 B24 Freq: 0.000101027
a1f movl [rsp + #28], R11 # spill
a24 movl [rsp + #24], R10 # spill
a29 movq RSI, precise klass [C: 0x0000000004f4f778:Constant:exact * # ptr
a33 movl RDX, R11 # spill
nop # 1 bytes pad for loops and calls
a37 call,static wrapper for: _new_array_Java
# Main::foo @ bci:146 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=#32 L[4]=_ L[5]=_ L[6]=_ STK[0]=rsp + #32
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{[0]=Derived_oop_[8] [8]=Oop [32]=NarrowOop off=2620}
a3c
a3c B54: # B26 <- B53 Freq: 0.000101025
# Block is sole successor of call
a3c movq R13, RAX # spill
a3f jmp B26
a3f
a44 B55: # B67 B56 <- B38 Freq: 0.00010001
a44 movq RSI, precise klass [C: 0x0000000004f4f778:Constant:exact * # ptr
a4e movl RDX, #28 # int
a53 call,static wrapper for: _new_array_Java
# Main::foo @ bci:191 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=_ L[4]=_ L[5]=_ L[6]=_ STK[0]=RBP
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{rbp=NarrowOop [0]=Derived_oop_[8] [8]=Oop off=2648}
a58
a58 B56: # B40 <- B55 Freq: 0.000100008
# Block is sole successor of call
a58 movq R11, RAX # spill
a5b jmp B40
a5b
a60 B57: # B66 B58 <- B40 Freq: 0.00010001
a60 movq RSI, precise klass java/lang/String: 0x0000000004dacaf8:Constant:exact * # ptr
nop # 1 bytes pad for loops and calls
a6b call,static wrapper for: _new_instance_Java
# Main::foo @ bci:191 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=_ L[4]=_ L[5]=_ L[6]=_ STK[0]=RBP
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{rbp=NarrowOop [8]=Oop [16]=Oop off=2672}
a70
a70 B58: # B42 <- B57 Freq: 0.000100008
# Block is sole successor of call
a70 movq RDX, RAX # spill
a73 jmp B42
a73
a78 B59: # N1 <- B12 Freq: 1.01328e-06
a78 movl RSI, #-10 # int
a7d movq RBP, RDX # spill
nop # 3 bytes pad for loops and calls
a83 call,static wrapper for: uncommon_trap(reason='null_check' action='maybe_recompile')
# Main::foo @ bci:140 L[0]=_ L[1]=_ L[2]=_ L[3]=_ L[4]=_ L[5]=_ L[6]=_ STK[0]=#NULL STK[1]=RBP
# OopMap{rbp=Oop off=2696}
a88 int3 # ShouldNotReachHere
a88
a95 B60: # N1 <- B34 Freq: 1.01325e-06
a95 movl RSI, #-10 # int
a9a movq RBP, RDX # spill
nop # 2 bytes pad for loops and calls
a9f call,static wrapper for: uncommon_trap(reason='null_check' action='maybe_recompile')
# Main::foo @ bci:177 L[0]=_ L[1]=_ L[2]=_ L[3]=_ L[4]=_ L[5]=_ L[6]=_ STK[0]=#NULL STK[1]=RBP
# OopMap{rbp=Oop off=2724}
aa4 int3 # ShouldNotReachHere
aa4
ab1 B61: # N1 <- B36 Freq: 1.01323e-06
ab1 movl RSI, #-10 # int
nop # 1 bytes pad for loops and calls
ab7 call,static wrapper for: uncommon_trap(reason='null_check' action='maybe_recompile')
# Main::foo @ bci:185 L[0]=_ L[1]=_ L[2]=_ L[3]=_ L[4]=_ L[5]=_ L[6]=_ STK[0]=#NULL STK[1]=#Ptr0x00000000052d0408
# OopMap{off=2748}
abc int3 # ShouldNotReachHere
abc
ac9 B62: # N1 <- B42 Freq: 1.01321e-06
ac9 movl RSI, #-10 # int
ace movq RBP, RDX # spill
nop # 2 bytes pad for loops and calls
ad3 call,static wrapper for: uncommon_trap(reason='null_check' action='maybe_recompile')
# Main::foo @ bci:215 L[0]=_ L[1]=_ L[2]=_ L[3]=_ L[4]=_ L[5]=_ L[6]=_ STK[0]=#NULL STK[1]=RBP
# OopMap{rbp=Oop off=2776}
ad8 int3 # ShouldNotReachHere
ad8
ae5 B63: # N1 <- B6 Freq: 1e-06
ae5 movl RSI, #-52 # int
aea movq RBP, RCX # spill
nop # 2 bytes pad for loops and calls
aef call,static wrapper for: uncommon_trap(reason='intrinsic' action='make_not_entrant')
# Main::foo @ bci:121 L[0]=_ L[1]=#0 L[2]=#ScObj0 L[3]=#32 L[4]=_ L[5]=_ L[6]=_ STK[0]=rsp + #28
# ScObj0 java/lang/String={ [value :0]=RBP, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{rbp=Oop [28]=NarrowOop off=2804}
af4 int3 # ShouldNotReachHere
af4
b01 B64: # N1 <- B17 B18 B22 Freq: 2.99993e-06
b01 movl RSI, #-52 # int
b06 movl RBP, [rsp + #32] # spill
nop # 1 bytes pad for loops and calls
b0b call,static wrapper for: uncommon_trap(reason='intrinsic' action='make_not_entrant')
# Main::foo @ bci:146 L[0]=_ L[1]=_ L[2]=#ScObj0 L[3]=#32 L[4]=_ L[5]=_ L[6]=_ STK[0]=RBP
# ScObj0 java/lang/String={ [value :0]=rsp + #8, [offset :1]=#0, [count :2]=#16, [hash :3]=#0 }
# OopMap{rbp=NarrowOop [8]=Oop off=2832}
b10 int3 # ShouldNotReachHere
b10
b1d B65: # B79 <- B45 Freq: 1.00017e-09
b1d # exception oop is in rax; no code emitted
b1d movq RSI, RAX # spill
b20 jmp,s B79
b20
b22 B66: # B68 <- B57 Freq: 1.0001e-09
b22 # exception oop is in rax; no code emitted
b22 jmp,s B68
b22
b24 B67: # B68 <- B55 Freq: 1.0001e-09
b24 # exception oop is in rax; no code emitted
b24
b24 B68: # B79 <- B67 B66 Freq: 2.0002e-09
b24 movq RSI, RAX # spill
b27 jmp,s B79
b27
b29 B69: # B71 <- B53 Freq: 1.01027e-09
b29 # exception oop is in rax; no code emitted
b29 jmp,s B71
b29
b2b B70: # B71 <- B51 Freq: 1.00014e-09
b2b # exception oop is in rax; no code emitted
b2b
b2b B71: # B79 <- B69 B70 Freq: 2.01041e-09
b2b movq RSI, RAX # spill
b2e jmp,s B79
b2e
b30 B72: # B74 <- B49 Freq: 1.0103e-09
b30 # exception oop is in rax; no code emitted
b30 jmp,s B74
b30
b32 B73: # B74 <- B47 Freq: 1.00016e-09
b32 # exception oop is in rax; no code emitted
b32
b32 B74: # B79 <- B72 B73 Freq: 2.01046e-09
b32 movq RSI, RAX # spill
b35 jmp,s B79
b35
b37 B75: # B79 <- B13 Freq: 9.99998e-06
b37 # exception oop is in rax; no code emitted
b37 movq RSI, RAX # spill
b3a jmp,s B79
b3a
b3c B76: # B79 <- B35 Freq: 9.99974e-06
b3c # exception oop is in rax; no code emitted
b3c movq RSI, RAX # spill
b3f jmp,s B79
b3f
b41 B77: # B79 <- B37 Freq: 9.99953e-06
b41 # exception oop is in rax; no code emitted
b41 movq RSI, RAX # spill
b44 jmp,s B79
b44
b46 B78: # B79 <- B43 Freq: 9.99932e-06
b46 # exception oop is in rax; no code emitted
b46 movq RSI, RAX # spill
b46
b49 B79: # N1 <- B65 B78 B68 B77 B76 B71 B75 B74 Freq: 4.00056e-05
b49 addq rsp, 64 # Destroy frame
popq rbp
b4e jmp rethrow_stub
b4e
Failed at iteration: 17
Length mismatch: 16 <> 32
Expected: "testtesttesttesttesttesttesttest"
Actual: "nullnulltesttest"
$ java -version
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b20)
OpenJDK 64-Bit Server VM (build 23.0-b21-internal-fastdebug, mixed mode)
$ java Main
Java Version: 23.0-b21-internal-fastdebug
try OSR compilation
474 1 % b Main::foo @ 15 (225 bytes)
Failed at iteration: 241
Length mismatch: 16 <> 32
Expected: "testtesttesttesttesttesttesttest"
Actual: "nullnulltesttest"
try standard compilation
3769 1 b Main::foo (225 bytes)
Failed at iteration: 17
Length mismatch: 16 <> 32
Expected: "testtesttesttesttesttesttesttest"
Actual: "nullnulltesttest"
$
private static void foo();
flags: ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=7, args_size=0
0: bipush 60
2: newarray long
4: astore_0
5: iconst_0
6: istore_1
7: aload_0
8: astore_2
9: aload_2
10: arraylength
11: istore_3
12: iconst_0
13: istore 4
15: iload 4
17: iload_3
18: if_icmpge 33
21: aload_2
22: iload 4
24: laload
25: lstore 5
27: iinc 4, 1
30: goto 15
33: ldc #2 // String test
35: astore_2
36: aload_2
37: invokevirtual #3 // Method java/lang/String.length:()I
40: istore_3
41: new #4 // class java/lang/StringBuilder
44: dup
45: aload_2
46: invokestatic #5 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
49: invokespecial #6 // Method java/lang/StringBuilder."<init>":(Ljava/lang/String;)V
52: aload_2
53: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
56: invokevirtual #8 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
59: astore_2
60: iload_3
61: iload_3
62: iadd
63: istore_3
64: new #4 // class java/lang/StringBuilder
67: dup
68: aload_2
69: invokestatic #5 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
72: invokespecial #6 // Method java/lang/StringBuilder."<init>":(Ljava/lang/String;)V
75: aload_2
76: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
79: invokevirtual #8 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
82: astore_2
83: iload_3
84: iload_3
85: iadd
86: istore_3
87: new #4 // class java/lang/StringBuilder
90: dup
91: aload_2
92: invokestatic #5 // Method java/lang/String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
95: invokespecial #6 // Method java/lang/StringBuilder."<init>":(Ljava/lang/String;)V
98: aload_2
99: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
102: invokevirtual #8 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
105: astore_2
106: iload_3
107: iload_3
108: iadd
109: istore_3
110: aload_2
111: invokevirtual #3 // Method java/lang/String.length:()I
114: iload_3
115: if_icmpeq 219
118: getstatic #9 // Field java/lang/System.out:Ljava/io/PrintStream;
121: new #4 // class java/lang/StringBuilder
124: dup
125: invokespecial #10 // Method java/lang/StringBuilder."<init>":()V
128: ldc #11 // String Failed at iteration:
130: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
133: iload_1
134: invokevirtual #12 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
137: invokevirtual #8 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
140: invokevirtual #13 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
143: getstatic #9 // Field java/lang/System.out:Ljava/io/PrintStream;
146: new #4 // class java/lang/StringBuilder
149: dup
150: invokespecial #10 // Method java/lang/StringBuilder."<init>":()V
153: ldc #14 // String Length mismatch:
155: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
158: aload_2
159: invokevirtual #3 // Method java/lang/String.length:()I
162: invokevirtual #12 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
165: ldc #15 // String <>
167: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
170: iload_3
171: invokevirtual #12 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
174: invokevirtual #8 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
177: invokevirtual #13 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
180: getstatic #9 // Field java/lang/System.out:Ljava/io/PrintStream;
183: ldc #16 // String Expected: \"testtesttesttesttesttesttesttest\"
185: invokevirtual #13 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
188: getstatic #9 // Field java/lang/System.out:Ljava/io/PrintStream;
191: new #4 // class java/lang/StringBuilder
194: dup
195: invokespecial #10 // Method java/lang/StringBuilder."<init>":()V
198: ldc #17 // String Actual: \"
200: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
203: aload_2
204: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
207: ldc #18 // String \"
209: invokevirtual #7 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
212: invokevirtual #8 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
215: invokevirtual #13 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
218: return
219: iinc 1, 1
222: goto 7
LineNumberTable:
line 3: 0
line 4: 5
line 6: 7
line 11: 33
line 12: 36
line 14: 41
line 15: 60
line 17: 64
line 18: 83
line 20: 87
line 21: 106
line 23: 110
line 24: 118
line 25: 143
line 26: 180
line 28: 188
line 29: 218
line 4: 219
LocalVariableTable:
Start Length Slot Name Signature
27 0 5 duration J
9 24 2 arr$ [J
12 21 3 len$ I
15 18 4 i$ I
36 183 2 s Ljava/lang/String;
41 178 3 len I
7 218 1 i I
5 220 0 durations [J
StackMapTable: number_of_entries = 4
frame_type = 253 /* append */
offset_delta = 7
locals = [ class "[J", int ]
frame_type = 254 /* append */
offset_delta = 7
locals = [ class "[J", int, int ]
frame_type = 248 /* chop */
offset_delta = 17
frame_type = 251 /* same_frame_extended */
offset_delta = 185
public class Main {
private static void foo() {
long[] durations = new long[60];
for (int i = 0; true; i++) {
// this empty for-loop is required to reproduce this bug
for (long duration : durations) {
// do nothing
}
{
String s = "test";
int len = s.length();
s = new StringBuilder(String.valueOf(s)).append(s).toString();
len = len + len;
s = new StringBuilder(String.valueOf(s)).append(s).toString();
len = len + len;
s = new StringBuilder(String.valueOf(s)).append(s).toString();
len = len + len;
if (s.length() != len) {
System.out.println("Failed at iteration: " + i);
System.out.println("Length mismatch: " + s.length() + " <> " + len);
System.out.println("Expected: \"" + "test" + "test" + "test" + "test" + "test" + "test" + "test" + "test"
+ "\"");
System.out.println("Actual: \"" + s + "\"");
return;
}
}
}
}
public static void main(String[] args) throws Exception {
System.out.println("Java Version: " + System.getProperty("java.vm.version"));
System.out.println("try OSR compilation");
foo();
System.out.println("try standard compilation");
foo();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment