< prev index next > src/hotspot/cpu/x86/macroAssembler_x86.cpp
Print this page
*/
#include "precompiled.hpp"
#include "asm/assembler.hpp"
#include "asm/assembler.inline.hpp"
+ #include "code/SCCache.hpp"
#include "code/compiledIC.hpp"
#include "compiler/compiler_globals.hpp"
#include "compiler/disassembler.hpp"
#include "crc32c.h"
#include "gc/shared/barrierSet.hpp"
}
lea(c_rarg0, ExternalAddress((address) msg));
andq(rsp, -16); // align stack as required by ABI
call(RuntimeAddress(CAST_FROM_FN_PTR(address, MacroAssembler::debug64)));
hlt();
+ SCCache::add_C_string(msg);
}
void MacroAssembler::warn(const char* msg) {
push(rbp);
movq(rbp, rsp);
movq(rcx, Address(rsp, 14 * wordSize));
movq(rax, Address(rsp, 15 * wordSize));
addq(rsp, 16 * wordSize);
}
+ void MacroAssembler::load_aotrc_address(Register reg, address a) {
+ #if INCLUDE_CDS
+ assert(AOTRuntimeConstants::contains(a), "address out of range for data area");
+ if (SCCache::is_on_for_write()) {
+ // all aotrc field addresses should be registered in the SCC address table
+ lea(reg, ExternalAddress(a));
+ } else {
+ mov64(reg, (uint64_t)a);
+ }
+ #else
+ ShouldNotReachHere();
+ #endif
+ }
+
void MacroAssembler::setcc(Assembler::Condition comparison, Register dst) {
if (VM_Version::supports_apx_f()) {
esetzucc(comparison, dst);
} else {
setb(comparison, dst);
movzbl(dst, dst);
}
}
+
#endif
< prev index next >