CompileCommand: PrintAssembly CountedLoop.* bool PrintAssembly = true CompileCommand: compileonly CountedLoop.fibonacci bool compileonly = true 751 1 n 0 java.lang.invoke.MethodHandle::linkToStatic(LLLLLLL)L (native) (static) 753 2 n 0 java.lang.invoke.MethodHandle::linkToSpecial(LLLL)L (native) (static) 754 3 n 0 java.lang.invoke.MethodHandle::invokeBasic(LLLLLL)L (native) 754 4 n 0 java.lang.invoke.MethodHandle::linkToSpecial(LLLLLLLL)L (native) (static) 757 5 n 0 java.lang.invoke.MethodHandle::linkToSpecial(LLLL)V (native) (static) 758 6 n 0 java.lang.invoke.MethodHandle::invokeBasic(LL)L (native) 759 7 b 3 CountedLoop::fibonacci (28 bytes) ============================= C1-compiled nmethod ============================== ----------------------------------- Assembly ----------------------------------- Compiled method (c1) 761 7 3 CountedLoop::fibonacci (28 bytes) total in heap [0x0000ffff84d76010,0x0000ffff84d764d0] = 1216 relocation [0x0000ffff84d76180,0x0000ffff84d761c8] = 72 main code [0x0000ffff84d76200,0x0000ffff84d763a0] = 416 stub code [0x0000ffff84d763a0,0x0000ffff84d763d8] = 56 oops [0x0000ffff84d763d8,0x0000ffff84d763e0] = 8 metadata [0x0000ffff84d763e0,0x0000ffff84d763f0] = 16 scopes data [0x0000ffff84d763f0,0x0000ffff84d76428] = 56 scopes pcs [0x0000ffff84d76428,0x0000ffff84d764c8] = 160 dependencies [0x0000ffff84d764c8,0x0000ffff84d764d0] = 8 [Disassembly] -------------------------------------------------------------------------------- [Constant Pool (empty)] -------------------------------------------------------------------------------- [Verified Entry Point] # {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' # [sp+0x40] (sp of caller) ;; block B4 [0, 0] 0x0000ffff84d76200: nop 0x0000ffff84d76204: sub x9, sp, #0x19, lsl #12 0x0000ffff84d76208: str xzr, [x9] 0x0000ffff84d7620c: sub sp, sp, #0x40 0x0000ffff84d76210: stp x29, x30, [sp, #48] 0x0000ffff84d76214: ldrb w8, [x28, #1000] 0x0000ffff84d76218: cbz x8, 0x0000ffff84d76230 ;; 0xFFFFA1B88A70 0x0000ffff84d7621c: mov x8, #0x8a70 // #35440 ; {external_word} 0x0000ffff84d76220: movk x8, #0xa1b8, lsl #16 0x0000ffff84d76224: movk x8, #0xffff, lsl #32 0x0000ffff84d76228: mov x0, x28 0x0000ffff84d7622c: blr x8 ;; 0xFFFF2E800498 0x0000ffff84d76230: mov x0, #0x498 // #1176 ; {metadata(method data for {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop')} 0x0000ffff84d76234: movk x0, #0x2e80, lsl #16 0x0000ffff84d76238: movk x0, #0xffff, lsl #32 0x0000ffff84d7623c: ldr w1, [x0, #308] 0x0000ffff84d76240: add w1, w1, #0x2 0x0000ffff84d76244: str w1, [x0, #308] ;; 12 branch [AL] [CounterOverflowStub: 0x0000ffff1404aca0] 0x0000ffff84d76248: b 0x0000ffff84d7631c ;*iconst_0 {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@0 (line 7) ;; block B5 [0, 0] ;; block B0 [0, 6] ;; 0x2 0x0000ffff84d7624c: orr w0, wzr, #0x2 ;; 0x1 0x0000ffff84d76250: orr w1, wzr, #0x1 ;; 0x0 0x0000ffff84d76254: movz w2, #0x0, lsl #16 ;; 30 branch [AL] [B1] 0x0000ffff84d76258: b 0x0000ffff84d762cc ;*iload_2 {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@6 (line 10) ;; block B2 [12, 23] 0x0000ffff84d7625c: add w3, w2, w1 0x0000ffff84d76260: add w0, w0, #0x1 ;; 0xFFFF2E800498 0x0000ffff84d76264: mov x2, #0x498 // #1176 ; {metadata(method data for {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop')} 0x0000ffff84d76268: movk x2, #0x2e80, lsl #16 0x0000ffff84d7626c: movk x2, #0xffff, lsl #32 0x0000ffff84d76270: ldr w4, [x2, #312] 0x0000ffff84d76274: add w4, w4, #0x2 0x0000ffff84d76278: str w4, [x2, #312] 0x0000ffff84d7627c: and w4, w4, #0x3ffe 0x0000ffff84d76280: cmp w4, #0x0 ;; 70 branch [EQ] [CounterOverflowStub: 0x0000ffff14024aa0] 0x0000ffff84d76284: b.eq 0x0000ffff84d76344 // b.none;*goto {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@23 (line 10) 0x0000ffff84d76288: ldr x8, [x28, #976] ; ImmutableOopMap {} ;*goto {reexecute=1 rethrow=0 return_oop=0} ; - (reexecute) CountedLoop::fibonacci@23 (line 10) 0x0000ffff84d7628c: ldr wzr, [x8] ; {poll} 0x0000ffff84d76290: ldrb w8, [x28, #1000] 0x0000ffff84d76294: cbz x8, 0x0000ffff84d762ac ;; 0xFFFFA1B88A70 0x0000ffff84d76298: mov x8, #0x8a70 // #35440 ; {external_word} 0x0000ffff84d7629c: movk x8, #0xa1b8, lsl #16 0x0000ffff84d762a0: movk x8, #0xffff, lsl #32 0x0000ffff84d762a4: mov x0, x28 0x0000ffff84d762a8: blr x8 ;; 0xFFFF2E800498 0x0000ffff84d762ac: mov x2, #0x498 // #1176 ; {metadata(method data for {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop')} 0x0000ffff84d762b0: movk x2, #0x2e80, lsl #16 0x0000ffff84d762b4: movk x2, #0xffff, lsl #32 0x0000ffff84d762b8: ldr x4, [x2, #408] 0x0000ffff84d762bc: add x4, x4, #0x1 0x0000ffff84d762c0: str x4, [x2, #408] 0x0000ffff84d762c4: mov x2, x1 0x0000ffff84d762c8: mov x1, x3 ;*goto {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@23 (line 10) ;; block B1 [6, 9] ;; 0x186A0 0x0000ffff84d762cc: mov w3, #0x86a0 // #34464 0x0000ffff84d762d0: movk w3, #0x1, lsl #16 0x0000ffff84d762d4: cmp w0, w3 ;; 0xFFFF2E800498 0x0000ffff84d762d8: mov x3, #0x498 // #1176 ; {metadata(method data for {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop')} 0x0000ffff84d762dc: movk x3, #0x2e80, lsl #16 0x0000ffff84d762e0: movk x3, #0xffff, lsl #32 ;; 0x188 0x0000ffff84d762e4: mov x8, #0x188 // #392 ;; 0x178 0x0000ffff84d762e8: mov x9, #0x178 // #376 0x0000ffff84d762ec: csel x4, x8, x9, lt // lt = tstop 0x0000ffff84d762f0: ldr x5, [x3, x4] 0x0000ffff84d762f4: add x5, x5, #0x1 0x0000ffff84d762f8: str x5, [x3, x4] ;; 48 branch [LT] [B2] 0x0000ffff84d762fc: b.lt 0x0000ffff84d7625c // b.tstop;*if_icmpge {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@9 (line 10) ;; block B3 [26, 27] 0x0000ffff84d76300: mov x0, x1 0x0000ffff84d76304: ldp x29, x30, [sp, #48] 0x0000ffff84d76308: add sp, sp, #0x40 0x0000ffff84d7630c: ldr x8, [x28, #968] ; {poll_return} 0x0000ffff84d76310: cmp sp, x8 0x0000ffff84d76314: b.hi 0x0000ffff84d7636c // b.pmore 0x0000ffff84d76318: ret ;; CounterOverflowStub slow case ;; 0xFFFF2E800320 0x0000ffff84d7631c: mov x8, #0x320 // #800 ; {metadata({method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop')} 0x0000ffff84d76320: movk x8, #0x2e80, lsl #16 0x0000ffff84d76324: movk x8, #0xffff, lsl #32 0x0000ffff84d76328: str x8, [sp, #8] ;; 0xFFFFFFFFFFFFFFFF 0x0000ffff84d7632c: mov x8, #0xffffffffffffffff // #-1 0x0000ffff84d76330: str x8, [sp] 0x0000ffff84d76334: adrp x8, 0x0000ffff8c175000 ; {runtime_call counter_overflow Runtime1 stub} 0x0000ffff84d76338: add x8, x8, #0x940 0x0000ffff84d7633c: blr x8 ; ImmutableOopMap {} ;*synchronization entry ; - CountedLoop::fibonacci@-1 (line 7) 0x0000ffff84d76340: b 0x0000ffff84d7624c ;; CounterOverflowStub slow case ;; 0xFFFF2E800320 0x0000ffff84d76344: mov x8, #0x320 // #800 ; {metadata({method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop')} 0x0000ffff84d76348: movk x8, #0x2e80, lsl #16 0x0000ffff84d7634c: movk x8, #0xffff, lsl #32 0x0000ffff84d76350: str x8, [sp, #8] ;; 0x17 0x0000ffff84d76354: mov x8, #0x17 // #23 0x0000ffff84d76358: str x8, [sp] 0x0000ffff84d7635c: adrp x8, 0x0000ffff8c175000 ; {runtime_call counter_overflow Runtime1 stub} 0x0000ffff84d76360: add x8, x8, #0x940 0x0000ffff84d76364: blr x8 ; ImmutableOopMap {} ;*goto {reexecute=1 rethrow=0 return_oop=0} ; - (reexecute) CountedLoop::fibonacci@23 (line 10) 0x0000ffff84d76368: b 0x0000ffff84d76288 ;; C1SafepointPollStub slow case 0x0000ffff84d7636c: adr x8, 0x0000ffff84d7630c ; {internal_word} 0x0000ffff84d76370: str x8, [x28, #992] 0x0000ffff84d76374: adrp x8, 0x0000ffff8c229000 ; {runtime_call SafepointBlob} 0x0000ffff84d76378: add x8, x8, #0xd40 0x0000ffff84d7637c: br x8 ;; Unwind handler 0x0000ffff84d76380: ldr x0, [x28, #1160] 0x0000ffff84d76384: str xzr, [x28, #1160] 0x0000ffff84d76388: str xzr, [x28, #1168] ;; remove_frame and dispatch to the unwind handler 0x0000ffff84d7638c: ldp x29, x30, [sp, #48] 0x0000ffff84d76390: add sp, sp, #0x40 0x0000ffff84d76394: adrp x8, 0x0000ffff8c17d000 ; {runtime_call unwind_exception Runtime1 stub} 0x0000ffff84d76398: add x8, x8, #0x540 0x0000ffff84d7639c: br x8 [Exception Handler] 0x0000ffff84d763a0: mov x19, #0xdead // #57005 ; {no_reloc} 0x0000ffff84d763a4: mov x2, #0xa // #10 0x0000ffff84d763a8: mov x4, #0xdead // #57005 0x0000ffff84d763ac: mov x5, #0xdead // #57005 0x0000ffff84d763b0: adrp x8, 0x0000ffff8c179000 ; {runtime_call handle_exception_from_callee Runtime1 stub} 0x0000ffff84d763b4: add x8, x8, #0x840 0x0000ffff84d763b8: blr x8 0x0000ffff84d763bc: dcps1 #0xdeae 0x0000ffff84d763c0: .inst 0xa27e6fe8 ; undefined 0x0000ffff84d763c4: .inst 0x0000ffff ; undefined [Deopt Handler Code] 0x0000ffff84d763c8: adr x30, 0x0000ffff84d763c8 0x0000ffff84d763cc: adrp x8, 0x0000ffff8c22a000 ; {runtime_call DeoptimizationBlob} 0x0000ffff84d763d0: add x8, x8, #0x40 0x0000ffff84d763d4: br x8 -------------------------------------------------------------------------------- [/Disassembly] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Oops: 0x0000ffff84d763d8: 0x00000000802587d0 a 'jdk/internal/loader/ClassLoaders$AppClassLoader'{0x00000000802587d0} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Metadata: 0x0000ffff84d763e0: 0x0000ffff2e800498 method data for {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' 0x0000ffff84d763e8: 0x0000ffff2e800320 {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pc-bytecode offsets: PcDesc(pc=0x0000ffff84d761ff offset=ffffffff bits=0): PcDesc(pc=0x0000ffff84d7624c offset=4c bits=0): CountedLoop::fibonacci@0 (line 7) PcDesc(pc=0x0000ffff84d7625c offset=5c bits=0): CountedLoop::fibonacci@6 (line 10) PcDesc(pc=0x0000ffff84d76288 offset=88 bits=0): CountedLoop::fibonacci@23 (line 10) PcDesc(pc=0x0000ffff84d7628c offset=8c bits=1): CountedLoop::fibonacci@23 (line 10) reexecute=true Locals - l0: reg c_rarg1 [2],int - l1: reg c_rarg3 [6],int - l2: reg c_rarg0 [0],int - l3: empty PcDesc(pc=0x0000ffff84d762cc offset=cc bits=0): CountedLoop::fibonacci@23 (line 10) PcDesc(pc=0x0000ffff84d76300 offset=100 bits=0): CountedLoop::fibonacci@9 (line 10) PcDesc(pc=0x0000ffff84d76340 offset=140 bits=0): CountedLoop::fibonacci@-1 (line 7) Locals - l0: empty - l1: empty - l2: empty - l3: empty PcDesc(pc=0x0000ffff84d76368 offset=168 bits=1): CountedLoop::fibonacci@23 (line 10) reexecute=true Locals - l0: reg c_rarg1 [2],int - l1: reg c_rarg3 [6],int - l2: reg c_rarg0 [0],int - l3: empty PcDesc(pc=0x0000ffff84d763d9 offset=1d9 bits=0): - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - oop maps:ImmutableOopMapSet contains 3 OopMaps ImmutableOopMap {} pc offsets: 140 320 360 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - scopes: ScopeDesc(pc=0x0000ffff84d7624c offset=4c): CountedLoop::fibonacci@0 (line 7) ScopeDesc(pc=0x0000ffff84d7625c offset=5c): CountedLoop::fibonacci@6 (line 10) ScopeDesc(pc=0x0000ffff84d76288 offset=88): CountedLoop::fibonacci@23 (line 10) ScopeDesc(pc=0x0000ffff84d7628c offset=8c): CountedLoop::fibonacci@23 (line 10) reexecute=true Locals - l0: reg c_rarg1 [2],int - l1: reg c_rarg3 [6],int - l2: reg c_rarg0 [0],int - l3: empty ScopeDesc(pc=0x0000ffff84d762cc offset=cc): CountedLoop::fibonacci@23 (line 10) ScopeDesc(pc=0x0000ffff84d76300 offset=100): CountedLoop::fibonacci@9 (line 10) ScopeDesc(pc=0x0000ffff84d76340 offset=140): CountedLoop::fibonacci@-1 (line 7) Locals - l0: empty - l1: empty - l2: empty - l3: empty ScopeDesc(pc=0x0000ffff84d76368 offset=168): CountedLoop::fibonacci@23 (line 10) reexecute=true Locals - l0: reg c_rarg1 [2],int - l1: reg c_rarg3 [6],int - l2: reg c_rarg0 [0],int - l3: empty - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - relocations: @0x0000ffff84d76180: 7c04a1b88a700000ffff3807 relocInfo@0x0000ffff84d7618a [type=7(external_word) addr=0x0000ffff84d7621c offset=28 data={a1b88a700000ffff}] | [target=0x0000ffffa1b88a70] @0x0000ffff84d7618c: 78016005 relocInfo@0x0000ffff84d7618e [type=12(metadata) addr=0x0000ffff84d76230 offset=20 data=1] | [metadata_addr=0x0000ffff84d763e0 *=0x0000ffff2e800498 offset=0]metadata_value=0x0000ffff2e800498: method data for {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' @0x0000ffff84d76190: 7801600d relocInfo@0x0000ffff84d76192 [type=12(metadata) addr=0x0000ffff84d76264 offset=52 data=1] | [metadata_addr=0x0000ffff84d763e0 *=0x0000ffff2e800498 offset=0]metadata_value=0x0000ffff2e800498: method data for {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' @0x0000ffff84d76194: 500a relocInfo@0x0000ffff84d76194 [type=10(poll) addr=0x0000ffff84d7628c offset=40] @0x0000ffff84d76196: 7c04a1b88a700000ffff3803 relocInfo@0x0000ffff84d761a0 [type=7(external_word) addr=0x0000ffff84d76298 offset=12 data={a1b88a700000ffff}] | [target=0x0000ffffa1b88a70] @0x0000ffff84d761a2: 78016005 relocInfo@0x0000ffff84d761a4 [type=12(metadata) addr=0x0000ffff84d762ac offset=20 data=1] | [metadata_addr=0x0000ffff84d763e0 *=0x0000ffff2e800498 offset=0]metadata_value=0x0000ffff2e800498: method data for {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' @0x0000ffff84d761a6: 7801600b relocInfo@0x0000ffff84d761a8 [type=12(metadata) addr=0x0000ffff84d762d8 offset=44 data=1] | [metadata_addr=0x0000ffff84d763e0 *=0x0000ffff2e800498 offset=0]metadata_value=0x0000ffff2e800498: method data for {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' @0x0000ffff84d761aa: 580d relocInfo@0x0000ffff84d761aa [type=11(poll_return) addr=0x0000ffff84d7630c offset=52] @0x0000ffff84d761ac: 78026004 relocInfo@0x0000ffff84d761ae [type=12(metadata) addr=0x0000ffff84d7631c offset=16 data=2] | [metadata_addr=0x0000ffff84d763e8 *=0x0000ffff2e800320 offset=0]metadata_value=0x0000ffff2e800320: {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' @0x0000ffff84d761b0: 3006 relocInfo@0x0000ffff84d761b0 [type=6(runtime_call) addr=0x0000ffff84d76334 offset=24] | [destination=0x0000ffff8c175940] @0x0000ffff84d761b2: 78026004 relocInfo@0x0000ffff84d761b4 [type=12(metadata) addr=0x0000ffff84d76344 offset=16 data=2] | [metadata_addr=0x0000ffff84d763e8 *=0x0000ffff2e800320 offset=0]metadata_value=0x0000ffff2e800320: {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' @0x0000ffff84d761b6: 3006 relocInfo@0x0000ffff84d761b6 [type=6(runtime_call) addr=0x0000ffff84d7635c offset=24] | [destination=0x0000ffff8c175940] @0x0000ffff84d761b8: 78184004 relocInfo@0x0000ffff84d761ba [type=8(internal_word) addr=0x0000ffff84d7636c offset=16 data=24] | [target=0x0000ffff84d7630c] @0x0000ffff84d761bc: 3002 relocInfo@0x0000ffff84d761bc [type=6(runtime_call) addr=0x0000ffff84d76374 offset=8] | [destination=0x0000ffff8c229d40] @0x0000ffff84d761be: 3008 relocInfo@0x0000ffff84d761be [type=6(runtime_call) addr=0x0000ffff84d76394 offset=32] | [destination=0x0000ffff8c17d540] @0x0000ffff84d761c0: 0003 relocInfo@0x0000ffff84d761c0 [type=0(none) addr=0x0000ffff84d763a0 offset=12] @0x0000ffff84d761c2: 3004 relocInfo@0x0000ffff84d761c2 [type=6(runtime_call) addr=0x0000ffff84d763b0 offset=16] | [destination=0x0000ffff8c179840] @0x0000ffff84d761c4: 3007 relocInfo@0x0000ffff84d761c4 [type=6(runtime_call) addr=0x0000ffff84d763cc offset=28] | [destination=0x0000ffff8c22a040] @0x0000ffff84d761c6: 0000 relocInfo@0x0000ffff84d761c6 [type=0(none) addr=0x0000ffff84d763cc offset=0] @0x0000ffff84d761c8: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Dependencies: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ExceptionHandlerTable (size = 0 bytes) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ImplicitExceptionTable is empty - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Recorded oops: #0: 0x0000000000000000 NULL-oop #1: 0x00000000802587d0 a 'jdk/internal/loader/ClassLoaders$AppClassLoader'{0x00000000802587d0} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Recorded metadata: #0: 0x0000000000000000 NULL-oop #1: 0x0000ffff2e800498 method data for {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' #2: 0x0000ffff2e800320 {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 766 8 b 4 CountedLoop::fibonacci (28 bytes) Counted Loop: N111/N97 counted [2,100000),+1 (-1 iters) Loop: N0/N0 has_sfpt Loop: N110/N109 limit_check profile_predicated predicated Loop: N111/N97 limit_check profile_predicated predicated counted [2,100000),+1 (-1 iters) has_sfpt strip_mined PeelMainPost Loop: N111/N97 limit_check profile_predicated predicated counted [2,100000),+1 (2147483648 iters) reduction has_sfpt strip_mined Unroll 2 Loop: N111/N97 counted [int,100000),+1 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N0/N0 has_sfpt Loop: N110/N109 sfpts={ 112 } Loop: N172/N97 counted [3,99999),+2 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N117/N122 counted [int,100000),+1 (4 iters) post reduction has_sfpt Unroll 4 Loop: N172/N97 counted [3,99999),+2 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N0/N0 has_sfpt Loop: N110/N109 sfpts={ 112 } Loop: N196/N97 counted [3,99999),+4 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N117/N122 counted [int,100000),+1 (4 iters) post reduction has_sfpt Unroll 8 Loop: N196/N97 counted [3,99999),+4 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N0/N0 has_sfpt Loop: N110/N109 sfpts={ 112 } Loop: N216/N97 counted [3,99995),+8 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N117/N122 counted [int,100000),+1 (4 iters) post reduction has_sfpt Unroll 16 Loop: N216/N97 counted [3,99995),+8 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N0/N0 has_sfpt Loop: N110/N109 sfpts={ 112 } Loop: N239/N97 counted [3,99987),+16 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N117/N122 counted [int,100000),+1 (4 iters) post reduction has_sfpt ============================= C2-compiled nmethod ============================== # -- Old sp -- Framesize: 32 -- #r351 sp+28: in_preserve #r350 sp+24: return address #r349 sp+20: in_preserve #r348 sp+16: saved fp register #r347 sp+12: pad2, stack alignment #r346 sp+ 8: pad2, stack alignment #r345 sp+ 4: Fixed slot 1 #r344 sp+ 0: Fixed slot 0 # ----------------------- MetaData before Compile_id = 8 ------------------------ {method} - this oop: 0x0000ffff2e800320 - method holder: 'CountedLoop' - constants: 0x0000ffff2e800020 constant pool [21] {0x0000ffff2e800020} for 'CountedLoop' cache=0x0000ffff2e8003a8 - access: 0xc1000009 public static - name: 'fibonacci' - signature: '()I' - max stack: 3 - max locals: 4 - size of params: 0 - method size: 14 - highest level: 3 - vtable index: -2 - i2i entry: 0x0000ffff8c158e80 - adapters: AHE@0x0000ffff9c0d70f0: 0x i2c: 0x0000ffff8c222bc0 c2i: 0x0000ffff8c222c0c c2iUV: 0x0000ffff8c222bd4 c2iNCI: 0x0000ffff8c222c48 - compiled entry 0x0000ffff84d76200 - code size: 28 - code start: 0x0000ffff2e8002f8 - code end (excl): 0x0000ffff2e800314 - method data: 0x0000ffff2e800498 - checked ex length: 0 - linenumber start: 0x0000ffff2e800314 - localvar length: 0 - compiled code: nmethod 769 7 3 CountedLoop::fibonacci (28 bytes) ------------------------ OptoAssembly for Compile_id = 8 ----------------------- # # int ( ) # 000 N1: # out( B1 ) <- in( B7 ) Freq: 1 000 B1: # out( B3 ) <- BLOCK HEAD IS JUNK Freq: 1 000 # stack bang size=32 sub sp, sp, #32 stp rfp, lr, [sp, #16] 030 mov R10, #1 # int 034 mov R12, #3 # int 038 + mov R11, #1 # int 03c b B3 040 B2: # out( B3 ) <- in( B3 ) top-of-loop Freq: 9 040 + spill R14 -> R12 # spill size = 32 044 B3: # out( B2 B4 ) <- in( B1 B2 ) Loop( B3-B2 inner main of N10 reduction) Freq: 10 044 + addw R13, R10, R11 048 + addw R10, R13, R11 04c + addw R13, R10, R13 050 + addw R10, R13, R10 054 + addw R13, R10, R13 058 + addw R10, R13, R10 05c + addw R13, R10, R13 060 + addw R10, R13, R10 064 + addw R13, R10, R13 068 + addw R10, R13, R10 06c + addw R13, R10, R13 070 + addw R10, R13, R10 074 + addw R13, R10, R13 078 + addw R11, R13, R10 07c + addw R10, R11, R13 080 + addw R14, R12, #16 084 addw R11, R10, R11 088 + cmpw R14, #99987 094 blt B2 // counted loop end P=0.900000 C=-1.000000 098 B4: # out( B6 ) <- in( B3 ) Freq: 1 098 + # castII of R12 098 addw R13, R12, #16 09c b B6 0a0 B5: # out( B6 ) <- in( B6 ) top-of-loop Freq: 9 0a0 + spill R11 -> R10 # spill size = 32 0a4 + spill R0 -> R11 # spill size = 32 0a8 B6: # out( B5 B7 ) <- in( B4 B5 ) Loop( B6-B5 inner post of N111 reduction) Freq: 10 0a8 + addw R13, R13, #1 0ac addw R0, R11, R10 0b0 + cmpw R13, #100000 0bc blt B5 // counted loop end P=0.900000 C=-1.000000 0c0 B7: # out( N1 ) <- in( B6 ) Freq: 1 0c0 # pop frame 32 ldp lr, rfp, [sp,#16] add sp, sp, #32 # test polling word ldr rscratch1, [rthread],#968 cmp sp, rscratch1 bhi #slow_path 0d4 + ret // return register -------------------------------------------------------------------------------- 770 7 3 CountedLoop::fibonacci (28 bytes) made not entrant ----------------------------------- Assembly ----------------------------------- Compiled method (c2) 770 8 4 CountedLoop::fibonacci (28 bytes) total in heap [0x0000ffff8c9a7390,0x0000ffff8c9a7748] = 952 relocation [0x0000ffff8c9a7500,0x0000ffff8c9a7520] = 32 main code [0x0000ffff8c9a7540,0x0000ffff8c9a7630] = 240 stub code [0x0000ffff8c9a7630,0x0000ffff8c9a7650] = 32 oops [0x0000ffff8c9a7650,0x0000ffff8c9a7658] = 8 metadata [0x0000ffff8c9a7658,0x0000ffff8c9a7660] = 8 scopes data [0x0000ffff8c9a7660,0x0000ffff8c9a7680] = 32 scopes pcs [0x0000ffff8c9a7680,0x0000ffff8c9a7740] = 192 dependencies [0x0000ffff8c9a7740,0x0000ffff8c9a7748] = 8 [Disassembly] -------------------------------------------------------------------------------- [Constant Pool (empty)] -------------------------------------------------------------------------------- [Verified Entry Point] # {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' # [sp+0x20] (sp of caller) ;; N1: # out( B1 ) <- in( B7 ) Freq: 1 ;; B1: # out( B3 ) <- BLOCK HEAD IS JUNK Freq: 1 0x0000ffff8c9a7540: nop 0x0000ffff8c9a7544: sub x9, sp, #0x19, lsl #12 0x0000ffff8c9a7548: str xzr, [x9] 0x0000ffff8c9a754c: sub sp, sp, #0x20 0x0000ffff8c9a7550: stp x29, x30, [sp, #16] 0x0000ffff8c9a7554: ldrb w8, [x28, #1000] 0x0000ffff8c9a7558: cbz x8, 0x0000ffff8c9a7570 ;; 0xFFFFA1B88A70 0x0000ffff8c9a755c: mov x8, #0x8a70 // #35440 ; {external_word} 0x0000ffff8c9a7560: movk x8, #0xa1b8, lsl #16 0x0000ffff8c9a7564: movk x8, #0xffff, lsl #32 0x0000ffff8c9a7568: mov x0, x28 0x0000ffff8c9a756c: blr x8 ;*synchronization entry ; - CountedLoop::fibonacci@-1 (line 7) ;; 0x1 0x0000ffff8c9a7570: orr w10, wzr, #0x1 ;; 0x3 0x0000ffff8c9a7574: orr w12, wzr, #0x3 ;; 0x1 0x0000ffff8c9a7578: orr w11, wzr, #0x1 0x0000ffff8c9a757c: b 0x0000ffff8c9a7584 ;; B2: # out( B3 ) <- in( B3 ) top-of-loop Freq: 9 0x0000ffff8c9a7580: mov w12, w14 ;*iload_0 {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@12 (line 11) ;; B3: # out( B2 B4 ) <- in( B1 B2 ) Loop( B3-B2 inner main of N10 reduction) Freq: 10 0x0000ffff8c9a7584: add w13, w10, w11 0x0000ffff8c9a7588: add w10, w13, w11 0x0000ffff8c9a758c: add w13, w10, w13 0x0000ffff8c9a7590: add w10, w13, w10 0x0000ffff8c9a7594: add w13, w10, w13 0x0000ffff8c9a7598: add w10, w13, w10 0x0000ffff8c9a759c: add w13, w10, w13 0x0000ffff8c9a75a0: add w10, w13, w10 0x0000ffff8c9a75a4: add w13, w10, w13 0x0000ffff8c9a75a8: add w10, w13, w10 0x0000ffff8c9a75ac: add w13, w10, w13 0x0000ffff8c9a75b0: add w10, w13, w10 0x0000ffff8c9a75b4: add w13, w10, w13 0x0000ffff8c9a75b8: add w11, w13, w10 0x0000ffff8c9a75bc: add w10, w11, w13 ;*iadd {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@14 (line 11) 0x0000ffff8c9a75c0: add w14, w12, #0x10 ;*iinc {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@20 (line 10) 0x0000ffff8c9a75c4: add w11, w10, w11 ;*iadd {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@14 (line 11) ;; 0x18693 0x0000ffff8c9a75c8: mov w8, #0x8693 // #34451 0x0000ffff8c9a75cc: movk w8, #0x1, lsl #16 0x0000ffff8c9a75d0: cmp w14, w8 0x0000ffff8c9a75d4: b.lt 0x0000ffff8c9a7580 // b.tstop;*if_icmpge {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@9 (line 10) ;; B4: # out( B6 ) <- in( B3 ) Freq: 1 0x0000ffff8c9a75d8: add w13, w12, #0x10 0x0000ffff8c9a75dc: b 0x0000ffff8c9a75e8 ;; B5: # out( B6 ) <- in( B6 ) top-of-loop Freq: 9 0x0000ffff8c9a75e0: mov w10, w11 0x0000ffff8c9a75e4: mov w11, w0 ;*iload_0 {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@12 (line 11) ;; B6: # out( B5 B7 ) <- in( B4 B5 ) Loop( B6-B5 inner post of N111 reduction) Freq: 10 0x0000ffff8c9a75e8: add w13, w13, #0x1 ;*iinc {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@20 (line 10) 0x0000ffff8c9a75ec: add w0, w11, w10 ;*iadd {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@14 (line 11) ;; 0x186A0 0x0000ffff8c9a75f0: mov w8, #0x86a0 // #34464 0x0000ffff8c9a75f4: movk w8, #0x1, lsl #16 0x0000ffff8c9a75f8: cmp w13, w8 0x0000ffff8c9a75fc: b.lt 0x0000ffff8c9a75e0 // b.tstop;*if_icmpge {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@9 (line 10) ;; B7: # out( N1 ) <- in( B6 ) Freq: 1 0x0000ffff8c9a7600: ldp x29, x30, [sp, #16] 0x0000ffff8c9a7604: add sp, sp, #0x20 0x0000ffff8c9a7608: ldr x8, [x28, #968] ; {poll_return} 0x0000ffff8c9a760c: cmp sp, x8 0x0000ffff8c9a7610: b.hi 0x0000ffff8c9a7618 // b.pmore 0x0000ffff8c9a7614: ret 0x0000ffff8c9a7618: adr x8, 0x0000ffff8c9a7608 ; {internal_word} 0x0000ffff8c9a761c: str x8, [x28, #992] 0x0000ffff8c9a7620: adrp x8, 0x0000ffff8c229000 ; {runtime_call SafepointBlob} 0x0000ffff8c9a7624: add x8, x8, #0xd40 0x0000ffff8c9a7628: br x8 0x0000ffff8c9a762c: .inst 0x00000000 ; undefined [Exception Handler] 0x0000ffff8c9a7630: adrp x8, 0x0000ffff8c17c000 ; {no_reloc} 0x0000ffff8c9a7634: add x8, x8, #0xe40 0x0000ffff8c9a7638: br x8 [Deopt Handler Code] 0x0000ffff8c9a763c: adr x30, 0x0000ffff8c9a763c 0x0000ffff8c9a7640: adrp x8, 0x0000ffff8c22a000 ; {runtime_call DeoptimizationBlob} 0x0000ffff8c9a7644: add x8, x8, #0x40 0x0000ffff8c9a7648: br x8 0x0000ffff8c9a764c: .inst 0x00000000 ; undefined -------------------------------------------------------------------------------- [/Disassembly] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Oops: 0x0000ffff8c9a7650: 0x00000000802587d0 a 'jdk/internal/loader/ClassLoaders$AppClassLoader'{0x00000000802587d0} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Metadata: 0x0000ffff8c9a7658: 0x0000ffff2e800320 {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pc-bytecode offsets: PcDesc(pc=0x0000ffff8c9a753f offset=ffffffff bits=0): PcDesc(pc=0x0000ffff8c9a7570 offset=30 bits=0): CountedLoop::fibonacci@-1 (line 7) PcDesc(pc=0x0000ffff8c9a7584 offset=44 bits=0): CountedLoop::fibonacci@12 (line 11) PcDesc(pc=0x0000ffff8c9a75c0 offset=80 bits=0): CountedLoop::fibonacci@14 (line 11) PcDesc(pc=0x0000ffff8c9a75c4 offset=84 bits=0): CountedLoop::fibonacci@20 (line 10) PcDesc(pc=0x0000ffff8c9a75c8 offset=88 bits=0): CountedLoop::fibonacci@14 (line 11) PcDesc(pc=0x0000ffff8c9a75d8 offset=98 bits=0): CountedLoop::fibonacci@9 (line 10) PcDesc(pc=0x0000ffff8c9a75e8 offset=a8 bits=0): CountedLoop::fibonacci@12 (line 11) PcDesc(pc=0x0000ffff8c9a75ec offset=ac bits=0): CountedLoop::fibonacci@20 (line 10) PcDesc(pc=0x0000ffff8c9a75f0 offset=b0 bits=0): CountedLoop::fibonacci@14 (line 11) PcDesc(pc=0x0000ffff8c9a7600 offset=c0 bits=0): CountedLoop::fibonacci@9 (line 10) PcDesc(pc=0x0000ffff8c9a7651 offset=111 bits=0): - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - oop maps:ImmutableOopMapSet contains 0 OopMaps - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - scopes: ScopeDesc(pc=0x0000ffff8c9a7570 offset=30): CountedLoop::fibonacci@-1 (line 7) ScopeDesc(pc=0x0000ffff8c9a7584 offset=44): CountedLoop::fibonacci@12 (line 11) ScopeDesc(pc=0x0000ffff8c9a75c0 offset=80): CountedLoop::fibonacci@14 (line 11) ScopeDesc(pc=0x0000ffff8c9a75c4 offset=84): CountedLoop::fibonacci@20 (line 10) ScopeDesc(pc=0x0000ffff8c9a75c8 offset=88): CountedLoop::fibonacci@14 (line 11) ScopeDesc(pc=0x0000ffff8c9a75d8 offset=98): CountedLoop::fibonacci@9 (line 10) ScopeDesc(pc=0x0000ffff8c9a75e8 offset=a8): CountedLoop::fibonacci@12 (line 11) ScopeDesc(pc=0x0000ffff8c9a75ec offset=ac): CountedLoop::fibonacci@20 (line 10) ScopeDesc(pc=0x0000ffff8c9a75f0 offset=b0): CountedLoop::fibonacci@14 (line 11) ScopeDesc(pc=0x0000ffff8c9a7600 offset=c0): CountedLoop::fibonacci@9 (line 10) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - relocations: @0x0000ffff8c9a7500: 7c04a1b88a700000ffff3807 relocInfo@0x0000ffff8c9a750a [type=7(external_word) addr=0x0000ffff8c9a755c offset=28 data={a1b88a700000ffff}] | [target=0x0000ffffa1b88a70] @0x0000ffff8c9a750c: 582b relocInfo@0x0000ffff8c9a750c [type=11(poll_return) addr=0x0000ffff8c9a7608 offset=172] @0x0000ffff8c9a750e: 78044004 relocInfo@0x0000ffff8c9a7510 [type=8(internal_word) addr=0x0000ffff8c9a7618 offset=16 data=4] | [target=0x0000ffff8c9a7608] @0x0000ffff8c9a7512: 3002 relocInfo@0x0000ffff8c9a7512 [type=6(runtime_call) addr=0x0000ffff8c9a7620 offset=8] | [destination=0x0000ffff8c229d40] @0x0000ffff8c9a7514: 0004 relocInfo@0x0000ffff8c9a7514 [type=0(none) addr=0x0000ffff8c9a7630 offset=16] @0x0000ffff8c9a7516: 3000 relocInfo@0x0000ffff8c9a7516 [type=6(runtime_call) addr=0x0000ffff8c9a7630 offset=0] | [destination=0x0000ffff8c17ce40] @0x0000ffff8c9a7518: 3004 relocInfo@0x0000ffff8c9a7518 [type=6(runtime_call) addr=0x0000ffff8c9a7640 offset=16] | [destination=0x0000ffff8c22a040] @0x0000ffff8c9a751a: 0000 relocInfo@0x0000ffff8c9a751a [type=0(none) addr=0x0000ffff8c9a7640 offset=0] @0x0000ffff8c9a751c: 0000 relocInfo@0x0000ffff8c9a751c [type=0(none) addr=0x0000ffff8c9a7640 offset=0] @0x0000ffff8c9a751e: 0000 relocInfo@0x0000ffff8c9a751e [type=0(none) addr=0x0000ffff8c9a7640 offset=0] @0x0000ffff8c9a7520: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Dependencies: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ExceptionHandlerTable (size = 0 bytes) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ImplicitExceptionTable is empty - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Recorded oops: #0: 0x0000000000000000 NULL-oop #1: 0x00000000802587d0 a 'jdk/internal/loader/ClassLoaders$AppClassLoader'{0x00000000802587d0} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Recorded metadata: #0: 0x0000000000000000 NULL-oop #1: 0x0000ffff2e800320 {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 772 9 % b 4 CountedLoop::fibonacci @ 6 (28 bytes) Loop: N0/N0 has_sfpt Loop: N118/N110 limit_check profile_predicated predicated sfpts={ 110 } PartialPeel Loop: N118/N110 limit_check profile_predicated predicated sfpts={ 110 } Counted Loop: N151/N104 counted [int,100000),+1 (-1 iters) Loop: N0/N0 has_sfpt Loop: N150/N149 Loop: N151/N104 counted [int,100000),+1 (-1 iters) has_sfpt strip_mined PreMainPost Loop: N151/N104 counted [int,100000),+1 (2147483648 iters) reduction has_sfpt strip_mined Unroll 2 Loop: N151/N104 counted [int,100000),+1 (2147483648 iters) main reduction has_sfpt strip_mined Poor node estimate: 228 >> 73 Loop: N0/N0 has_sfpt Loop: N181/N183 counted [int,int),+1 (4 iters) pre reduction has_sfpt Loop: N150/N149 sfpts={ 152 } Loop: N213/N104 counted [int,99999),+2 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N157/N159 counted [int,100000),+1 (4 iters) post reduction has_sfpt Unroll 4 Loop: N213/N104 counted [int,99999),+2 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N0/N0 has_sfpt Loop: N181/N183 counted [int,int),+1 (4 iters) pre reduction has_sfpt Loop: N150/N149 sfpts={ 152 } Loop: N235/N104 counted [int,99997),+4 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N157/N159 counted [int,100000),+1 (4 iters) post reduction has_sfpt Unroll 8 Loop: N235/N104 counted [int,99997),+4 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N0/N0 has_sfpt Loop: N181/N183 counted [int,int),+1 (4 iters) pre reduction has_sfpt Loop: N150/N149 sfpts={ 152 } Loop: N256/N104 counted [int,99993),+8 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N157/N159 counted [int,100000),+1 (4 iters) post reduction has_sfpt Unroll 16 Loop: N256/N104 counted [int,99993),+8 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N0/N0 has_sfpt Loop: N181/N183 counted [int,int),+1 (4 iters) pre reduction has_sfpt Loop: N150/N149 sfpts={ 152 } Loop: N279/N104 counted [int,99985),+16 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N157/N159 counted [int,100000),+1 (4 iters) post reduction has_sfpt Loop: N0/N0 has_sfpt Loop: N181/N183 counted [int,int),+1 (4 iters) pre reduction has_sfpt Loop: N150/N149 sfpts={ 152 } Loop: N279/N104 counted [int,99985),+16 (2147483648 iters) main reduction has_sfpt strip_mined Loop: N157/N159 counted [int,100000),+1 (4 iters) post reduction has_sfpt ============================= C2-compiled nmethod ============================== #r020 c_rarg1:c_rarg1 : parm 0: rawptr:BotPTR # -- Old sp -- Framesize: 32 -- #r351 sp+28: in_preserve #r350 sp+24: return address #r349 sp+20: in_preserve #r348 sp+16: saved fp register #r347 sp+12: pad2, stack alignment #r346 sp+ 8: pad2, stack alignment #r345 sp+ 4: Fixed slot 1 #r344 sp+ 0: Fixed slot 0 # ----------------------- MetaData before Compile_id = 9 ------------------------ {method} - this oop: 0x0000ffff2e800320 - method holder: 'CountedLoop' - constants: 0x0000ffff2e800020 constant pool [21] {0x0000ffff2e800020} for 'CountedLoop' cache=0x0000ffff2e8003a8 - access: 0xc1000009 public static - name: 'fibonacci' - signature: '()I' - max stack: 3 - max locals: 4 - size of params: 0 - method size: 14 - highest level: 4 - vtable index: -2 - i2i entry: 0x0000ffff8c158e80 - adapters: AHE@0x0000ffff9c0d70f0: 0x i2c: 0x0000ffff8c222bc0 c2i: 0x0000ffff8c222c0c c2iUV: 0x0000ffff8c222bd4 c2iNCI: 0x0000ffff8c222c48 - compiled entry 0x0000ffff8c9a7540 - code size: 28 - code start: 0x0000ffff2e8002f8 - code end (excl): 0x0000ffff2e800314 - method data: 0x0000ffff2e800498 - checked ex length: 0 - linenumber start: 0x0000ffff2e800314 - localvar length: 0 - compiled code: nmethod 776 8 4 CountedLoop::fibonacci (28 bytes) ------------------------ OptoAssembly for Compile_id = 9 ----------------------- # # int ( rawptr:BotPTR ) # 000 N130: # out( B1 ) <- BLOCK HEAD IS JUNK Freq: 1 000 BREAKPOINT nop # 3 bytes pad for loops and calls 010 B1: # out( B14 B2 ) <- BLOCK HEAD IS JUNK Freq: 1 010 # stack bang size=32 sub sp, sp, #32 stp rfp, lr, [sp, #16] 040 ldrw R21, [R1, #8] # int 044 + ldrw R22, [R1, #16] # int 048 + ldrw R19, [R1, #24] # int 04c spill R1 -> R0 # spill size = 64 050 + CALL, runtime leaf 0x0000ffffa2327f98 OSR_migration_end No JVM State Info # 06c + cmpw R21, #100000 078 bge B14 P=0.100000 C=-1.000000 07c B2: # out( B7 ) <- in( B1 ) Freq: 0.9 07c + addw R10, R21, #1 080 b B7 084 B3: # out( B4 ) <- in( B4 ) top-of-loop Freq: 4.05 084 + spill R13 -> R11 # spill size = 32 088 + spill R22 -> R13 # spill size = 32 08c + spill R11 -> R22 # spill size = 32 090 B4: # out( B3 B5 ) <- in( B12 B3 ) Loop( B4-B3 inner post of N151 reduction) Freq: 4.5 090 + addw R21, R21, #1 094 addw R22, R13, R22 098 + cmpw R21, #100000 0a4 blt B3 // counted loop end P=0.900000 C=-1.000000 0a8 B5: # out( B14 ) <- in( B4 ) Freq: 0.45 0a8 + b B14 0ac B6: # out( B7 ) <- in( B7 ) top-of-loop Freq: 8.1 0ac + spill R22 -> R19 # spill size = 32 0b0 + spill R13 -> R22 # spill size = 32 0b4 B7: # out( B6 B8 ) <- in( B2 B6 ) Loop( B7-B6 inner pre of N151 reduction) Freq: 9 0b4 + addw R21, R21, #1 0b8 addw R13, R22, R19 0bc + cmpw R21, R10 0c0 blt B6 // counted loop end P=0.900000 C=-1.000000 0c4 B8: # out( B11 B9 ) <- in( B7 ) Freq: 0.9 0c4 + cmpw R21, #99985 0d0 bge B11 P=0.000001 C=-1.000000 0d4 B9: # out( B10 ) <- in( B8 ) Freq: 0.899999 0d4 + # castII of R21 nop # 3 bytes pad for loops and calls 0e0 B10: # out( B10 B11 ) <- in( B9 B10 ) Loop( B10-B10 inner main of N40 reduction) Freq: 8.99999 0e0 addw R10, R22, R13 0e4 + addw R12, R10, R13 0e8 + addw R10, R12, R10 0ec + addw R12, R10, R12 0f0 + addw R10, R12, R10 0f4 + addw R11, R10, R12 0f8 + addw R12, R11, R10 0fc + addw R10, R12, R11 100 + addw R12, R10, R12 104 + addw R10, R12, R10 108 + addw R12, R10, R12 10c + addw R10, R12, R10 110 + addw R12, R10, R12 114 + addw R10, R12, R10 118 + addw R22, R10, R12 11c + addw R21, R21, #16 120 addw R13, R22, R10 124 + cmpw R21, #99985 130 blt B10 // counted loop end P=0.900000 C=-1.000000 134 B11: # out( B13 B12 ) <- in( B8 B10 ) Freq: 0.9 134 + cmpw R21, #100000 140 bge B13 P=0.500000 C=-1.000000 144 B12: # out( B4 ) <- in( B11 ) Freq: 0.45 144 + # castII of R21 144 b B4 148 B13: # out( B14 ) <- in( B11 ) Freq: 0.45 148 + spill R13 -> R22 # spill size = 32 14c B14: # out( N130 ) <- in( B1 B5 B13 ) Freq: 1 14c + spill R22 -> R0 # spill size = 32 150 + # pop frame 32 ldp lr, rfp, [sp,#16] add sp, sp, #32 # test polling word ldr rscratch1, [rthread],#968 cmp sp, rscratch1 bhi #slow_path 164 + ret // return register -------------------------------------------------------------------------------- ----------------------------------- Assembly ----------------------------------- Compiled method (c2) 776 9 % 4 CountedLoop::fibonacci @ 6 (28 bytes) total in heap [0x0000ffff8c9a7790,0x0000ffff8c9a7c28] = 1176 relocation [0x0000ffff8c9a7900,0x0000ffff8c9a7920] = 32 main code [0x0000ffff8c9a7940,0x0000ffff8c9a7ac0] = 384 stub code [0x0000ffff8c9a7ac0,0x0000ffff8c9a7ae0] = 32 oops [0x0000ffff8c9a7ae0,0x0000ffff8c9a7ae8] = 8 metadata [0x0000ffff8c9a7ae8,0x0000ffff8c9a7af0] = 8 scopes data [0x0000ffff8c9a7af0,0x0000ffff8c9a7b10] = 32 scopes pcs [0x0000ffff8c9a7b10,0x0000ffff8c9a7c20] = 272 dependencies [0x0000ffff8c9a7c20,0x0000ffff8c9a7c28] = 8 [Disassembly] -------------------------------------------------------------------------------- [Constant Pool (empty)] -------------------------------------------------------------------------------- [Verified Entry Point] # {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' ;; N130: # out( B1 ) <- BLOCK HEAD IS JUNK Freq: 1 0x0000ffff8c9a7940: brk #0x0 0x0000ffff8c9a7944: nop 0x0000ffff8c9a7948: nop 0x0000ffff8c9a794c: nop ;; B1: # out( B14 B2 ) <- BLOCK HEAD IS JUNK Freq: 1 0x0000ffff8c9a7950: nop 0x0000ffff8c9a7954: sub x9, sp, #0x19, lsl #12 0x0000ffff8c9a7958: str xzr, [x9] 0x0000ffff8c9a795c: sub sp, sp, #0x20 0x0000ffff8c9a7960: stp x29, x30, [sp, #16] 0x0000ffff8c9a7964: ldrb w8, [x28, #1000] 0x0000ffff8c9a7968: cbz x8, 0x0000ffff8c9a7980 ;; 0xFFFFA1B88A70 0x0000ffff8c9a796c: mov x8, #0x8a70 // #35440 ; {external_word} 0x0000ffff8c9a7970: movk x8, #0xa1b8, lsl #16 0x0000ffff8c9a7974: movk x8, #0xffff, lsl #32 0x0000ffff8c9a7978: mov x0, x28 0x0000ffff8c9a797c: blr x8 0x0000ffff8c9a7980: ldr w21, [x1, #8] 0x0000ffff8c9a7984: ldr w22, [x1, #16] 0x0000ffff8c9a7988: ldr w19, [x1, #24] 0x0000ffff8c9a798c: mov x0, x1 0x0000ffff8c9a7990: adr x9, 0x0000ffff8c9a79a8 ;; 0xFFFFA2327F98 0x0000ffff8c9a7994: mov x8, #0x7f98 // #32664 ; {runtime_call SharedRuntime::OSR_migration_end(long*)} 0x0000ffff8c9a7998: movk x8, #0xa232, lsl #16 0x0000ffff8c9a799c: movk x8, #0xffff, lsl #32 0x0000ffff8c9a79a0: stp xzr, x9, [sp, #-16]! 0x0000ffff8c9a79a4: blr x8 0x0000ffff8c9a79a8: add sp, sp, #0x10 ;*iload_2 {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@6 (line 10) ;; 0x186A0 0x0000ffff8c9a79ac: mov w8, #0x86a0 // #34464 0x0000ffff8c9a79b0: movk w8, #0x1, lsl #16 0x0000ffff8c9a79b4: cmp w21, w8 0x0000ffff8c9a79b8: b.ge 0x0000ffff8c9a7a8c // b.tcont;*if_icmpge {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@9 (line 10) ;; B2: # out( B7 ) <- in( B1 ) Freq: 0.9 0x0000ffff8c9a79bc: add w10, w21, #0x1 0x0000ffff8c9a79c0: b 0x0000ffff8c9a79f4 ;; B3: # out( B4 ) <- in( B4 ) top-of-loop Freq: 4.05 0x0000ffff8c9a79c4: mov w11, w13 0x0000ffff8c9a79c8: mov w13, w22 0x0000ffff8c9a79cc: mov w22, w11 ;*iload_2 {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@6 (line 10) ;; B4: # out( B3 B5 ) <- in( B12 B3 ) Loop( B4-B3 inner post of N151 reduction) Freq: 4.5 0x0000ffff8c9a79d0: add w21, w21, #0x1 ;*iinc {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@20 (line 10) 0x0000ffff8c9a79d4: add w22, w13, w22 ;*iadd {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@14 (line 11) ;; 0x186A0 0x0000ffff8c9a79d8: mov w8, #0x86a0 // #34464 0x0000ffff8c9a79dc: movk w8, #0x1, lsl #16 0x0000ffff8c9a79e0: cmp w21, w8 0x0000ffff8c9a79e4: b.lt 0x0000ffff8c9a79c4 // b.tstop;*if_icmpge {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@9 (line 10) ;; B5: # out( B14 ) <- in( B4 ) Freq: 0.45 0x0000ffff8c9a79e8: b 0x0000ffff8c9a7a8c ;; B6: # out( B7 ) <- in( B7 ) top-of-loop Freq: 8.1 0x0000ffff8c9a79ec: mov w19, w22 0x0000ffff8c9a79f0: mov w22, w13 ;*iload_2 {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@6 (line 10) ;; B7: # out( B6 B8 ) <- in( B2 B6 ) Loop( B7-B6 inner pre of N151 reduction) Freq: 9 0x0000ffff8c9a79f4: add w21, w21, #0x1 ;*iinc {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@20 (line 10) 0x0000ffff8c9a79f8: add w13, w22, w19 ;*iadd {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@14 (line 11) 0x0000ffff8c9a79fc: cmp w21, w10 0x0000ffff8c9a7a00: b.lt 0x0000ffff8c9a79ec // b.tstop;*if_icmpge {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@9 (line 10) ;; B8: # out( B11 B9 ) <- in( B7 ) Freq: 0.9 ;; 0x18691 0x0000ffff8c9a7a04: mov w8, #0x8691 // #34449 0x0000ffff8c9a7a08: movk w8, #0x1, lsl #16 0x0000ffff8c9a7a0c: cmp w21, w8 0x0000ffff8c9a7a10: b.ge 0x0000ffff8c9a7a74 // b.tcont ;; B9: # out( B10 ) <- in( B8 ) Freq: 0.899999 0x0000ffff8c9a7a14: nop 0x0000ffff8c9a7a18: nop 0x0000ffff8c9a7a1c: nop ;*iload_2 {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@6 (line 10) ;; B10: # out( B10 B11 ) <- in( B9 B10 ) Loop( B10-B10 inner main of N40 reduction) Freq: 8.99999 0x0000ffff8c9a7a20: add w10, w22, w13 0x0000ffff8c9a7a24: add w12, w10, w13 0x0000ffff8c9a7a28: add w10, w12, w10 0x0000ffff8c9a7a2c: add w12, w10, w12 0x0000ffff8c9a7a30: add w10, w12, w10 0x0000ffff8c9a7a34: add w11, w10, w12 0x0000ffff8c9a7a38: add w12, w11, w10 0x0000ffff8c9a7a3c: add w10, w12, w11 0x0000ffff8c9a7a40: add w12, w10, w12 0x0000ffff8c9a7a44: add w10, w12, w10 0x0000ffff8c9a7a48: add w12, w10, w12 0x0000ffff8c9a7a4c: add w10, w12, w10 0x0000ffff8c9a7a50: add w12, w10, w12 0x0000ffff8c9a7a54: add w10, w12, w10 0x0000ffff8c9a7a58: add w22, w10, w12 ;*iadd {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@14 (line 11) 0x0000ffff8c9a7a5c: add w21, w21, #0x10 ;*iinc {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@20 (line 10) 0x0000ffff8c9a7a60: add w13, w22, w10 ;*iadd {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@14 (line 11) ;; 0x18691 0x0000ffff8c9a7a64: mov w8, #0x8691 // #34449 0x0000ffff8c9a7a68: movk w8, #0x1, lsl #16 0x0000ffff8c9a7a6c: cmp w21, w8 0x0000ffff8c9a7a70: b.lt 0x0000ffff8c9a7a20 // b.tstop;*if_icmpge {reexecute=0 rethrow=0 return_oop=0} ; - CountedLoop::fibonacci@9 (line 10) ;; B11: # out( B13 B12 ) <- in( B8 B10 ) Freq: 0.9 ;; 0x186A0 0x0000ffff8c9a7a74: mov w8, #0x86a0 // #34464 0x0000ffff8c9a7a78: movk w8, #0x1, lsl #16 0x0000ffff8c9a7a7c: cmp w21, w8 0x0000ffff8c9a7a80: b.ge 0x0000ffff8c9a7a88 // b.tcont ;; B12: # out( B4 ) <- in( B11 ) Freq: 0.45 0x0000ffff8c9a7a84: b 0x0000ffff8c9a79d0 ;; B13: # out( B14 ) <- in( B11 ) Freq: 0.45 0x0000ffff8c9a7a88: mov w22, w13 ;; B14: # out( N130 ) <- in( B1 B5 B13 ) Freq: 1 0x0000ffff8c9a7a8c: mov w0, w22 0x0000ffff8c9a7a90: ldp x29, x30, [sp, #16] 0x0000ffff8c9a7a94: add sp, sp, #0x20 0x0000ffff8c9a7a98: ldr x8, [x28, #968] ; {poll_return} 0x0000ffff8c9a7a9c: cmp sp, x8 0x0000ffff8c9a7aa0: b.hi 0x0000ffff8c9a7aa8 // b.pmore 0x0000ffff8c9a7aa4: ret 0x0000ffff8c9a7aa8: adr x8, 0x0000ffff8c9a7a98 ; {internal_word} 0x0000ffff8c9a7aac: str x8, [x28, #992] 0x0000ffff8c9a7ab0: adrp x8, 0x0000ffff8c229000 ; {runtime_call SafepointBlob} 0x0000ffff8c9a7ab4: add x8, x8, #0xd40 0x0000ffff8c9a7ab8: br x8 0x0000ffff8c9a7abc: .inst 0x00000000 ; undefined [Exception Handler] 0x0000ffff8c9a7ac0: adrp x8, 0x0000ffff8c17c000 ; {no_reloc} 0x0000ffff8c9a7ac4: add x8, x8, #0xe40 0x0000ffff8c9a7ac8: br x8 [Deopt Handler Code] 0x0000ffff8c9a7acc: adr x30, 0x0000ffff8c9a7acc 0x0000ffff8c9a7ad0: adrp x8, 0x0000ffff8c22a000 ; {runtime_call DeoptimizationBlob} 0x0000ffff8c9a7ad4: add x8, x8, #0x40 0x0000ffff8c9a7ad8: br x8 0x0000ffff8c9a7adc: .inst 0x00000000 ; undefined -------------------------------------------------------------------------------- [/Disassembly] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Oops: 0x0000ffff8c9a7ae0: 0x00000000802587d0 a 'jdk/internal/loader/ClassLoaders$AppClassLoader'{0x00000000802587d0} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Metadata: 0x0000ffff8c9a7ae8: 0x0000ffff2e800320 {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pc-bytecode offsets: PcDesc(pc=0x0000ffff8c9a793f offset=ffffffff bits=0): PcDesc(pc=0x0000ffff8c9a79ac offset=6c bits=0): CountedLoop::fibonacci@6 (line 10) PcDesc(pc=0x0000ffff8c9a79bc offset=7c bits=0): CountedLoop::fibonacci@9 (line 10) PcDesc(pc=0x0000ffff8c9a79d0 offset=90 bits=0): CountedLoop::fibonacci@6 (line 10) PcDesc(pc=0x0000ffff8c9a79d4 offset=94 bits=0): CountedLoop::fibonacci@20 (line 10) PcDesc(pc=0x0000ffff8c9a79d8 offset=98 bits=0): CountedLoop::fibonacci@14 (line 11) PcDesc(pc=0x0000ffff8c9a79e8 offset=a8 bits=0): CountedLoop::fibonacci@9 (line 10) PcDesc(pc=0x0000ffff8c9a79f4 offset=b4 bits=0): CountedLoop::fibonacci@6 (line 10) PcDesc(pc=0x0000ffff8c9a79f8 offset=b8 bits=0): CountedLoop::fibonacci@20 (line 10) PcDesc(pc=0x0000ffff8c9a79fc offset=bc bits=0): CountedLoop::fibonacci@14 (line 11) PcDesc(pc=0x0000ffff8c9a7a04 offset=c4 bits=0): CountedLoop::fibonacci@9 (line 10) PcDesc(pc=0x0000ffff8c9a7a20 offset=e0 bits=0): CountedLoop::fibonacci@6 (line 10) PcDesc(pc=0x0000ffff8c9a7a5c offset=11c bits=0): CountedLoop::fibonacci@14 (line 11) PcDesc(pc=0x0000ffff8c9a7a60 offset=120 bits=0): CountedLoop::fibonacci@20 (line 10) PcDesc(pc=0x0000ffff8c9a7a64 offset=124 bits=0): CountedLoop::fibonacci@14 (line 11) PcDesc(pc=0x0000ffff8c9a7a74 offset=134 bits=0): CountedLoop::fibonacci@9 (line 10) PcDesc(pc=0x0000ffff8c9a7ae1 offset=1a1 bits=0): - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - oop maps:ImmutableOopMapSet contains 0 OopMaps - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - scopes: ScopeDesc(pc=0x0000ffff8c9a79ac offset=6c): CountedLoop::fibonacci@6 (line 10) ScopeDesc(pc=0x0000ffff8c9a79bc offset=7c): CountedLoop::fibonacci@9 (line 10) ScopeDesc(pc=0x0000ffff8c9a79d0 offset=90): CountedLoop::fibonacci@6 (line 10) ScopeDesc(pc=0x0000ffff8c9a79d4 offset=94): CountedLoop::fibonacci@20 (line 10) ScopeDesc(pc=0x0000ffff8c9a79d8 offset=98): CountedLoop::fibonacci@14 (line 11) ScopeDesc(pc=0x0000ffff8c9a79e8 offset=a8): CountedLoop::fibonacci@9 (line 10) ScopeDesc(pc=0x0000ffff8c9a79f4 offset=b4): CountedLoop::fibonacci@6 (line 10) ScopeDesc(pc=0x0000ffff8c9a79f8 offset=b8): CountedLoop::fibonacci@20 (line 10) ScopeDesc(pc=0x0000ffff8c9a79fc offset=bc): CountedLoop::fibonacci@14 (line 11) ScopeDesc(pc=0x0000ffff8c9a7a04 offset=c4): CountedLoop::fibonacci@9 (line 10) ScopeDesc(pc=0x0000ffff8c9a7a20 offset=e0): CountedLoop::fibonacci@6 (line 10) ScopeDesc(pc=0x0000ffff8c9a7a5c offset=11c): CountedLoop::fibonacci@14 (line 11) ScopeDesc(pc=0x0000ffff8c9a7a60 offset=120): CountedLoop::fibonacci@20 (line 10) ScopeDesc(pc=0x0000ffff8c9a7a64 offset=124): CountedLoop::fibonacci@14 (line 11) ScopeDesc(pc=0x0000ffff8c9a7a74 offset=134): CountedLoop::fibonacci@9 (line 10) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - relocations: @0x0000ffff8c9a7900: 7c04a1b88a700000ffff380b relocInfo@0x0000ffff8c9a790a [type=7(external_word) addr=0x0000ffff8c9a796c offset=44 data={a1b88a700000ffff}] | [target=0x0000ffffa1b88a70] @0x0000ffff8c9a790c: 300a relocInfo@0x0000ffff8c9a790c [type=6(runtime_call) addr=0x0000ffff8c9a7994 offset=40] | [destination=0x0000ffffa2327f98] @0x0000ffff8c9a790e: 5841 relocInfo@0x0000ffff8c9a790e [type=11(poll_return) addr=0x0000ffff8c9a7a98 offset=260] @0x0000ffff8c9a7910: 78044004 relocInfo@0x0000ffff8c9a7912 [type=8(internal_word) addr=0x0000ffff8c9a7aa8 offset=16 data=4] | [target=0x0000ffff8c9a7a98] @0x0000ffff8c9a7914: 3002 relocInfo@0x0000ffff8c9a7914 [type=6(runtime_call) addr=0x0000ffff8c9a7ab0 offset=8] | [destination=0x0000ffff8c229d40] @0x0000ffff8c9a7916: 0004 relocInfo@0x0000ffff8c9a7916 [type=0(none) addr=0x0000ffff8c9a7ac0 offset=16] @0x0000ffff8c9a7918: 3000 relocInfo@0x0000ffff8c9a7918 [type=6(runtime_call) addr=0x0000ffff8c9a7ac0 offset=0] | [destination=0x0000ffff8c17ce40] @0x0000ffff8c9a791a: 3004 relocInfo@0x0000ffff8c9a791a [type=6(runtime_call) addr=0x0000ffff8c9a7ad0 offset=16] | [destination=0x0000ffff8c22a040] @0x0000ffff8c9a791c: 0000 relocInfo@0x0000ffff8c9a791c [type=0(none) addr=0x0000ffff8c9a7ad0 offset=0] @0x0000ffff8c9a791e: 0000 relocInfo@0x0000ffff8c9a791e [type=0(none) addr=0x0000ffff8c9a7ad0 offset=0] @0x0000ffff8c9a7920: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Dependencies: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ExceptionHandlerTable (size = 0 bytes) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ImplicitExceptionTable is empty - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Recorded oops: #0: 0x0000000000000000 NULL-oop #1: 0x00000000802587d0 a 'jdk/internal/loader/ClassLoaders$AppClassLoader'{0x00000000802587d0} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Recorded metadata: #0: 0x0000000000000000 NULL-oop #1: 0x0000ffff2e800320 {method} {0x0000ffff2e800320} 'fibonacci' '()I' in 'CountedLoop' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -