< prev index next >
src/hotspot/cpu/x86/macroAssembler_x86.cpp
Print this page
rev 50099 : 8203157: Object equals abstraction for BarrierSetAssembler
*** 116,133 ****
void MacroAssembler::cmpklass(Register src1, Metadata* obj) {
cmp_literal32(src1, (int32_t)obj, metadata_Relocation::spec_for_immediate());
}
! void MacroAssembler::cmpoop(Address src1, jobject obj) {
cmp_literal32(src1, (int32_t)obj, oop_Relocation::spec_for_immediate());
}
! void MacroAssembler::cmpoop(Register src1, jobject obj) {
cmp_literal32(src1, (int32_t)obj, oop_Relocation::spec_for_immediate());
}
void MacroAssembler::extend_sign(Register hi, Register lo) {
// According to Intel Doc. AP-526, "Integer Divide", p.18.
if (VM_Version::is_P6() && hi == rdx && lo == rax) {
cdql();
} else {
--- 116,143 ----
void MacroAssembler::cmpklass(Register src1, Metadata* obj) {
cmp_literal32(src1, (int32_t)obj, metadata_Relocation::spec_for_immediate());
}
! void MacroAssembler::cmpoop_raw(Address src1, jobject obj) {
cmp_literal32(src1, (int32_t)obj, oop_Relocation::spec_for_immediate());
}
! void MacroAssembler::cmpoop_raw(Register src1, jobject obj) {
cmp_literal32(src1, (int32_t)obj, oop_Relocation::spec_for_immediate());
}
+ void MacroAssembler::cmpoop(Address src1, jobject obj) {
+ BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
+ bs->obj_equals(this, IN_HEAP, src1, obj);
+ }
+
+ void MacroAssembler::cmpoop(Register src1, jobject obj) {
+ BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
+ bs->obj_equals(this, IN_HEAP, src1, obj);
+ }
+
void MacroAssembler::extend_sign(Register hi, Register lo) {
// According to Intel Doc. AP-526, "Integer Divide", p.18.
if (VM_Version::is_P6() && hi == rdx && lo == rax) {
cdql();
} else {
*** 2783,2803 ****
cmp_literal32(src1, (int32_t) src2.target(), src2.rspec());
#endif // _LP64
}
void MacroAssembler::cmpoop(Register src1, Register src2) {
! cmpptr(src1, src2);
}
void MacroAssembler::cmpoop(Register src1, Address src2) {
! cmpptr(src1, src2);
}
#ifdef _LP64
void MacroAssembler::cmpoop(Register src1, jobject src2) {
movoop(rscratch1, src2);
! cmpptr(src1, rscratch1);
}
#endif
void MacroAssembler::locked_cmpxchgptr(Register reg, AddressLiteral adr) {
if (reachable(adr)) {
--- 2793,2816 ----
cmp_literal32(src1, (int32_t) src2.target(), src2.rspec());
#endif // _LP64
}
void MacroAssembler::cmpoop(Register src1, Register src2) {
! BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
! bs->obj_equals(this, IN_HEAP, src1, src2);
}
void MacroAssembler::cmpoop(Register src1, Address src2) {
! BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
! bs->obj_equals(this, IN_HEAP, src1, src2);
}
#ifdef _LP64
void MacroAssembler::cmpoop(Register src1, jobject src2) {
movoop(rscratch1, src2);
! BarrierSetAssembler* bs = BarrierSet::barrier_set()->barrier_set_assembler();
! bs->obj_equals(this, IN_HEAP, src1, rscratch1);
}
#endif
void MacroAssembler::locked_cmpxchgptr(Register reg, AddressLiteral adr) {
if (reachable(adr)) {
< prev index next >