com.oracle.truffle.api.nodes.Node.getNodeClass()方法的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(8.5k)|赞(0)|评价(0)|浏览(674)

本文整理了Java中com.oracle.truffle.api.nodes.Node.getNodeClass()方法的一些代码示例,展示了Node.getNodeClass()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Node.getNodeClass()方法的具体详情如下:
包路径:com.oracle.truffle.api.nodes.Node
类名称:Node
方法名:getNodeClass

Node.getNodeClass介绍

暂无

代码示例

代码示例来源:origin: org.graalvm.truffle/truffle-api

  1. /** @since 0.8 or earlier */
  2. public static NodeClass get(Node node) {
  3. return node.getNodeClass();
  4. }

代码示例来源:origin: com.oracle.truffle/truffle-api

  1. /** @since 0.8 or earlier */
  2. public static NodeClass get(Node node) {
  3. return node.getNodeClass();
  4. }

代码示例来源:origin: com.oracle/truffle

  1. public static NodeClass get(Node clazz) {
  2. return clazz.getNodeClass();
  3. }

代码示例来源:origin: com.oracle.truffle/truffle-api

  1. public Iterator<Node> iterator() {
  2. return getNodeClass().makeIterator(Node.this);
  3. }
  4. };

代码示例来源:origin: org.graalvm.truffle/truffle-api

  1. public Iterator<Node> iterator() {
  2. return getNodeClass().makeIterator(Node.this);
  3. }
  4. };

代码示例来源:origin: org.graalvm.truffle/truffle-api

  1. static Iterator<Node> makeIterator(Node node) {
  2. return node.getNodeClass().makeIterator(node);
  3. }

代码示例来源:origin: com.oracle/truffle

  1. static Iterator<Node> makeIterator(Node node) {
  2. return node.getNodeClass().makeIterator(node);
  3. }

代码示例来源:origin: com.oracle.truffle/truffle-api

  1. static Iterator<Node> makeIterator(Node node) {
  2. return node.getNodeClass().makeIterator(node);
  3. }

代码示例来源:origin: com.oracle/truffle

  1. public static List<Node> findNodeChildren(Node node) {
  2. List<Node> nodes = new ArrayList<>();
  3. NodeClass nodeClass = node.getNodeClass();
  4. for (NodeFieldAccessor nodeField : nodeClass.getChildFields()) {
  5. Object child = nodeField.getObject(node);
  6. if (child != null) {
  7. nodes.add((Node) child);
  8. }
  9. }
  10. for (NodeFieldAccessor nodeField : nodeClass.getChildrenFields()) {
  11. Object[] children = (Object[]) nodeField.getObject(node);
  12. if (children != null) {
  13. for (Object child : children) {
  14. if (child != null) {
  15. nodes.add((Node) child);
  16. }
  17. }
  18. }
  19. }
  20. return nodes;
  21. }

代码示例来源:origin: com.oracle/truffle

  1. private static LinkedHashMap<String, Node> findNamedNodeChildren(Node node) {
  2. LinkedHashMap<String, Node> nodes = new LinkedHashMap<>();
  3. NodeClass nodeClass = node.getNodeClass();
  4. for (NodeFieldAccessor field : nodeClass.getFields()) {
  5. NodeFieldKind kind = field.getKind();
  6. if (kind == NodeFieldKind.CHILD || kind == NodeFieldKind.CHILDREN) {
  7. Object value = field.loadValue(node);
  8. if (value != null) {
  9. if (kind == NodeFieldKind.CHILD) {
  10. nodes.put(field.getName(), (Node) value);
  11. } else if (kind == NodeFieldKind.CHILDREN) {
  12. Object[] children = (Object[]) value;
  13. for (int i = 0; i < children.length; i++) {
  14. if (children[i] != null) {
  15. nodes.put(field.getName() + "[" + i + "]", (Node) children[i]);
  16. }
  17. }
  18. }
  19. }
  20. }
  21. }
  22. return nodes;
  23. }

