comparison graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/NodeUtil.java @ 19758:f682b9e6ca07

Truffle: expose non-atomic replace API to Truffle DSL to avoid multiple RootNode lookups for multiple replaces in one atomic block.
author Christian Humer <christian.humer@gmail.com>
date Tue, 10 Mar 2015 19:38:07 +0100
parents 73811d1b4cd0
children a0971187a38a
comparison
equal deleted inserted replaced
19757:e8d2f3f95dcd 19758:f682b9e6ca07
595 } 595 }
596 596
597 return nodes; 597 return nodes;
598 } 598 }
599 599
600 public static <T extends Node> T nonAtomicReplace(Node oldNode, T newNode, CharSequence reason) {
601 oldNode.replaceHelper(newNode, reason);
602 return newNode;
603 }
604
600 public static boolean replaceChild(Node parent, Node oldChild, Node newChild) { 605 public static boolean replaceChild(Node parent, Node oldChild, Node newChild) {
601 NodeClass nodeClass = NodeClass.get(parent.getClass()); 606 NodeClass nodeClass = NodeClass.get(parent.getClass());
602 607
603 for (NodeField nodeField : nodeClass.getChildFields()) { 608 for (NodeField nodeField : nodeClass.getChildFields()) {
604 if (nodeField.getObject(parent) == oldChild) { 609 if (nodeField.getObject(parent) == oldChild) {