# HG changeset patch # User Christian Wimmer # Date 1388193237 28800 # Node ID 780d53499ca206d778f781f1bc8c3fd5aacc7570 # Parent 83adefeb8e5c1e53efc1837999638a5aba5a37bc# Parent 441b54753cda24d6411a839ef5b8a0a61514843a merge diff -r 83adefeb8e5c -r 780d53499ca2 mx/mx_graal.py --- a/mx/mx_graal.py Fri Dec 27 15:12:12 2013 -0800 +++ b/mx/mx_graal.py Fri Dec 27 17:13:57 2013 -0800 @@ -983,7 +983,7 @@ for vmbuild in ['fastdebug', 'product']: for test in sanitycheck.getDacapos(level=sanitycheck.SanityCheckLevel.Gate, gateBuildLevel=vmbuild): if 'eclipse' in str(test) and mx.java().version >= mx.VersionSpec('1.8'): - # DaCapo eclipse doesn't not run under JDK8 + # DaCapo eclipse doesn't run under JDK8 continue t = Task(str(test) + ':' + vmbuild) diff -r 83adefeb8e5c -r 780d53499ca2 src/cpu/x86/vm/graalCodeInstaller_x86.hpp --- a/src/cpu/x86/vm/graalCodeInstaller_x86.hpp Fri Dec 27 15:12:12 2013 -0800 +++ b/src/cpu/x86/vm/graalCodeInstaller_x86.hpp Fri Dec 27 17:13:57 2013 -0800 @@ -219,26 +219,25 @@ } } +static void relocate_poll_near(address pc) { + NativeInstruction* ni = nativeInstruction_at(pc); + int32_t* disp = (int32_t*) Assembler::locate_operand(pc, Assembler::disp32_operand); + int32_t offset = *disp; // The Java code installed the polling page offset into the disp32 operand + intptr_t new_disp = (intptr_t) (os::get_polling_page() + offset) - (intptr_t) ni; + *disp = (int32_t)new_disp; +} + + inline void CodeInstaller::pd_relocate_poll(address pc, jint mark) { switch (mark) { case MARK_POLL_NEAR: { - NativeInstruction* ni = nativeInstruction_at(pc); - int32_t* disp = (int32_t*) Assembler::locate_operand(pc, Assembler::disp32_operand); - // int32_t* disp = (int32_t*) Assembler::locate_operand(instruction, Assembler::disp32_operand); - int32_t offset = *disp; // The Java code installed the polling page offset into the disp32 operand - intptr_t new_disp = (intptr_t) (os::get_polling_page() + offset) - (intptr_t) ni; - *disp = (int32_t)new_disp; + relocate_poll_near(pc); } case MARK_POLL_FAR: _instructions->relocate(pc, relocInfo::poll_type); break; case MARK_POLL_RETURN_NEAR: { - NativeInstruction* ni = nativeInstruction_at(pc); - int32_t* disp = (int32_t*) Assembler::locate_operand(pc, Assembler::disp32_operand); - // int32_t* disp = (int32_t*) Assembler::locate_operand(instruction, Assembler::disp32_operand); - int32_t offset = *disp; // The Java code installed the polling page offset into the disp32 operand - intptr_t new_disp = (intptr_t) (os::get_polling_page() + offset) - (intptr_t) ni; - *disp = (int32_t)new_disp; + relocate_poll_near(pc); } case MARK_POLL_RETURN_FAR: _instructions->relocate(pc, relocInfo::poll_return_type);