# HG changeset patch # User Christian Haeubl # Date 1328244458 28800 # Node ID df8fcff41b70afecf7315a2fa993d2f173861047 # Parent f304ba0d4e2413134e5624817298a8745d98319e# Parent c97f09b8d1ce2574321395434f4f5dd39f4db3dd Merge diff -r f304ba0d4e24 -r df8fcff41b70 graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/IntrinsificationPhase.java --- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/IntrinsificationPhase.java Thu Feb 02 20:45:36 2012 -0800 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/IntrinsificationPhase.java Thu Feb 02 20:47:38 2012 -0800 @@ -25,6 +25,7 @@ import com.oracle.max.cri.ri.*; import com.oracle.max.graal.compiler.util.*; import com.oracle.max.graal.cri.*; +import com.oracle.max.graal.debug.*; import com.oracle.max.graal.graph.*; import com.oracle.max.graal.nodes.*; @@ -58,6 +59,7 @@ intrinsicGraph = runtime.intrinsicGraph(invoke.stateAfter().method(), invoke.bci(), target, invoke.callTarget().arguments()); } if (intrinsicGraph != null) { + Debug.log(" > Intrinsify %s", target); InliningUtil.inline(invoke, intrinsicGraph, true); } } diff -r f304ba0d4e24 -r df8fcff41b70 graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/iterators/NodePredicates.java --- a/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/iterators/NodePredicates.java Thu Feb 02 20:45:36 2012 -0800 +++ b/graal/com.oracle.max.graal.graph/src/com/oracle/max/graal/graph/iterators/NodePredicates.java Thu Feb 02 20:47:38 2012 -0800 @@ -142,13 +142,13 @@ private static final class AndPredicate extends NodePredicate { private final NodePredicate a; private final NodePredicate b; - private AndPredicate(NodePredicate pa, NodePredicate pb) { - this.a = pa; - this.b = pb; + private AndPredicate(NodePredicate a, NodePredicate b) { + this.a = a; + this.b = b; } @Override public boolean apply(Node n) { - return b.apply(n) && a.apply(n); + return a.apply(n) && b.apply(n); } } @@ -166,13 +166,13 @@ private static final class OrPredicate extends NodePredicate { private final NodePredicate a; private final NodePredicate b; - private OrPredicate(NodePredicate np, NodePredicate thiz) { - this.a = np; - this.b = thiz; + private OrPredicate(NodePredicate a, NodePredicate b) { + this.a = a; + this.b = b; } @Override public boolean apply(Node n) { - return b.apply(n) || a.apply(n); + return a.apply(n) || b.apply(n); } } diff -r f304ba0d4e24 -r df8fcff41b70 graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/snippets/ArrayCopySnippets.java --- a/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/snippets/ArrayCopySnippets.java Thu Feb 02 20:45:36 2012 -0800 +++ b/graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/snippets/ArrayCopySnippets.java Thu Feb 02 20:47:38 2012 -0800 @@ -434,6 +434,45 @@ } } + private static class DirectObjectStoreNode extends FixedWithNextNode implements Lowerable { + @Input private ValueNode object; + @Input private ValueNode value; + @Input private ValueNode offset; + + public DirectObjectStoreNode(ValueNode object, ValueNode offset, ValueNode value) { + super(StampFactory.illegal()); + this.object = object; + this.value = value; + this.offset = offset; + } + + @SuppressWarnings("unused") + @NodeIntrinsic + public static void store(Object obj, long offset, long value) { + throw new UnsupportedOperationException(); + } + + @SuppressWarnings("unused") + @NodeIntrinsic + public static void store(Object obj, long offset, boolean value) { + throw new UnsupportedOperationException(); + } + + @SuppressWarnings("unused") + @NodeIntrinsic + public static void store(Object obj, long offset, Object value) { + throw new UnsupportedOperationException(); + } + + @Override + public void lower(CiLoweringTool tool) { + StructuredGraph graph = (StructuredGraph) this.graph(); + IndexedLocationNode location = IndexedLocationNode.create(LocationNode.ANY_LOCATION, value.kind(), 0, offset, graph, false); + WriteNode write = graph.add(new WriteNode(object, value, location)); + graph.replaceFixedWithFixed(this, write); + } + } + private static class CardTableShiftNode extends ConstantNode { public CardTableShiftNode() { super(CiConstant.forInt(CompilerImpl.getInstance().getConfig().cardtableShift));