# HG changeset patch # User Christos Kotselidis # Date 1381795653 -7200 # Node ID 083e90f11c93d7a4898c18a7aeec2113476d836d # Parent 98031e66de159c2ca8f3db005a2fbb9f293085f4# Parent edacadae40a054317379d10396de5546b306cc5b Merge diff -r edacadae40a0 -r 083e90f11c93 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/UnsafeLoadSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/UnsafeLoadSnippets.java Tue Oct 15 01:11:02 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/UnsafeLoadSnippets.java Tue Oct 15 02:07:33 2013 +0200 @@ -40,12 +40,12 @@ public class UnsafeLoadSnippets implements Snippets { @Snippet - public static Object lowerUnsafeLoad(Object object, long displacement) { + public static Object lowerUnsafeLoad(Object object, long offset) { Object fixedObject = FixedValueAnchorNode.getObject(object); - if (object instanceof java.lang.ref.Reference && referentOffset() == displacement) { - return Word.fromObject(fixedObject).readObject((int) displacement, BarrierType.PRECISE, true); + if (object instanceof java.lang.ref.Reference && referentOffset() == offset) { + return Word.fromObject(fixedObject).readObject((int) offset, BarrierType.PRECISE, true); } else { - return Word.fromObject(fixedObject).readObject((int) displacement, BarrierType.NONE, true); + return Word.fromObject(fixedObject).readObject((int) offset, BarrierType.NONE, true); } } diff -r edacadae40a0 -r 083e90f11c93 mx/commands.py --- a/mx/commands.py Tue Oct 15 01:11:02 2013 +0200 +++ b/mx/commands.py Tue Oct 15 02:07:33 2013 +0200 @@ -955,12 +955,11 @@ vm(['-XX:+UnlockDiagnosticVMOptions', '-XX:+VerifyBeforeGC', '-XX:+VerifyAfterGC', '-version'], out=out) tasks.append(t.stop()) - # temporarily disable G1 verification until merge issues are resolved - # with VM('graal', 'product'): - # t = Task('BootstrapWithG1GCVerification:product') - # out = mx.DuplicateSuppressingStream(['VerifyAfterGC:', 'VerifyBeforeGC:']).write - # vm(['-XX:+UnlockDiagnosticVMOptions', '-XX:-UseSerialGC', '-XX:+UseG1GC', '-XX:+UseNewCode', '-XX:+VerifyBeforeGC', '-XX:+VerifyAfterGC', '-version'], out=out) - # tasks.append(t.stop()) + with VM('graal', 'product'): + t = Task('BootstrapWithG1GCVerification:product') + out = mx.DuplicateSuppressingStream(['VerifyAfterGC:', 'VerifyBeforeGC:']).write + vm(['-XX:+UnlockDiagnosticVMOptions', '-XX:-UseSerialGC', '-XX:+UseG1GC', '-XX:+UseNewCode', '-XX:+VerifyBeforeGC', '-XX:+VerifyAfterGC', '-version'], out=out) + tasks.append(t.stop()) with VM('graal', 'product'): t = Task('BootstrapWithRegisterPressure:product') diff -r edacadae40a0 -r 083e90f11c93 src/share/vm/code/nmethod.cpp --- a/src/share/vm/code/nmethod.cpp Tue Oct 15 01:11:02 2013 +0200 +++ b/src/share/vm/code/nmethod.cpp Tue Oct 15 02:07:33 2013 +0200 @@ -1405,13 +1405,6 @@ // cache call. if (!is_osr_method() && !is_not_entrant()) { address stub = SharedRuntime::get_handle_wrong_method_stub(); -#ifdef GRAAL - if (_graal_installed_code != NULL) { - // Break the link between nmethod and HotSpotInstalledCode such that the nmethod can subsequently be flushed safely. - HotSpotInstalledCode::set_codeBlob(_graal_installed_code, 0); - _graal_installed_code = NULL; - } -#endif NativeJump::patch_verified_entry(entry_point(), verified_entry_point(), stub); } @@ -1491,6 +1484,12 @@ } else { assert(state == not_entrant, "other cases may need to be handled differently"); } +#ifdef GRAAL + if (_graal_installed_code != NULL) { + // Break the link between nmethod and HotSpotInstalledCode such that the nmethod can subsequently be flushed safely. + HotSpotInstalledCode::set_codeBlob(_graal_installed_code, 0); + } +#endif if (TraceCreateZombies) { ResourceMark m;