# HG changeset patch # User Thomas Wuerthinger # Date 1314017483 -7200 # Node ID 077add4e3cccc1978ff67b3fab939b53151691af # Parent aa7b62997aa007325798f9c9ec3046f069d0a085# Parent aee1479c0a4bdc73e6635b08e118034c609110ef Merge. diff -r aa7b62997aa0 -r 077add4e3ccc src/share/vm/graal/graalCodeInstaller.cpp --- a/src/share/vm/graal/graalCodeInstaller.cpp Mon Aug 22 14:40:08 2011 +0200 +++ b/src/share/vm/graal/graalCodeInstaller.cpp Mon Aug 22 14:51:23 2011 +0200 @@ -804,10 +804,22 @@ case MARK_IMPLICIT_NULL: _implicit_exception_table.append(pc_offset, pc_offset); break; - case MARK_POLL: + case MARK_POLL_NEAR: { + NativeInstruction* ni = nativeInstruction_at(instruction); + int32_t* disp = (int32_t*) Assembler::locate_operand(instruction, Assembler::disp32_operand); + intptr_t new_disp = (intptr_t) (os::get_polling_page() + (SafepointPollOffset % os::vm_page_size())) - (intptr_t) ni; + *disp = (int32_t)new_disp; + } + case MARK_POLL_FAR: _instructions->relocate(instruction, relocInfo::poll_type); break; - case MARK_POLL_RETURN: + case MARK_POLL_RETURN_NEAR: { + NativeInstruction* ni = nativeInstruction_at(instruction); + int32_t* disp = (int32_t*) Assembler::locate_operand(instruction, Assembler::disp32_operand); + intptr_t new_disp = (intptr_t) (os::get_polling_page() + (SafepointPollOffset % os::vm_page_size())) - (intptr_t) ni; + *disp = (int32_t)new_disp; + } + case MARK_POLL_RETURN_FAR: _instructions->relocate(instruction, relocInfo::poll_return_type); break; case MARK_KLASS_PATCHING: diff -r aa7b62997aa0 -r 077add4e3ccc src/share/vm/graal/graalCodeInstaller.hpp --- a/src/share/vm/graal/graalCodeInstaller.hpp Mon Aug 22 14:40:08 2011 +0200 +++ b/src/share/vm/graal/graalCodeInstaller.hpp Mon Aug 22 14:51:23 2011 +0200 @@ -41,8 +41,10 @@ MARK_INVOKESPECIAL = 0x2003, MARK_INVOKEVIRTUAL = 0x2004, MARK_IMPLICIT_NULL = 0x3000, - MARK_POLL = 0x3001, - MARK_POLL_RETURN = 0x3002, + MARK_POLL_NEAR = 0x3001, + MARK_POLL_RETURN_NEAR = 0x3002, + MARK_POLL_FAR = 0x3003, + MARK_POLL_RETURN_FAR = 0x3004, MARK_KLASS_PATCHING = 0x4000, MARK_DUMMY_OOP_RELOCATION = 0x4001, MARK_ACCESS_FIELD_PATCHING = 0x4002