changeset 22358:a647534602a6

minor debug code cleanup
author Andreas Woess <andreas.woess@oracle.com>
date Tue, 10 Nov 2015 21:34:20 +0100
parents 9c1d40221bf9
children 07e5178604d4 163fdf64587d
files truffle/com.oracle.truffle.object/src/com/oracle/truffle/object/Debug.java truffle/com.oracle.truffle.object/src/com/oracle/truffle/object/DynamicObjectImpl.java truffle/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java
diffstat 3 files changed, 58 insertions(+), 52 deletions(-) [+]
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.object/src/com/oracle/truffle/object/Debug.java	Tue Nov 10 19:59:37 2015 +0100
+++ b/truffle/com.oracle.truffle.object/src/com/oracle/truffle/object/Debug.java	Tue Nov 10 21:34:20 2015 +0100
@@ -28,20 +28,68 @@
 import java.io.UnsupportedEncodingException;
 import java.nio.file.Paths;
 import java.util.Collection;
+import java.util.List;
 import java.util.concurrent.ConcurrentLinkedQueue;
 
 import com.oracle.truffle.api.nodes.GraphPrintVisitor;
+import com.oracle.truffle.api.object.DynamicObject;
+import com.oracle.truffle.api.object.Property;
 import com.oracle.truffle.object.debug.GraphvizShapeVisitor;
 import com.oracle.truffle.object.debug.IGVShapeVisitor;
 import com.oracle.truffle.object.debug.JSONShapeVisitor;
