Mercurial > hg > truffle
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) { |