< prev index next >

src/cpu/sparc/vm/templateTable_sparc.cpp

Print this page

*** 3239,3251 **** __ ldub(G3_scratch, Roffset, G3_scratch); __ cmp(G3_scratch, JVM_CONSTANT_Class); __ br(Assembler::notEqual, false, Assembler::pn, slow_case); __ delayed()->sll(Roffset, LogBytesPerWord, Roffset); // get InstanceKlass ! //__ sll(Roffset, LogBytesPerWord, Roffset); // executed in delay slot ! __ add(Roffset, sizeof(ConstantPool), Roffset); ! __ ld_ptr(Rscratch, Roffset, RinstanceKlass); // make sure klass is fully initialized: __ ldub(RinstanceKlass, in_bytes(InstanceKlass::init_state_offset()), G3_scratch); __ cmp(G3_scratch, InstanceKlass::fully_initialized); __ br(Assembler::notEqual, false, Assembler::pn, slow_case); --- 3239,3249 ---- __ ldub(G3_scratch, Roffset, G3_scratch); __ cmp(G3_scratch, JVM_CONSTANT_Class); __ br(Assembler::notEqual, false, Assembler::pn, slow_case); __ delayed()->sll(Roffset, LogBytesPerWord, Roffset); // get InstanceKlass ! __ load_resolved_klass_at_offset(Rscratch, Roffset, RinstanceKlass); // make sure klass is fully initialized: __ ldub(RinstanceKlass, in_bytes(InstanceKlass::init_state_offset()), G3_scratch); __ cmp(G3_scratch, InstanceKlass::fully_initialized); __ br(Assembler::notEqual, false, Assembler::pn, slow_case);
*** 3463,3474 **** __ ba_short(resolved); // Extract target class from constant pool __ bind(quicked); ! __ add(Roffset, sizeof(ConstantPool), Roffset); ! __ ld_ptr(Lscratch, Roffset, RspecifiedKlass); __ bind(resolved); __ load_klass(Otos_i, RobjKlass); // get value klass // Generate a fast subtype check. Branch to cast_ok if no // failure. Throw exception if failure. --- 3461,3473 ---- __ ba_short(resolved); // Extract target class from constant pool __ bind(quicked); ! __ load_resolved_klass_at_offset(Lscratch, Roffset, RspecifiedKlass); ! ! __ bind(resolved); __ load_klass(Otos_i, RobjKlass); // get value klass // Generate a fast subtype check. Branch to cast_ok if no // failure. Throw exception if failure.
*** 3520,3532 **** __ ba_short(resolved); // Extract target class from constant pool __ bind(quicked); - __ add(Roffset, sizeof(ConstantPool), Roffset); __ get_constant_pool(Lscratch); ! __ ld_ptr(Lscratch, Roffset, RspecifiedKlass); __ bind(resolved); __ load_klass(Otos_i, RobjKlass); // get value klass // Generate a fast subtype check. Branch to cast_ok if no // failure. Return 0 if failure. --- 3519,3531 ---- __ ba_short(resolved); // Extract target class from constant pool __ bind(quicked); __ get_constant_pool(Lscratch); ! __ load_resolved_klass_at_offset(Lscratch, Roffset, RspecifiedKlass); ! __ bind(resolved); __ load_klass(Otos_i, RobjKlass); // get value klass // Generate a fast subtype check. Branch to cast_ok if no // failure. Return 0 if failure.
< prev index next >