/** @since 0.17 or earlier */ public String debugDump(int level, int levelStop) { return Debug.dumpObject(this, level, levelStop); }
private static void dumpDOT() throws FileNotFoundException, UnsupportedEncodingException { try (PrintWriter out = new PrintWriter(getOutputFile("dot"), "UTF-8")) { GraphvizShapeVisitor visitor = new GraphvizShapeVisitor(); for (ShapeImpl shape : getAllShapes()) { visitor.visitShape(shape); } out.println(visitor); } }
private static void debugRegisterShape(ShapeImpl newShape) { if (ObjectStorageOptions.DumpShapes) { Debug.registerShape(newShape); } }
private static void dumpIGV() { com.oracle.truffle.api.nodes.GraphPrintVisitor printer = new com.oracle.truffle.api.nodes.GraphPrintVisitor(); printer.beginGroup("shapes"); IGVShapeVisitor visitor = new IGVShapeVisitor(printer); for (ShapeImpl shape : getAllShapes()) { if (isRootShape(shape)) { printer.beginGraph(getId(shape) + " (" + calcShapeGraphSize(shape) + ") (" + shape.getObjectType() + ")"); visitor.visitShape(shape); printer.endGraph(); } } printer.beginGraph("all shapes"); for (ShapeImpl shape : getAllShapes()) { if (isRootShape(shape)) { visitor.visitShape(shape); } } printer.endGraph(); printer.endGroup(); printer.printToNetwork(false); }
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(); }
/** @since 0.17 or earlier */ protected DynamicObjectImpl(Shape shape) { assert shape instanceof ShapeImpl; initialize(shape); setShape(shape); if (ObjectStorageOptions.Profile) { Debug.trackObject(this); } }
@Override public GraphvizShapeVisitor visitShape(ShapeImpl shape, Map<? extends Transition, ? extends ShapeImpl> transitions) { if (!drawn.add(shape)) { return this; } String prefix = "s"; sb.append(prefix).append(getId(shape)); sb.append(" [label=\""); if (shape.getLastProperty() != null) { sb.append(escapeString(shape.getLastProperty().toString())); } else { sb.append("ROOT"); } sb.append("\""); sb.append(", shape=\"rectangle\""); if (!shape.isValid()) { sb.append(", color=\"red\", style=dotted"); } sb.append("];"); for (Entry<? extends Transition, ? extends ShapeImpl> entry : transitions.entrySet()) { ShapeImpl dst = entry.getValue(); this.visitShape(dst); assert drawn.contains(dst); sb.append(prefix).append(getId(shape)).append("->").append(prefix).append(getId(dst)); sb.append(" [label=\"").append(escapeString(entry.getKey().toString())).append("\"]"); sb.append(";"); } return this; }
Debug.trackShape(this);
private static void dumpIGV() { com.oracle.truffle.api.nodes.GraphPrintVisitor printer = new com.oracle.truffle.api.nodes.GraphPrintVisitor(); printer.beginGroup("shapes"); IGVShapeVisitor visitor = new IGVShapeVisitor(printer); for (ShapeImpl shape : getAllShapes()) { if (isRootShape(shape)) { printer.beginGraph(getId(shape) + " (" + calcShapeGraphSize(shape) + ") (" + shape.getObjectType() + ")"); visitor.visitShape(shape); printer.endGraph(); } } printer.beginGraph("all shapes"); for (ShapeImpl shape : getAllShapes()) { if (isRootShape(shape)) { visitor.visitShape(shape); } } printer.endGraph(); printer.endGroup(); printer.printToNetwork(false); }
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(); }
/** @since 0.17 or earlier */ protected DynamicObjectImpl(Shape shape) { super(shape.getRoot()); initialize(shape); setShapeImpl(shape); if (ObjectStorageOptions.Profile) { Debug.trackObject(this); } }
@Override public GraphvizShapeVisitor visitShape(ShapeImpl shape, Map<? extends Transition, ? extends ShapeImpl> transitions) { if (!drawn.add(shape)) { return this; } String prefix = "s"; sb.append(prefix).append(getId(shape)); sb.append(" [label=\""); if (shape.getLastProperty() != null) { sb.append(escapeString(shape.getLastProperty().toString())); } else { sb.append("ROOT"); } sb.append("\""); sb.append(", shape=\"rectangle\""); if (!shape.isValid()) { sb.append(", color=\"red\", style=dotted"); } sb.append("];"); for (Entry<? extends Transition, ? extends ShapeImpl> entry : transitions.entrySet()) { ShapeImpl dst = entry.getValue(); this.visitShape(dst); assert drawn.contains(dst); sb.append(prefix).append(getId(shape)).append("->").append(prefix).append(getId(dst)); sb.append(" [label=\"").append(escapeString(entry.getKey().toString())).append("\"]"); sb.append(";"); } return this; }
Debug.trackShape(this);
private static void dumpDOT() throws FileNotFoundException, UnsupportedEncodingException { try (PrintWriter out = new PrintWriter(getOutputFile("dot"), "UTF-8")) { GraphvizShapeVisitor visitor = new GraphvizShapeVisitor(); for (ShapeImpl shape : getAllShapes()) { visitor.visitShape(shape); } out.println(visitor); } }
/** @since 0.17 or earlier */ public String debugDump(int level, int levelStop) { return Debug.dumpObject(this, level, levelStop); }