8193699: aarch64 fails to build after 8167372
Added ThreadInVMfromUnknown support Reviewed-by: smonteith, vlivanov
This commit is contained in:
parent
a2000f8720
commit
9726143563
@ -3742,13 +3742,16 @@ void MacroAssembler::decode_klass_not_null(Register r) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MacroAssembler::set_narrow_oop(Register dst, jobject obj) {
|
void MacroAssembler::set_narrow_oop(Register dst, jobject obj) {
|
||||||
assert (UseCompressedOops, "should only be used for compressed oops");
|
#ifdef ASSERT
|
||||||
assert (Universe::heap() != NULL, "java heap should be initialized");
|
{
|
||||||
assert (oop_recorder() != NULL, "this assembler needs an OopRecorder");
|
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);
|
int oop_index = oop_recorder()->find_index(obj);
|
||||||
assert(Universe::heap()->is_in_reserved(JNIHandles::resolve(obj)), "should be real oop");
|
|
||||||
|
|
||||||
InstructionMark im(this);
|
InstructionMark im(this);
|
||||||
RelocationHolder rspec = oop_Relocation::spec(oop_index);
|
RelocationHolder rspec = oop_Relocation::spec(oop_index);
|
||||||
code_section()->relocate(inst_mark(), rspec);
|
code_section()->relocate(inst_mark(), rspec);
|
||||||
@ -4006,8 +4009,13 @@ void MacroAssembler::movoop(Register dst, jobject obj, bool immediate) {
|
|||||||
if (obj == NULL) {
|
if (obj == NULL) {
|
||||||
oop_index = oop_recorder()->allocate_oop_index(obj);
|
oop_index = oop_recorder()->allocate_oop_index(obj);
|
||||||
} else {
|
} 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);
|
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);
|
RelocationHolder rspec = oop_Relocation::spec(oop_index);
|
||||||
if (! immediate) {
|
if (! immediate) {
|
||||||
@ -4030,8 +4038,13 @@ void MacroAssembler::mov_metadata(Register dst, Metadata* obj) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Address MacroAssembler::constant_oop_address(jobject obj) {
|
Address MacroAssembler::constant_oop_address(jobject obj) {
|
||||||
assert(oop_recorder() != NULL, "this assembler needs an OopRecorder");
|
#ifdef ASSERT
|
||||||
assert(Universe::heap()->is_in_reserved(JNIHandles::resolve(obj)), "not an oop");
|
{
|
||||||
|
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);
|
int oop_index = oop_recorder()->find_index(obj);
|
||||||
return Address((address)obj, oop_Relocation::spec(oop_index));
|
return Address((address)obj, oop_Relocation::spec(oop_index));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user