src/cpu/x86/vm/assembler_x86.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/cpu/x86/vm/assembler_x86.cpp	Fri Mar 25 19:58:38 2011
--- new/src/cpu/x86/vm/assembler_x86.cpp	Fri Mar 25 19:58:38 2011

*** 3508,3518 **** --- 3508,3517 ---- // For external_word_type/runtime_call_type if it is reachable from where we // are now (possibly a temp buffer) and where we might end up // anywhere in the codeCache then we are always reachable. // This would have to change if we ever save/restore shared code // to be more pessimistic. disp = (int64_t)adr._target - ((int64_t)CodeCache::low_bound() + sizeof(int)); if (!is_simm32(disp)) return false; disp = (int64_t)adr._target - ((int64_t)CodeCache::high_bound() + sizeof(int)); if (!is_simm32(disp)) return false;
*** 3532,3541 **** --- 3531,3548 ---- disp += fudge; } return is_simm32(disp); } + // Check if the polling page is not reachable from the code cache using rip-relative + // addressing. + bool Assembler::is_polling_page_far() { + intptr_t addr = (intptr_t)os::get_polling_page(); + return !is_simm32(addr - (intptr_t)CodeCache::low_bound()) || + !is_simm32(addr - (intptr_t)CodeCache::high_bound()); + } + void Assembler::emit_data64(jlong data, relocInfo::relocType rtype, int format) { if (rtype == relocInfo::none) { emit_long64(data);
*** 6884,6893 **** --- 6891,6905 ---- shll(reg, 16); sarl(reg, 16); } } + void MacroAssembler::testl(Register dst, AddressLiteral src) { + assert(reachable(src), "Address should be reachable"); + testl(dst, as_Address(src)); + } + ////////////////////////////////////////////////////////////////////////////////// #ifndef SERIALGC void MacroAssembler::g1_write_barrier_pre(Register obj, #ifndef _LP64
*** 7119,7139 **** --- 7131,7140 ---- void MacroAssembler::subptr(Register dst, Register src) { LP64_ONLY(subq(dst, src)) NOT_LP64(subl(dst, src)); } void MacroAssembler::test32(Register src1, AddressLiteral src2) { // src2 must be rval if (reachable(src2)) { testl(src1, as_Address(src2)); } else { lea(rscratch1, src2); testl(src1, Address(rscratch1, 0)); } } // C++ bool manipulation void MacroAssembler::testbool(Register dst) { if(sizeof(bool) == 1) testb(dst, 0xff); else if(sizeof(bool) == 2) {

src/cpu/x86/vm/assembler_x86.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File