NodeClass getNodeClass() { return NodeClass.get(getClass()); }
private static Node updateParent(Node parent, Node child) { if (child != null) { NodeClass nodeClass = NodeClass.get(child.getClass()); nodeClass.getNodeClassField().putObject(child, nodeClass); nodeClass.getParentField().putObject(child, parent); } return child; }
private static LinkedHashMap<String, Node> findNamedNodeChildren(Node node) { LinkedHashMap<String, Node> nodes = new LinkedHashMap<>(); NodeClass nodeClass = NodeClass.get(node); for (Object field : nodeClass.getNodeFields()) { if (nodeClass.isChildField(field)) { Object value = nodeClass.getFieldObject(field, node); if (value != null) { nodes.put(nodeClass.getFieldName(field), (Node) value); } } else if (nodeClass.isChildrenField(field)) { Object value = nodeClass.getFieldObject(field, node); if (value != null) { Object[] children = (Object[]) value; for (int i = 0; i < children.length; i++) { if (children[i] != null) { nodes.put(nodeClass.getFieldName(field) + "[" + 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 void readNodeProperties(Node node) { NodeClass nodeClass = NodeClass.get(node); for (Object field : nodeClass.getNodeFields()) { if (isDataField(nodeClass, field)) { String key = nodeClass.getFieldName(field); if (!getElementByObject(node).getProperties().containsKey(key)) { Object value = nodeClass.getFieldValue(field, node); setNodeProperty(node, key, value); } } } }
@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) { NodeClass nodeClass = NodeClass.get(node); for (Object field : nodeClass.getNodeFields()) { if (isDataField(nodeClass, field)) { String key = nodeClass.getFieldName(field); if (!getElementByObject(node).getProperties().containsKey(key)) { Object value = nodeClass.getFieldValue(field, node); setNodeProperty(node, key, value); } } } }
private static LinkedHashMap<String, Node> findNamedNodeChildren(Node node) { LinkedHashMap<String, Node> nodes = new LinkedHashMap<>(); NodeClass nodeClass = NodeClass.get(node); for (Object field : nodeClass.getNodeFields()) { if (nodeClass.isChildField(field)) { Object value = nodeClass.getFieldObject(field, node); if (value != null) { nodes.put(nodeClass.getFieldName(field), (Node) value); } } else if (nodeClass.isChildrenField(field)) { Object value = nodeClass.getFieldObject(field, node); if (value != null) { Object[] children = (Object[]) value; for (int i = 0; i < children.length; i++) { if (children[i] != null) { nodes.put(nodeClass.getFieldName(field) + "[" + i + "]", (Node) children[i]); } } } } } return nodes; }
NodeClass getNodeClass() { return NodeClass.get(getClass()); }
private Node invokeDeserialize(VariableLengthIntBuffer buffer, Class<? extends Node> nodeClass) throws UnsupportedConstantPoolTypeException { if (nodeClass == null) { return null; } Object object; try { object = unsafe.allocateInstance(nodeClass); } catch (InstantiationException e) { throw new RuntimeException("Unable to allocate truffle node " + nodeClass, e); } if (!(object instanceof Node)) { throw new RuntimeException("Class is not a truffle node " + nodeClass); } Node node = (Node) object; NodeFieldAccessor[] nodeFields = NodeClass.get(nodeClass).getFields(); deserializeChildrenFields(node, nodeFields); deserializeChildFields(node, nodeFields); deserializeDataFields(buffer, node, nodeFields); return node; }
String sep = ""; p.print("("); NodeClass nodeClass = NodeClass.get(node); for (Object field : nodeClass.getNodeFields()) { if (nodeClass.isChildField(field) || nodeClass.isChildrenField(field)) {
/** @since 0.8 or earlier */ protected Node() { CompilerAsserts.neverPartOfCompilation("do not create a Node from compiled code"); assert NodeClass.get(getClass()) != null; // ensure NodeClass constructor does not throw if (TruffleOptions.TraceASTJSON) { dump(this, null, null); } }
private void serialize(VariableLengthIntBuffer buffer, Node node) throws UnsupportedConstantPoolTypeException { if (node == null) { buffer.put(VariableLengthIntBuffer.NULL); return; } Class<? extends Node> nodeClass = node.getClass(); NodeFieldAccessor[] nodeFields = NodeClass.get(nodeClass).getFields(); serializeChildFields(buffer, node, nodeFields); serializeChildrenFields(buffer, node, nodeFields); buffer.put(cp.putClass(node.getClass())); serializeDataFields(buffer, node, nodeFields); }
String sep = ""; p.print("("); NodeClass nodeClass = NodeClass.get(node); for (Object field : nodeClass.getNodeFields()) { if (nodeClass.isChildField(field) || nodeClass.isChildrenField(field)) {
/** @since 0.8 or earlier */ @SuppressWarnings("deprecation") protected Node() { CompilerAsserts.neverPartOfCompilation("do not create a Node from compiled code"); assert NodeClass.get(getClass()) != null; // ensure NodeClass constructor does not throw if (TruffleOptions.TraceASTJSON) { dump(this, null, null); } }
String sep = ""; p.print("("); for (NodeFieldAccessor field : NodeClass.get(node).getFields()) { if (field.getKind() == NodeFieldKind.CHILD || field.getKind() == NodeFieldKind.CHILDREN) { childFields.add(field);
protected Node(SourceSection sourceSection) { CompilerAsserts.neverPartOfCompilation(); this.sourceSection = sourceSection; this.nodeClass = NodeClass.get(getClass()); if (TruffleOptions.TraceASTJSON) { JSONHelper.dumpNewNode(this); } }
NodeClass nodeClass = NodeClass.get(clazz);
@SuppressWarnings("deprecation") private static void readNodeProperties(ASTNode astNode, Node node) { NodeClass nodeClass = NodeClass.get(node); for (com.oracle.truffle.api.nodes.NodeFieldAccessor field : findNodeFields(nodeClass)) { if (isDataField(nodeClass, field)) { String key = findFieldName(nodeClass, field); Object value = findFieldValue(nodeClass, field, node); astNode.properties.put(key, value); } } }
@SuppressWarnings("deprecation") private static LinkedHashMap<String, Node> findNamedNodeChildren(Node node) { LinkedHashMap<String, Node> nodes = new LinkedHashMap<>(); NodeClass nodeClass = NodeClass.get(node); for (com.oracle.truffle.api.nodes.NodeFieldAccessor field : findNodeFields(nodeClass)) { if (isChildField(nodeClass, field)) { Object value = findFieldObject(nodeClass, field, node); if (value != null) { nodes.put(findFieldName(nodeClass, field), (Node) value); } } else if (isChildrenField(nodeClass, field)) { Object value = findFieldObject(nodeClass, field, node); if (value != null) { Object[] children = (Object[]) value; for (int i = 0; i < children.length; i++) { if (children[i] != null) { nodes.put(findFieldName(nodeClass, field) + "[" + i + "]", (Node) children[i]); } } } } } return nodes; }