Mercurial > hg > truffle
changeset 21081:2e9250b29d14
Use trapping null check in g1PreWriteBarrier snippet.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Wed, 22 Apr 2015 16:54:26 +0200 |
parents | 3253fe1bed41 |
children | 266eef1c29e0 de2fb3e4df49 |
files | graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/WriteBarrierSnippets.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/NullCheckNode.java |
diffstat | 2 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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);
--- 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); }