代码示例来源:origin: com.oracle/truffle

  1. /**
  2. * Finds the field in a parent node, if any, that holds a specified child node.
  3. *
  4. * @return the field (possibly an array) holding the child, {@code null} if not found.
  5. */
  6. public static NodeFieldAccessor findChildField(Node parent, Node child) {
  7. assert child != null;
  8. NodeClass parentNodeClass = parent.getNodeClass();
  9. for (NodeFieldAccessor field : parentNodeClass.getChildFields()) {
  10. if (field.getObject(parent) == child) {
  11. return field;
  12. }
  13. }
  14. for (NodeFieldAccessor field : parentNodeClass.getChildrenFields()) {
  15. Object arrayObject = field.getObject(parent);
  16. if (arrayObject != null) {
  17. Object[] array = (Object[]) arrayObject;
  18. for (int i = 0; i < array.length; i++) {
  19. if (array[i] == child) {
  20. return field;
  21. }
  22. }
  23. }
  24. }
  25. return null;
  26. }

代码示例来源:origin: com.oracle/truffle

  1. private void readNodeProperties(Node node) {
  2. NodeFieldAccessor[] fields = node.getNodeClass().getFields();
  3. for (NodeFieldAccessor field : fields) {
  4. if (field.getKind() == NodeFieldKind.DATA) {
  5. String key = field.getName();
  6. if (getPropertyElement(node, key) == null) {
  7. Object value = field.loadValue(node);
  8. setNodeProperty(node, key, value);
  9. }
  10. }
  11. }
  12. }

代码示例来源:origin: com.oracle/truffle

  1. static boolean forEachChildRecursive(Node parent, NodeVisitor visitor) {
  2. NodeClass parentNodeClass = parent.getNodeClass();
  3. for (NodeFieldAccessor field : parentNodeClass.getChildFields()) {
  4. if (!visitChild((Node) field.getObject(parent), visitor)) {
  5. return false;
  6. }
  7. }
  8. for (NodeFieldAccessor field : parentNodeClass.getChildrenFields()) {
  9. Object arrayObject = field.getObject(parent);
  10. if (arrayObject == null) {
  11. continue;
  12. }
  13. Object[] array = (Object[]) arrayObject;
  14. for (int i = 0; i < array.length; i++) {
  15. if (!visitChild((Node) array[i], visitor)) {
  16. return false;
  17. }
  18. }
  19. }
  20. return true;
  21. }

代码示例来源:origin: com.oracle/truffle

  1. private static String getNodeFieldName(Node parent, Node node, String defaultName) {
  2. NodeFieldAccessor[] fields = parent.getNodeClass().getFields();
  3. for (NodeFieldAccessor field : fields) {
  4. Object value = field.loadValue(parent);
  5. if (field.getKind() == NodeFieldKind.CHILD && value == node) {
  6. return field.getName();
  7. } else if (field.getKind() == NodeFieldKind.CHILDREN) {
  8. int index = 0;
  9. for (Object arrayNode : (Object[]) value) {
  10. if (arrayNode == node) {
  11. return field.getName() + "[" + index + "]";
  12. }
  13. index++;
  14. }
  15. }
  16. }
  17. return defaultName;
  18. }

代码示例来源:origin: com.oracle/truffle

  1. public static boolean replaceChild(Node parent, Node oldChild, Node newChild) {
  2. NodeClass nodeClass = parent.getNodeClass();
  3. for (NodeFieldAccessor nodeField : nodeClass.getChildFields()) {
  4. if (nodeField.getObject(parent) == oldChild) {
  5. assert assertAssignable(nodeField, newChild);
  6. nodeField.putObject(parent, newChild);
  7. return true;
  8. }
  9. }
  10. for (NodeFieldAccessor nodeField : nodeClass.getChildrenFields()) {
  11. Object arrayObject = nodeField.getObject(parent);
  12. if (arrayObject != null) {
  13. Object[] array = (Object[]) arrayObject;
  14. for (int i = 0; i < array.length; i++) {
  15. if (array[i] == oldChild) {
  16. assert assertAssignable(nodeField, newChild);
  17. array[i] = newChild;
  18. return true;
  19. }
  20. }
  21. }
  22. }
  23. return false;
  24. }

代码示例来源:origin: com.oracle.truffle/truffle-api

  1. private static String getNodeFieldName(Node parent, Node node, String defaultName) {
  2. NodeClass nodeClass = parent.getNodeClass();
  3. for (Object field : nodeClass.getNodeFields()) {
  4. if (nodeClass.isChildField(field)) {
  5. if (nodeClass.getFieldObject(field, parent) == node) {
  6. return nodeClass.getFieldName(field);
  7. }
  8. } else if (nodeClass.isChildrenField(field)) {
  9. int index = 0;
  10. for (Object arrayNode : (Object[]) nodeClass.getFieldObject(field, parent)) {
  11. if (arrayNode == node) {
  12. return nodeClass.getFieldName(field) + "[" + index + "]";
  13. }
  14. index++;
  15. }
  16. } else if (nodeClass.nodeFieldsOrderedByKind()) {
  17. break;
  18. }
  19. }
  20. return defaultName;
  21. }

