@Override protected Object getFieldValue(Object field, Node receiver) { return ((NodeFieldAccessor) field).loadValue(receiver); }
@SuppressWarnings({"deprecation", "unused"}) private static Object findFieldValue(NodeClass nodeClass, com.oracle.truffle.api.nodes.NodeFieldAccessor field, Node node) { return field.loadValue(node); }
@Override protected Object getFieldValue(Object field, Node receiver) { return ((NodeFieldAccessor) field).loadValue(receiver); }
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; }
@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 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); } } } }
for (NodeFieldAccessor field : childFields) { Object value = field.loadValue(node); if (value == null) { printNewLine(p, level);
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; }