============================= C2-compiled nmethod ============================== ----------------------------------- MetaData ----------------------------------- {method} - this oop: 0x00007fc73a8f6f00 - method holder: 'java/lang/String' - constants: 0x00007fc73a8f2440 constant pool [996]/operands[21] {0x00007fc73a8f2440} for 'java/lang/String' cache=0x00007fc73aa083e0 - access: 0x81000001 public - name: 'charAt' - signature: '(I)C' - max stack: 3 - max locals: 2 - size of params: 2 - method size: 12 - highest level: 3 - vtable index: -2 - i2i entry: 0x00007fc74d015f20 - adapters: AHE@0x00007fc75c5e03d0: 0xba000000 i2c: 0x00007fc74d10c1e0 c2i: 0x00007fc74d10c31d c2iUV: 0x00007fc74d10c2f0 - compiled entry 0x00007fc74d1c6160 - code size: 25 - code start: 0x00007fc73a8f6ec0 - code end (excl): 0x00007fc73a8f6ed9 - method data: 0x00007fc73ab51430 - checked ex length: 0 - linenumber start: 0x00007fc73a8f6ed9 - localvar length: 2 - localvar start: 0x00007fc73a8f6ee6 - compiled code: nmethod 1329 2 3 java.lang.String::charAt (25 bytes) --------------------------------- OptoAssembly --------------------------------- # # #r018 rsi:rsi : parm 0: java/lang/String:NotNull:exact * #r016 rdx : parm 1: int # -- Old rsp -- Framesize: 48 -- #r583 rsp+44: in_preserve #r582 rsp+40: return address #r581 rsp+36: in_preserve #r580 rsp+32: saved fp register #r579 rsp+28: pad2, stack alignment #r578 rsp+24: pad2, stack alignment #r577 rsp+20: Fixed slot 1 #r576 rsp+16: Fixed slot 0 #r587 rsp+12: spill #r586 rsp+ 8: spill #r585 rsp+ 4: spill #r584 rsp+ 0: spill # 000 N65: # out( B1 ) <- BLOCK HEAD IS JUNK Freq: 1 000 movl rscratch1, [j_rarg0 + oopDesc::klass_offset_in_bytes()] # compressed klass decode_klass_not_null rscratch1, rscratch1 cmpq rax, rscratch1 # Inline cache check jne SharedRuntime::_ic_miss_stub nop # nops to align entry point nop # 12 bytes pad for loops and calls 020 B1: # out( B5 B2 ) <- BLOCK HEAD IS JUNK Freq: 1 020 # stack bang (240 bytes) pushq rbp # Save rbp subq rsp, #32 # Create frame 02c movsbl R11, [RSI + #20 (8-bit)] # byte ! Field: java/lang/String.coder (constant) 031 testl R11, R11 034 jne,s B5 P=0.000000 C=6031.000000 036 B2: # out( B7 B3 ) <- in( B1 ) Freq: 1 036 movl RBP, [RSI + #12 (8-bit)] # compressed ptr ! Field: java/lang/String.value (constant) 039 movl R11, [RBP + #12 (8-bit)] # range 03d NullCheck RBP 03d B3: # out( B6 B4 ) <- in( B2 ) Freq: 0.999999 03d cmpl RDX, R11 # unsigned 040 jnb,us B6 P=0.000000 C=5375.000000 042 B4: # out( N65 ) <- in( B3 ) Freq: 0.999998 042 movzbl RAX, [RBP + #16 + RDX] # ubyte 047 addq rsp, 32 # Destroy frame popq rbp movq rscratch1, poll_offset[r15_thread] #polling_page_address testl rax, [rscratch1] # Safepoint: poll for GC 056 ret 057 B5: # out( N65 ) <- in( B1 ) Freq: 5e-07 057 movq RBP, RSI # spill 05a movl [rsp + #0], RDX # spill 05d movl [rsp + #4], R11 # spill 062 movl RSI, #-179 # int 067 call,static wrapper for: uncommon_trap(reason='unstable_if' action='reinterpret' debug_id='0') # java.lang.String::isLatin1 @ bci:10 L[0]=_ STK[0]=rsp + #4 # java.lang.String::charAt @ bci:1 L[0]=RBP L[1]=rsp + #0 # OopMap {rbp=Oop off=108/0x6c} 06c ud2 # ShouldNotReachHere 06e B6: # out( N65 ) <- in( B3 ) Freq: 4.76836e-07 06e movl RSI, #-27 # int 073 movl [rsp + #4], RDX # spill 077 call,static wrapper for: uncommon_trap(reason='range_check' action='reinterpret' debug_id='0') # java.lang.StringLatin1::charAt @ bci:1 L[0]=RBP L[1]=rsp + #4 STK[0]=rsp + #4 # java.lang.String::charAt @ bci:12 L[0]=_ L[1]=_ # OopMap {rbp=NarrowOop off=124/0x7c} 07c ud2 # ShouldNotReachHere 07e B7: # out( N65 ) <- in( B2 ) Freq: 1.01328e-06 07e movl RSI, #-10 # int 083 movl [rsp + #4], RDX # spill 087 call,static wrapper for: uncommon_trap(reason='null_check' action='maybe_recompile' debug_id='0') # java.lang.StringLatin1::charAt @ bci:1 L[0]=RBP L[1]=rsp + #4 STK[0]=rsp + #4 # java.lang.String::charAt @ bci:12 L[0]=_ L[1]=_ # OopMap {rbp=NarrowOop off=140/0x8c} 08c ud2 # ShouldNotReachHere -------------------------------------------------------------------------------- 1330 2 3 java.lang.String::charAt (25 bytes) made not entrant ----------------------------------- Assembly ----------------------------------- Compiled method (t4)(c2) 1330 24 4 java.lang.String::charAt (25 bytes) total in heap [0x00007fc74d1d7990,0x00007fc74d1d7d38] = 936 relocation [0x00007fc74d1d7b10,0x00007fc74d1d7b20] = 16 main code [0x00007fc74d1d7b20,0x00007fc74d1d7bc0] = 160 stub code [0x00007fc74d1d7bc0,0x00007fc74d1d7bd8] = 24 metadata [0x00007fc74d1d7bd8,0x00007fc74d1d7bf0] = 24 scopes data [0x00007fc74d1d7bf0,0x00007fc74d1d7c50] = 96 scopes pcs [0x00007fc74d1d7c50,0x00007fc74d1d7d20] = 208 dependencies [0x00007fc74d1d7d20,0x00007fc74d1d7d28] = 8 nul chk table [0x00007fc74d1d7d28,0x00007fc74d1d7d38] = 16 [Constant Pool (empty)] [Code] [Entry Point] 0x00007fc74d1d7b20: 448b 5608 49c1 e203 493b c20f 856f 69e7 ff90 9090 9090 9090 9090 9090 9090 9090 [Verified Entry Point] 0x00007fc74d1d7b40: 8984 2400 a0fe ff55 4883 ec20 440f be5e 1445 85db 7521 8b6e 0c44 8b5d 0c41 3bd3 0x00007fc74d1d7b60: 732c 0fb6 4415 1048 83c4 205d 4d8b 9728 0100 0041 8502 c348 8bee 8914 2444 895c 0x00007fc74d1d7b80: 2404 be4d ffff ffe8 1483 e7ff 0f0b bee5 ffff ff89 5424 04e8 0483 e7ff 0f0b bef6 0x00007fc74d1d7ba0: ffff ff89 5424 04e8 f482 e7ff 0f0b f4f4 f4f4 f4f4 f4f4 f4f4 f4f4 f4f4 f4f4 f4f4 [Exception Handler] 0x00007fc74d1d7bc0: e95b 0df5 ffe8 0000 0000 4883 2c24 05e9 0c7d e7ff [End]