代码示例来源:origin: org.graalvm.truffle/truffle-api

  1. static boolean forEachChildRecursive(Node parent, NodeVisitor visitor) {
  2. NodeClass nodeClass = parent.getNodeClass();
  3. for (Object field : nodeClass.getNodeFields()) {
  4. if (nodeClass.isChildField(field)) {
  5. if (!visitChild((Node) nodeClass.getFieldObject(field, parent), visitor)) {
  6. return false;
  7. }
  8. } else if (nodeClass.isChildrenField(field)) {
  9. Object arrayObject = nodeClass.getFieldObject(field, parent);
  10. if (arrayObject == null) {
  11. continue;
  12. }
  13. Object[] array = (Object[]) arrayObject;
  14. for (int i = 0; i < array.length; i++) {
  15. if (!visitChild((Node) array[i], visitor)) {
  16. return false;
  17. }
  18. }
  19. } else if (nodeClass.nodeFieldsOrderedByKind()) {
  20. break;
  21. }
  22. }
  23. return true;
  24. }

代码示例来源:origin: org.graalvm.truffle/truffle-api

  1. private static String getNodeFieldName(Node parent, Node node, String defaultName) {
  2. NodeClass nodeClass = parent.getNodeClass();
  3. for (Object field : nodeClass.getNodeFields()) {
  4. if (nodeClass.isChildField(field)) {
  5. if (nodeClass.getFieldObject(field, parent) == node) {
  6. return nodeClass.getFieldName(field);
  7. }
  8. } else if (nodeClass.isChildrenField(field)) {
  9. int index = 0;
  10. for (Object arrayNode : (Object[]) nodeClass.getFieldObject(field, parent)) {
  11. if (arrayNode == node) {
  12. return nodeClass.getFieldName(field) + "[" + index + "]";
  13. }
  14. index++;
  15. }
  16. } else if (nodeClass.nodeFieldsOrderedByKind()) {
  17. break;
  18. }
  19. }
  20. return defaultName;
  21. }

代码示例来源:origin: com.oracle.truffle/truffle-api

  1. static int adoptChildrenAndCountHelper(Node currentNode) {
  2. int count = 0;
  3. NodeClass clazz = currentNode.getNodeClass();
  4. for (Object field : clazz.getNodeFields()) {
  5. if (clazz.isChildField(field)) {
  6. Object child = clazz.getFieldObject(field, currentNode);
  7. if (child != null) {
  8. Node node = (Node) child;
  9. count += currentNode.adoptAndCountHelper(node);
  10. }
  11. } else if (clazz.isChildrenField(field)) {
  12. Object arrayObject = clazz.getFieldObject(field, currentNode);
  13. if (arrayObject == null) {
  14. continue;
  15. }
  16. Object[] array = (Object[]) arrayObject;
  17. for (int i = 0; i < array.length; i++) {
  18. Object child = array[i];
  19. if (child != null) {
  20. Node node = (Node) child;
  21. count += currentNode.adoptAndCountHelper(node);
  22. }
  23. }
  24. } else if (clazz.nodeFieldsOrderedByKind()) {
  25. break;
  26. }
  27. }
  28. return count;
  29. }

代码示例来源:origin: com.oracle.truffle/truffle-api

  1. static boolean forEachChildRecursive(Node parent, NodeVisitor visitor) {
  2. NodeClass nodeClass = parent.getNodeClass();
  3. for (Object field : nodeClass.getNodeFields()) {
  4. if (nodeClass.isChildField(field)) {
  5. if (!visitChild((Node) nodeClass.getFieldObject(field, parent), visitor)) {
  6. return false;
  7. }
  8. } else if (nodeClass.isChildrenField(field)) {
  9. Object arrayObject = nodeClass.getFieldObject(field, parent);
  10. if (arrayObject == null) {
  11. continue;
  12. }
  13. Object[] array = (Object[]) arrayObject;
  14. for (int i = 0; i < array.length; i++) {
  15. if (!visitChild((Node) array[i], visitor)) {
  16. return false;
  17. }
  18. }
  19. } else if (nodeClass.nodeFieldsOrderedByKind()) {
  20. break;
  21. }
  22. }
  23. return true;
  24. }

相关文章