+import com.oracle.truffle.object.debug.ShapeProfiler;
 
 class Debug {
     private static Collection<ShapeImpl> allShapes;
 
-    static void registerShape(ShapeImpl newShape) {
+    static void trackShape(ShapeImpl newShape) {
         allShapes.add(newShape);
     }
 
+    static void trackObject(DynamicObject obj) {
+        ShapeProfiler.getInstance().track(obj);
+    }
+
+    static Iterable<ShapeImpl> getAllShapes() {
+        return allShapes;
+    }
+
+    static String dumpObject(DynamicObject object, int level, int levelStop) {
+        List<Property> properties = object.getShape().getPropertyListInternal(true);
+        StringBuilder sb = new StringBuilder(properties.size() * 10);
+        sb.append("{\n");
+        for (Property property : properties) {
+            indent(sb, level + 1);
+
+            sb.append(property.getKey());
+            sb.append('[').append(property.getLocation()).append(']');
+            Object value = property.get(object, false);
+            if (value instanceof DynamicObject) {
+                if (level < levelStop) {
+                    value = dumpObject((DynamicObject) value, level + 1, levelStop);
+                } else {
+                    value = value.toString();
+                }
+            }
+            sb.append(": ");
+            sb.append(value);
+            if (property != properties.get(properties.size() - 1)) {
+                sb.append(",");
+            }
+            sb.append("\n");
+        }
+        indent(sb, level);
+        sb.append("}");
+        return sb.toString();
+    }
+
+    private static StringBuilder indent(StringBuilder sb, int level) {
+        for (int i = 0; i < level; i++) {
+            sb.append(' ');
+        }
+        return sb;
+    }
+
     static {
         if (ObjectStorageOptions.DumpShapes) {
             allShapes = new ConcurrentLinkedQueue<>();
@@ -68,7 +116,7 @@
                 private void dumpDOT() throws FileNotFoundException, UnsupportedEncodingException {
                     try (PrintWriter out = new PrintWriter(getOutputFile("dot"), "UTF-8")) {
                         GraphvizShapeVisitor visitor = new GraphvizShapeVisitor();
-                        for (ShapeImpl shape : allShapes) {
+                        for (ShapeImpl shape : getAllShapes()) {
                             shape.accept(visitor);
                         }
                         out.println(visitor);
@@ -79,7 +127,7 @@
                     try (PrintWriter out = new PrintWriter(getOutputFile("json"), "UTF-8")) {
                         out.println("{\"shapes\": [");
                         boolean first = true;
-                        for (ShapeImpl shape : allShapes) {
+                        for (ShapeImpl shape : getAllShapes()) {
                             if (!first) {
                                 out.println(",");
                             }
@@ -97,7 +145,7 @@
                     GraphPrintVisitor printer = new GraphPrintVisitor();
                     printer.beginGroup("shapes");
                     IGVShapeVisitor visitor = new IGVShapeVisitor(printer);
-                    for (ShapeImpl shape : allShapes) {
+                    for (ShapeImpl shape : getAllShapes()) {
                         if (isRootShape(shape)) {
                             printer.beginGraph(DebugShapeVisitor.getId(shape));
                             shape.accept(visitor);
@@ -105,7 +153,7 @@
                         }
                     }
                     printer.beginGraph("all shapes");
-                    for (ShapeImpl shape : allShapes) {
+                    for (ShapeImpl shape : getAllShapes()) {
                         if (isRootShape(shape)) {
                             shape.accept(visitor);
                         }
--- a/truffle/com.oracle.truffle.object/src/com/oracle/truffle/object/DynamicObjectImpl.java	Tue Nov 10 19:59:37 2015 +0100
+++ b/truffle/com.oracle.truffle.object/src/com/oracle/truffle/object/DynamicObjectImpl.java	Tue Nov 10 21:34:20 2015 +0100
@@ -29,8 +29,6 @@
 import com.oracle.truffle.api.object.Property;
 import com.oracle.truffle.api.object.Shape;
 import com.oracle.truffle.object.Locations.ValueLocation;
-import com.oracle.truffle.object.debug.ShapeProfiler;
-import java.util.List;
 
 public abstract class DynamicObjectImpl extends DynamicObject implements Cloneable {
     private ShapeImpl shape;
@@ -43,7 +41,7 @@
         setShape(shape);
 
         if (ObjectStorageOptions.Profile) {
-            trackObject(this);
+            Debug.trackObject(this);
         }
     }
 
@@ -207,39 +205,7 @@
     }
 
     public String debugDump(int level, int levelStop) {
-        List<Property> properties = this.getShape().getPropertyListInternal(true);
-        StringBuilder sb = new StringBuilder(properties.size() * 10);
-        sb.append("{\n");
-        for (Property property : properties) {
-            indent(sb, level + 1);
-
-            sb.append(property.getKey());
-            sb.append('[').append(property.getLocation()).append(']');
-            Object value = property.get(this, false);
-            if (value instanceof DynamicObjectImpl) {
-                if (level < levelStop) {
-                    value = ((DynamicObjectImpl) value).debugDump(level + 1, levelStop);
-                } else {
-                    value = value.toString();
-                }
-            }
-            sb.append(": ");
-            sb.append(value);
-            if (property != properties.get(properties.size() - 1)) {
-                sb.append(",");
-            }
-            sb.append("\n");
-        }
-        indent(sb, level);
-        sb.append("}");
-        return sb.toString();
-    }
-
-    private static StringBuilder indent(StringBuilder sb, int level) {
-        for (int i = 0; i < level; i++) {
-            sb.append(' ');
-        }
-        return sb;
+        return Debug.dumpObject(this, level, levelStop);
     }
 
     @Override
@@ -333,10 +299,6 @@
         return getShape().getLayout().getStrategy().updateShape(this);
     }
 
-    private static void trackObject(DynamicObject obj) {
-        ShapeProfiler.getInstance().track(obj);
-    }
-
     @Override
     public final DynamicObject copy(Shape currentShape) {
         return cloneWithShape(currentShape);
--- a/truffle/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java	Tue Nov 10 19:59:37 2015 +0100
+++ b/truffle/com.oracle.truffle.object/src/com/oracle/truffle/object/ShapeImpl.java	Tue Nov 10 21:34:20 2015 +0100
@@ -154,7 +154,9 @@
         this.extraData = objectType.createShapeData(this);
 
         shapeCount.inc();
-        debugRegisterShape(this);
+        if (ObjectStorageOptions.DumpShapes) {
+            Debug.trackShape(this);
+        }
     }
 
     protected ShapeImpl(Layout layout, ShapeImpl parent, ObjectType operations, Object sharedData, PropertyMap propertyMap, Transition transition, Allocator allocator, int id) {
@@ -1126,12 +1128,6 @@
         }
     }
 
-    private static void debugRegisterShape(ShapeImpl newShape) {
-        if (ObjectStorageOptions.DumpShapes) {
-            Debug.registerShape(newShape);
-        }
-    }
-
     /**
      * Match all filter.
      */