|
|
@@ -1,5 +1,5 @@ |
|
|
/* |
|
|
* Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved. |
|
|
* Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved. |
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
|
* |
|
|
* This code is free software; you can redistribute it and/or modify it |
|
@@ -2447,7 +2447,7 @@ void MacroAssembler::super_call_VM_leaf(address entry_point, Register arg_0, Reg |
|
|
void MacroAssembler::get_vm_result(Register oop_result, Register java_thread) { |
|
|
movptr(oop_result, Address(java_thread, JavaThread::vm_result_offset())); |
|
|
movptr(Address(java_thread, JavaThread::vm_result_offset()), NULL_WORD); |
|
|
verify_oop(oop_result, "broken oop in call_VM_base"); |
|
|
verify_oop_msg(oop_result, "broken oop in call_VM_base"); |
|
|
} |
|
|
|
|
|
void MacroAssembler::get_vm_result_2(Register metadata_result, Register java_thread) { |
|
@@ -4638,15 +4638,15 @@ void MacroAssembler::cmov32(Condition cc, Register dst, Register src) { |
|
|
} |
|
|
} |
|
|
|
|
|
void MacroAssembler::verify_oop(Register reg, const char* s) { |
|
|
void MacroAssembler::_verify_oop(Register reg, const char* s, const char* file, int line) { |
|
|
if (!VerifyOops) return; |
|
|
|
|
|
// Pass register number to verify_oop_subroutine |
|
|
const char* b = NULL; |
|
|
{ |
|
|
ResourceMark rm; |
|
|
stringStream ss; |
|
|
ss.print("verify_oop: %s: %s", reg->name(), s); |
|
|
ss.print("verify_oop: %s: %s (%s:%d)", reg->name(), s, file, line); |
|
|
b = code_string(ss.as_string()); |
|
|
} |
|
|
BLOCK_COMMENT("verify_oop {"); |
|
@@ -4728,7 +4728,7 @@ Address MacroAssembler::argument_address(RegisterOrConstant arg_slot, |
|
|
} |
|
|
|
|
|
|
|
|
void MacroAssembler::verify_oop_addr(Address addr, const char* s) { |
|
|
void MacroAssembler::_verify_oop_addr(Address addr, const char* s, const char* file, int line) { |
|
|
if (!VerifyOops) return; |
|
|
|
|
|
// Address adjust(addr.base(), addr.index(), addr.scale(), addr.disp() + BytesPerWord); |
|
@@ -4737,7 +4737,7 @@ void MacroAssembler::verify_oop_addr(Address addr, const char* s) { |
|
|
{ |
|
|
ResourceMark rm; |
|
|
stringStream ss; |
|
|
ss.print("verify_oop_addr: %s", s); |
|
|
ss.print("verify_oop_addr: %s (%s:%d)", s, file, line); |
|
|
b = code_string(ss.as_string()); |
|
|
} |
|
|
#ifdef _LP64 |
|
@@ -5333,7 +5333,7 @@ void MacroAssembler::encode_heap_oop(Register r) { |
|
|
#ifdef ASSERT |
|
|
verify_heapbase("MacroAssembler::encode_heap_oop: heap base corrupted?"); |
|
|
#endif |
|
|
verify_oop(r, "broken oop in encode_heap_oop"); |
|
|
verify_oop_msg(r, "broken oop in encode_heap_oop"); |
|
|
if (CompressedOops::base() == NULL) { |
|
|
if (CompressedOops::shift() != 0) { |
|
|
assert (LogMinObjAlignmentInBytes == CompressedOops::shift(), "decode alg wrong"); |
|
@@ -5358,7 +5358,7 @@ void MacroAssembler::encode_heap_oop_not_null(Register r) { |
|
|
bind(ok); |
|
|
} |
|
|
#endif |
|
|
verify_oop(r, "broken oop in encode_heap_oop_not_null"); |
|
|
verify_oop_msg(r, "broken oop in encode_heap_oop_not_null"); |
|
|
if (CompressedOops::base() != NULL) { |
|
|
subq(r, r12_heapbase); |
|
|
} |
|
@@ -5379,7 +5379,7 @@ void MacroAssembler::encode_heap_oop_not_null(Register dst, Register src) { |
|
|
bind(ok); |
|
|
} |
|
|
#endif |
|
|
verify_oop(src, "broken oop in encode_heap_oop_not_null2"); |
|
|
verify_oop_msg(src, "broken oop in encode_heap_oop_not_null2"); |
|
|
if (dst != src) { |
|
|
movq(dst, src); |
|
|
} |
|
@@ -5408,7 +5408,7 @@ void MacroAssembler::decode_heap_oop(Register r) { |
|
|
addq(r, r12_heapbase); |
|
|
bind(done); |
|
|
} |
|
|
verify_oop(r, "broken oop in decode_heap_oop"); |
|
|
verify_oop_msg(r, "broken oop in decode_heap_oop"); |
|
|
} |
|
|
|
|
|
void MacroAssembler::decode_heap_oop_not_null(Register r) { |
|
|