# HG changeset patch # User Gilles Duboscq # Date 1313767717 -7200 # Node ID 25765a7642126bd76494b3a57cb9832df737b664 # Parent a218993d20876a16b8553b0e76632b1223631363 Add support for polling mark in code installer diff -r a218993d2087 -r 25765a764212 src/share/vm/graal/graalCodeInstaller.cpp --- a/src/share/vm/graal/graalCodeInstaller.cpp Wed Aug 17 13:40:36 2011 +0200 +++ b/src/share/vm/graal/graalCodeInstaller.cpp Fri Aug 19 17:28:37 2011 +0200 @@ -804,6 +804,12 @@ case MARK_IMPLICIT_NULL: _implicit_exception_table.append(pc_offset, pc_offset); break; + case MARK_POLL: + _instructions->relocate(instruction, relocInfo::poll_type); + break; + case MARK_POLL_RETURN: + _instructions->relocate(instruction, relocInfo::poll_return_type); + break; case MARK_KLASS_PATCHING: case MARK_ACCESS_FIELD_PATCHING: { unsigned char* byte_count = (unsigned char*) (instruction - 1); diff -r a218993d2087 -r 25765a764212 src/share/vm/graal/graalCodeInstaller.hpp --- a/src/share/vm/graal/graalCodeInstaller.hpp Wed Aug 17 13:40:36 2011 +0200 +++ b/src/share/vm/graal/graalCodeInstaller.hpp Fri Aug 19 17:28:37 2011 +0200 @@ -41,6 +41,8 @@ MARK_INVOKESPECIAL = 0x2003, MARK_INVOKEVIRTUAL = 0x2004, MARK_IMPLICIT_NULL = 0x3000, + MARK_POLL = 0x3001, + MARK_POLL_RETURN = 0x3002, MARK_KLASS_PATCHING = 0x4000, MARK_DUMMY_OOP_RELOCATION = 0x4001, MARK_ACCESS_FIELD_PATCHING = 0x4002 diff -r a218993d2087 -r 25765a764212 src/share/vm/graal/graalVMEntries.cpp --- a/src/share/vm/graal/graalVMEntries.cpp Wed Aug 17 13:40:36 2011 +0200 +++ b/src/share/vm/graal/graalVMEntries.cpp Fri Aug 19 17:28:37 2011 +0200 @@ -819,6 +819,7 @@ set_long(env, config, "fastMonitorEnterStub", VmIds::addStub(Runtime1::entry_for(Runtime1::graal_monitorenter_id))); set_long(env, config, "fastMonitorExitStub", VmIds::addStub(Runtime1::entry_for(Runtime1::graal_monitorexit_id))); set_long(env, config, "safepointPollingAddress", (jlong)(os::get_polling_page() + (SafepointPollOffset % os::vm_page_size()))); + set_boolean(env, config, "isPollingPageFar", Assembler::is_polling_page_far()); BarrierSet* bs = Universe::heap()->barrier_set(); switch (bs->kind()) {