changeset 22124:84d5125aa31a

Merge
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Mon, 29 Jun 2015 10:49:31 -0700
parents 9143e6b3c475 (diff) 62dc08c8b687 (current diff)
children 9f58c0d2bd5a
files
diffstat 4 files changed, 28 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java	Mon Jun 29 18:38:47 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java	Mon Jun 29 10:49:31 2015 -0700
@@ -523,6 +523,11 @@
 
     @Override
     public boolean verify() {
+        if (virtualObjectMappingCount() > 0) {
+            for (EscapeObjectState state : virtualObjectMappings()) {
+                assertTrue(state != null, "must be non-null");
+            }
+        }
         assertTrue(locksSize() == monitorIdCount(), "mismatch in number of locks");
         for (ValueNode value : values) {
             assertTrue(value == null || !value.isDeleted(), "frame state must not contain deleted nodes");
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java	Mon Jun 29 18:38:47 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/util/GraphUtil.java	Mon Jun 29 10:49:31 2015 -0700
@@ -152,8 +152,18 @@
     public static void killWithUnusedFloatingInputs(Node node) {
         node.safeDelete();
         node.acceptInputs((n, in) -> {
-            if (in.isAlive() && in.hasNoUsages() && !(in instanceof FixedNode)) {
-                killWithUnusedFloatingInputs(in);
+            if (in.isAlive() && !(in instanceof FixedNode)) {
+                if (in.hasNoUsages()) {
+                    killWithUnusedFloatingInputs(in);
+                } else if (in instanceof PhiNode) {
+                    for (Node use : in.usages()) {
+                        if (use != in) {
+                            return;
+                        }
+                    }
+                    in.replaceAtUsages(null);
+                    killWithUnusedFloatingInputs(in);
+                }
             }
         });
     }
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java	Mon Jun 29 18:38:47 2015 +0200
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/virtual/CommitAllocationNode.java	Mon Jun 29 10:49:31 2015 -0700
@@ -102,6 +102,11 @@
         int valuePos = 0;
         for (int objIndex = 0; objIndex < virtualObjects.size(); objIndex++) {
             VirtualObjectNode virtual = virtualObjects.get(objIndex);
+            if (virtual == null) {
+                // Could occur in invalid graphs
+                properties.put("object(" + objIndex + ")", "null");
+                continue;
+            }
             StringBuilder s = new StringBuilder();
             s.append(virtual.type().toJavaName(false)).append("[");
             for (int i = 0; i < virtual.entryCount(); i++) {
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java	Mon Jun 29 18:38:47 2015 +0200
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java	Mon Jun 29 10:49:31 2015 -0700
@@ -350,7 +350,12 @@
                     }
                 }
                 sb.append(")");
-                formatter.format(applyFormattingFlagsAndWidth(sb.toString(), flags & ~ALTERNATE, width));
+                String string = sb.toString();
+                if (string.indexOf('%') != -1) {
+                    // Quote any % signs
+                    string = string.replace("%", "%%");
+                }
+                formatter.format(applyFormattingFlagsAndWidth(string, flags & ~ALTERNATE, width));
             }
         }
     }