< prev index next >
src/cpu/ppc/vm/interp_masm_ppc_64.cpp
Print this page
rev 8107 : 8077838: Recent developments for ppc.
*** 444,454 ****
}
#endif
}
// Load object from cpool->resolved_references(index).
! void InterpreterMacroAssembler::load_resolved_reference_at_index(Register result, Register index) {
assert_different_registers(result, index);
get_constant_pool(result);
// Convert from field index to resolved_references() index and from
// word index to byte offset. Since this is a java object, it can be compressed.
--- 444,454 ----
}
#endif
}
// Load object from cpool->resolved_references(index).
! void InterpreterMacroAssembler::load_resolved_reference_at_index(Register result, Register index, Label *is_null) {
assert_different_registers(result, index);
get_constant_pool(result);
// Convert from field index to resolved_references() index and from
// word index to byte offset. Since this is a java object, it can be compressed.
*** 467,477 ****
stop("resolved reference index out of bounds", 0x09256);
bind(index_ok);
#endif
// Add in the index.
add(result, tmp, result);
! load_heap_oop(result, arrayOopDesc::base_offset_in_bytes(T_OBJECT), result);
}
// Generate a subtype check: branch to ok_is_subtype if sub_klass is
// a subtype of super_klass. Blows registers Rsub_klass, tmp1, tmp2.
void InterpreterMacroAssembler::gen_subtype_check(Register Rsub_klass, Register Rsuper_klass, Register Rtmp1,
--- 467,477 ----
stop("resolved reference index out of bounds", 0x09256);
bind(index_ok);
#endif
// Add in the index.
add(result, tmp, result);
! load_heap_oop(result, arrayOopDesc::base_offset_in_bytes(T_OBJECT), result, is_null);
}
// Generate a subtype check: branch to ok_is_subtype if sub_klass is
// a subtype of super_klass. Blows registers Rsub_klass, tmp1, tmp2.
void InterpreterMacroAssembler::gen_subtype_check(Register Rsub_klass, Register Rsuper_klass, Register Rtmp1,
*** 874,884 ****
and_(R0/*==0?*/, current_header, tmp);
// If condition is true we are done and hence we can store 0 in the displaced
// header indicating it is a recursive lock.
bne(CCR0, slow_case);
- release();
std(R0/*==0!*/, BasicObjectLock::lock_offset_in_bytes() +
BasicLock::displaced_header_offset_in_bytes(), monitor);
b(done);
// } else {
--- 874,883 ----
*** 1859,1869 ****
// Pointer to the parameter area in the MDO.
const Register mdp = tmp1;
add(mdp, tmp1, R28_mdx);
! // Pffset of the current profile entry to update.
const Register entry_offset = tmp2;
// entry_offset = array len in number of cells
ld(entry_offset, in_bytes(ArrayData::array_len_offset()), mdp);
int off_base = in_bytes(ParametersTypeData::stack_slot_offset(0));
--- 1858,1868 ----
// Pointer to the parameter area in the MDO.
const Register mdp = tmp1;
add(mdp, tmp1, R28_mdx);
! // Offset of the current profile entry to update.
const Register entry_offset = tmp2;
// entry_offset = array len in number of cells
ld(entry_offset, in_bytes(ArrayData::array_len_offset()), mdp);
int off_base = in_bytes(ParametersTypeData::stack_slot_offset(0));
< prev index next >