Mercurial > hg > graal-jvmci-8
changeset 11340:dae9dd07896f
Merge.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sat, 17 Aug 2013 01:45:25 +0200 |
parents | 0b0228ed33b8 (current diff) 39e83065426e (diff) |
children | ca5054bbfcdd |
files | |
diffstat | 3 files changed, 11 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Fri Aug 16 23:25:49 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java Sat Aug 17 01:45:25 2013 +0200 @@ -495,7 +495,7 @@ @SuppressWarnings("unused") @NodeIntrinsic(value = LoadHubNode.class, setStampFromReturnType = true) - static Word loadHubIntrinsic(Object object, @ConstantNodeParameter Kind word, GuardingNode anchor) { + public static Word loadHubIntrinsic(Object object, @ConstantNodeParameter Kind word, GuardingNode anchor) { return Word.unsigned(unsafeReadKlassPointer(object)); }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java Fri Aug 16 23:25:49 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/MonitorSnippets.java Sat Aug 17 01:45:25 2013 +0200 @@ -77,12 +77,13 @@ public static final boolean CHECK_BALANCED_MONITORS = Boolean.getBoolean("graal.monitors.checkBalanced"); @Snippet - public static void monitorenter(Object object, @ConstantParameter int lockDepth, @ConstantParameter boolean checkNull, @ConstantParameter boolean trace) { + public static void monitorenter(Object object, @ConstantParameter int lockDepth, @ConstantParameter boolean trace) { verifyOop(object); - if (checkNull && object == null) { + if (object == null) { DeoptimizeNode.deopt(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.NullCheckException); } + BeginNode anchorNode = BeginNode.anchor(StampFactory.forNodeIntrinsic()); // Load the mark word - this includes a null-check on object final Word mark = loadWordFromObject(object, markOffset()); @@ -108,7 +109,7 @@ } else { // The bias pattern is present in the object's mark word. Need to check // whether the bias owner and the epoch are both still current. - Word hub = loadHub(object); + Word hub = loadHubIntrinsic(object, getWordKind(), anchorNode); final Word prototypeMarkWord = hub.readWord(prototypeMarkWordOffset(), PROTOTYPE_MARK_WORD_LOCATION); final Word thread = thread(); final Word tmp = prototypeMarkWord.or(thread).xor(mark).and(~ageMaskInPlace()); @@ -253,10 +254,10 @@ * Calls straight out to the monitorenter stub. */ @Snippet - public static void monitorenterStub(Object object, @ConstantParameter int lockDepth, @ConstantParameter boolean checkNull, @ConstantParameter boolean trace) { + public static void monitorenterStub(Object object, @ConstantParameter int lockDepth, @ConstantParameter boolean trace) { verifyOop(object); incCounter(); - if (checkNull && object == null) { + if (object == null) { DeoptimizeNode.deopt(DeoptimizationAction.InvalidateReprofile, DeoptimizationReason.NullCheckException); } // BeginLockScope nodes do not read from object so a use of object @@ -410,7 +411,6 @@ } args.add("object", monitorenterNode.object()); args.addConst("lockDepth", monitorenterNode.getLockDepth()); - args.addConst("checkNull", !ObjectStamp.isObjectNonNull(monitorenterNode.object().stamp())); boolean tracingEnabledForMethod = stateAfter != null && (isTracingEnabledForMethod(stateAfter.method()) || isTracingEnabledForMethod(graph.method())); args.addConst("trace", isTracingEnabledForType(monitorenterNode.object()) || tracingEnabledForMethod);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/StubUtil.java Fri Aug 16 23:25:49 2013 +0200 +++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/stubs/StubUtil.java Sat Aug 17 01:45:25 2013 +0200 @@ -36,6 +36,8 @@ import com.oracle.graal.graph.Node.ConstantNodeParameter; import com.oracle.graal.graph.Node.NodeIntrinsic; import com.oracle.graal.hotspot.nodes.*; +import com.oracle.graal.nodes.*; +import com.oracle.graal.nodes.type.*; import com.oracle.graal.replacements.*; import com.oracle.graal.replacements.Snippet.Fold; import com.oracle.graal.word.*; @@ -217,12 +219,13 @@ Pointer oop = Word.fromObject(object); if (object != null) { + BeginNode anchorNode = BeginNode.anchor(StampFactory.forNodeIntrinsic()); // make sure object is 'reasonable' if (!oop.and(unsigned(verifyOopMask())).equal(unsigned(verifyOopBits()))) { fatal("oop not in heap: %p", oop.rawValue()); } - Word klass = loadHub(object); + Word klass = loadHubIntrinsic(object, getWordKind(), anchorNode); if (klass.equal(Word.zero())) { fatal("klass for oop %p is null", oop.rawValue()); }