# HG changeset patch # User rraghavan # Date 1514277529 28800 # Node ID 8441a7cea1c1cc3bf4235929bfb717c09cceb92d # Parent 2207e2917a68af31ea4ccc7d9955613284a7848c 8193699: aarch64 fails to build after 8167372 Summary: added ThreadInVMfromUnknown support Reviewed-by: smonteith, vlivanov diff -r 2207e2917a68 -r 8441a7cea1c1 src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp --- a/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Fri Dec 22 22:06:54 2017 -0800 +++ b/src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Tue Dec 26 00:38:49 2017 -0800 @@ -3742,13 +3742,16 @@ } void MacroAssembler::set_narrow_oop(Register dst, jobject obj) { - assert (UseCompressedOops, "should only be used for compressed oops"); - assert (Universe::heap() != NULL, "java heap should be initialized"); - assert (oop_recorder() != NULL, "this assembler needs an OopRecorder"); - +#ifdef ASSERT + { + ThreadInVMfromUnknown tiv; + assert (UseCompressedOops, "should only be used for compressed oops"); + assert (Universe::heap() != NULL, "java heap should be initialized"); + assert (oop_recorder() != NULL, "this assembler needs an OopRecorder"); + assert(Universe::heap()->is_in_reserved(JNIHandles::resolve(obj)), "should be real oop"); + } +#endif int oop_index = oop_recorder()->find_index(obj); - assert(Universe::heap()->is_in_reserved(JNIHandles::resolve(obj)), "should be real oop"); - InstructionMark im(this); RelocationHolder rspec = oop_Relocation::spec(oop_index); code_section()->relocate(inst_mark(), rspec); @@ -4006,8 +4009,13 @@ if (obj == NULL) { oop_index = oop_recorder()->allocate_oop_index(obj); } else { +#ifdef ASSERT + { + ThreadInVMfromUnknown tiv; + assert(Universe::heap()->is_in_reserved(JNIHandles::resolve(obj)), "should be real oop"); + } +#endif oop_index = oop_recorder()->find_index(obj); - assert(Universe::heap()->is_in_reserved(JNIHandles::resolve(obj)), "should be real oop"); } RelocationHolder rspec = oop_Relocation::spec(oop_index); if (! immediate) { @@ -4030,8 +4038,13 @@ } Address MacroAssembler::constant_oop_address(jobject obj) { - assert(oop_recorder() != NULL, "this assembler needs an OopRecorder"); - assert(Universe::heap()->is_in_reserved(JNIHandles::resolve(obj)), "not an oop"); +#ifdef ASSERT + { + ThreadInVMfromUnknown tiv; + assert(oop_recorder() != NULL, "this assembler needs an OopRecorder"); + assert(Universe::heap()->is_in_reserved(JNIHandles::resolve(obj)), "not an oop"); + } +#endif int oop_index = oop_recorder()->find_index(obj); return Address((address)obj, oop_Relocation::spec(oop_index)); }