< prev index next >

src/cpu/sparc/vm/jniFastGetField_sparc.cpp

Print this page
rev 12906 : [mq]: gc_interface

*** 65,77 **** __ sethi (cnt_addrlit, O3); Address cnt_addr(O3, cnt_addrlit.low10()); __ ld (cnt_addr, G4); __ andcc (G4, 1, G0); __ br (Assembler::notZero, false, Assembler::pn, label1); ! __ delayed()->srl (O2, 2, O4); ! __ andn (O1, JNIHandles::weak_tag_mask, O1); ! __ ld_ptr (O1, 0, O5); assert(count < LIST_CAPACITY, "LIST_CAPACITY too small"); speculative_load_pclist[count] = __ pc(); switch (type) { case T_BOOLEAN: __ ldub (O5, O4, G3); break; --- 65,81 ---- __ sethi (cnt_addrlit, O3); Address cnt_addr(O3, cnt_addrlit.low10()); __ ld (cnt_addr, G4); __ andcc (G4, 1, G0); __ br (Assembler::notZero, false, Assembler::pn, label1); ! __ delayed()->andcc(O1, JNIHandles::weak_tag_mask, G0); // Test for jweak ! ! // Annul the resolving load if it is a jweak ! __ br(Assembler::notZero, true, Assembler::pt, label1); ! __ delayed()->ld_ptr (O1, 0, O5); ! ! __ srl(O2, 2, O4); assert(count < LIST_CAPACITY, "LIST_CAPACITY too small"); speculative_load_pclist[count] = __ pc(); switch (type) { case T_BOOLEAN: __ ldub (O5, O4, G3); break;
< prev index next >