@Override protected String getFieldName(Object field) { return ((NodeFieldAccessor) field).getName(); }
@SuppressWarnings({"deprecation", "unused"}) private static String findFieldName(NodeClass nodeClass, com.oracle.truffle.api.nodes.NodeFieldAccessor field) { return field.getName(); }
@Override protected String getFieldName(Object field) { return ((NodeFieldAccessor) field).getName(); }
/** @since 0.14 */ @Override public String toString() { return getDeclaringClass().getName() + "." + getName(); }
/** @since 0.14 */ @Override public String toString() { return getDeclaringClass().getName() + "." + getName(); }
public String getMessage() { final StringBuilder sb = new StringBuilder(reason.message + ": "); if (parent != null) { sb.append("parent=" + parent.getClass().getSimpleName() + " "); if (child != null) { sb.append("child=" + child.getClass().getSimpleName() + " "); final NodeFieldAccessor field = NodeUtil.findChildField(parent, child); if (field != null) { sb.append("field=" + field.getName() + " "); } } } if (wrapper != null) { sb.append("wrapper=" + wrapper.getClass().getSimpleName()); } return sb.toString(); }
protected void printChildren(PrintWriter p, int maxDepth, Node markNode, int level, NodeFieldAccessor field, Object value) { printNewLine(p, level); p.print(field.getName()); Node[] children = (Node[]) value; p.print(" = ["); String sep = ""; for (Node child : children) { p.print(sep); sep = ", "; printTree(p, child, maxDepth, markNode, level + 1); } p.print("]"); }
protected void printChild(PrintWriter p, int maxDepth, Node markNode, int level, NodeFieldAccessor field, Object value) { final Node valueNode = (Node) value; printNewLine(p, level, valueNode == markNode); p.print(field.getName()); p.print(" = "); printTree(p, valueNode, maxDepth, markNode, level + 1); }
@SuppressWarnings("deprecation") private String getFieldName(Node parent, Node node) { for (com.oracle.truffle.api.nodes.NodeFieldAccessor field : NodeClass.get(parent).getFields()) { Object value = field.loadValue(parent); if (value == node) { return field.getName(); } else if (value instanceof Node[]) { int index = 0; for (Node arrayNode : (Node[]) value) { if (arrayNode == node) { return field.getName() + "[" + index + "]"; } index++; } } } return "unknownField"; }
private static boolean assertAssignable(NodeFieldAccessor field, Object newValue) { if (newValue == null) { return true; } if (field.getKind() == NodeFieldKind.CHILD) { if (field.getType().isAssignableFrom(newValue.getClass())) { return true; } else { assert false : "Child class " + newValue.getClass().getName() + " is not assignable to field \"" + field.getName() + "\" of type " + field.getType().getName(); return false; } } else if (field.getKind() == NodeFieldKind.CHILDREN) { if (field.getType().getComponentType().isAssignableFrom(newValue.getClass())) { return true; } else { assert false : "Child class " + newValue.getClass().getName() + " is not assignable to field \"" + field.getName() + "\" of type " + field.getType().getName(); return false; } } throw new IllegalArgumentException(); }
private static LinkedHashMap<String, Node> findNamedNodeChildren(Node node) { LinkedHashMap<String, Node> nodes = new LinkedHashMap<>(); NodeClass nodeClass = node.getNodeClass(); for (NodeFieldAccessor field : nodeClass.getFields()) { NodeFieldKind kind = field.getKind(); if (kind == NodeFieldKind.CHILD || kind == NodeFieldKind.CHILDREN) { Object value = field.loadValue(node); if (value != null) { if (kind == NodeFieldKind.CHILD) { nodes.put(field.getName(), (Node) value); } else if (kind == NodeFieldKind.CHILDREN) { Object[] children = (Object[]) value; for (int i = 0; i < children.length; i++) { if (children[i] != null) { nodes.put(field.getName() + "[" + i + "]", (Node) children[i]); } } } } } } return nodes; }
private static void updateRootImpl(SpecializationNode start, Node node) { NodeFieldAccessor[] fields = NodeClass.get(start).getFields(); for (int i = fields.length - 1; i >= 0; i--) { NodeFieldAccessor f = fields[i]; if (f.getName().equals("root")) { f.putObject(start, node); break; } } if (start.next != null) { updateRootImpl(start.next, node); } }
private static String getNodeFieldName(Node parent, Node node, String defaultName) { NodeFieldAccessor[] fields = parent.getNodeClass().getFields(); for (NodeFieldAccessor field : fields) { Object value = field.loadValue(parent); if (field.getKind() == NodeFieldKind.CHILD && value == node) { return field.getName(); } else if (field.getKind() == NodeFieldKind.CHILDREN) { int index = 0; for (Object arrayNode : (Object[]) value) { if (arrayNode == node) { return field.getName() + "[" + index + "]"; } index++; } } } return defaultName; }
msg.append("null parent = "); } else { String fieldName = NodeUtil.findChildField(node.getParent(), node).getName(); msg.append(node.getParent().getClass().getSimpleName() + "." + fieldName + " = ");
private void readNodeProperties(Node node) { NodeFieldAccessor[] fields = node.getNodeClass().getFields(); for (NodeFieldAccessor field : fields) { if (field.getKind() == NodeFieldKind.DATA) { String key = field.getName(); if (getPropertyElement(node, key) == null) { Object value = field.loadValue(node); setNodeProperty(node, key, value); } } } }
Field field; try { field = accessor.getDeclaringClass().getDeclaredField(accessor.getName()); } catch (NoSuchFieldException ex) { throw shouldNotReachHere(ex);