# HG changeset patch # User Roland Schatz # Date 1429714466 -7200 # Node ID 2e9250b29d1417e3ebe15fff9b0ed3eccf7eb80b # Parent 3253fe1bed41536567f09c464df6f0d22cd0b4f7 Use trapping null check in g1PreWriteBarrier snippet. diff -r 3253fe1bed41 -r 2e9250b29d14 graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java --- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java Wed Apr 22 16:46:57 2015 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java Wed Apr 22 16:54:26 2015 +0200 @@ -112,8 +112,8 @@ @Snippet public static void g1PreWriteBarrier(Object object, Object expectedObject, Object location, @ConstantParameter boolean doLoad, @ConstantParameter boolean nullCheck, @ConstantParameter Register threadRegister, @ConstantParameter boolean trace) { - if (nullCheck && object == null) { - DeoptimizeNode.deopt(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.NullCheckException); + if (nullCheck) { + NullCheckNode.nullCheck(object); } Word thread = registerAsWord(threadRegister); Object fixedObject = FixedValueAnchorNode.getObject(object); diff -r 3253fe1bed41 -r 2e9250b29d14 graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java --- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java Wed Apr 22 16:46:57 2015 +0200 +++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java Wed Apr 22 16:54:26 2015 +0200 @@ -52,4 +52,7 @@ public boolean canDeoptimize() { return true; } + + @NodeIntrinsic + public static native void nullCheck(Object object); }