< prev index next >

src/cpu/sparc/vm/templateTable_sparc.cpp

Print this page

        

*** 703,715 **** Label rewrite, done; // get next byte __ ldub(at_bcp(Bytecodes::length_for(Bytecodes::_aload_0)), G3_scratch); - // do actual aload_0 - aload(0); - // if _getfield then wait with rewrite __ cmp_and_br_short(G3_scratch, (int)Bytecodes::_getfield, Assembler::equal, Assembler::pn, done); // if _igetfield then rewrite to _fast_iaccess_0 assert(Bytecodes::java_code(Bytecodes::_fast_iaccess_0) == Bytecodes::_aload_0, "adjust fast bytecode def"); --- 703,712 ----
*** 736,748 **** // rewrite // G4_scratch: fast bytecode __ bind(rewrite); patch_bytecode(Bytecodes::_aload_0, G4_scratch, G3_scratch, false); __ bind(done); - } else { - aload(0); } } void TemplateTable::istore() { transition(itos, vtos); locals_index(G3_scratch); --- 733,746 ---- // rewrite // G4_scratch: fast bytecode __ bind(rewrite); patch_bytecode(Bytecodes::_aload_0, G4_scratch, G3_scratch, false); __ bind(done); } + + // Do actual aload_0 (must do this after patch_bytecode which might call VM and GC might change oop). + aload(0); } void TemplateTable::istore() { transition(itos, vtos); locals_index(G3_scratch);
< prev index next >