equal
deleted
inserted
replaced
28 |
28 |
29 #include "asm/assembler.inline.hpp" |
29 #include "asm/assembler.inline.hpp" |
30 #include "asm/macroAssembler.hpp" |
30 #include "asm/macroAssembler.hpp" |
31 #include "asm/codeBuffer.hpp" |
31 #include "asm/codeBuffer.hpp" |
32 #include "code/codeCache.hpp" |
32 #include "code/codeCache.hpp" |
|
33 #include "runtime/safepointMechanism.hpp" |
33 |
34 |
34 inline bool MacroAssembler::is_ld_largeoffset(address a) { |
35 inline bool MacroAssembler::is_ld_largeoffset(address a) { |
35 const int inst1 = *(int *)a; |
36 const int inst1 = *(int *)a; |
36 const int inst2 = *(int *)(a+4); |
37 const int inst2 = *(int *)(a+4); |
37 return (is_ld(inst1)) || |
38 return (is_ld(inst1)) || |
259 return _last_calls_return_pc; |
260 return _last_calls_return_pc; |
260 } |
261 } |
261 |
262 |
262 // Read from the polling page, its address is already in a register. |
263 // Read from the polling page, its address is already in a register. |
263 inline void MacroAssembler::load_from_polling_page(Register polling_page_address, int offset) { |
264 inline void MacroAssembler::load_from_polling_page(Register polling_page_address, int offset) { |
264 ld(R0, offset, polling_page_address); |
265 if (SafepointMechanism::uses_thread_local_poll() && USE_POLL_BIT_ONLY) { |
|
266 int encoding = SafepointMechanism::poll_bit(); |
|
267 tdi(traptoGreaterThanUnsigned | traptoEqual, polling_page_address, encoding); |
|
268 } else { |
|
269 ld(R0, offset, polling_page_address); |
|
270 } |
265 } |
271 } |
266 |
272 |
267 // Trap-instruction-based checks. |
273 // Trap-instruction-based checks. |
268 |
274 |
269 inline void MacroAssembler::trap_null_check(Register a, trap_to_bits cmp) { |
275 inline void MacroAssembler::trap_null_check(Register a, trap_to_bits cmp) { |