< prev index next >
src/hotspot/cpu/x86/macroAssembler_x86.cpp
Print this page
*** 3726,3735 ****
--- 3726,3749 ----
cmpptr(value, temp_reg);
jcc(Assembler::greaterEqual, not_buffered);
}
}
+ void MacroAssembler::test_oop_is_not_value(Register oop, Register temp, Label& is_not_value) {
+ const int mask = Universe::oop_metadata_valuetype_mask();
+ #ifdef _LP64
+ if (UseCompressedClassPointers) {
+ movl(temp, Address(oop, oopDesc::klass_offset_in_bytes()));
+ } else
+ #endif
+ movptr(temp, Address(oop, oopDesc::klass_offset_in_bytes()));
+
+ andl(temp, mask);
+ testl(temp, temp);
+ jcc(Assembler::zero, is_not_value);
+ }
+
void MacroAssembler::os_breakpoint() {
// instead of directly emitting a breakpoint, call os:breakpoint for better debugability
// (e.g., MSVC can't call ps() otherwise)
call(RuntimeAddress(CAST_FROM_FN_PTR(address, os::breakpoint)));
}
< prev index next >