changeset 4465:df8fcff41b70

Merge
author Christian Haeubl <christian.haeubl@oracle.com>
date Thu, 02 Feb 2012 20:47:38 -0800
parents f304ba0d4e24 (current diff) c97f09b8d1ce (diff)
children c84c325ec9ed
files graal/com.oracle.max.graal.hotspot/src/com/oracle/max/graal/hotspot/snippets/ArrayCopySnippets.java
diffstat 3 files changed, 49 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- 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);
         }
     }
--- 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);
         }
     }
 
--- 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));