< 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 >