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