# HG changeset patch # User Christian Humer # Date 1421955768 -3600 # Node ID 92880b0f7fedcbe28ce68b9bd77db07ba75af2c0 # Parent 57f3498a51a422471ea94839c4846cd7a989ea2c Truffle-DSL: add internal API support to reset the specialization chain. diff -r 57f3498a51a4 -r 92880b0f7fed graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/internal/SpecializationNode.java --- a/graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/internal/SpecializationNode.java Tue Feb 03 15:07:03 2015 +0100 +++ b/graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/internal/SpecializationNode.java Thu Jan 22 20:42:48 2015 +0100 @@ -64,6 +64,14 @@ return NodeCost.NONE; } + public void reset() { + SpecializationNode start = findStart(); + SpecializationNode end = findEnd(); + if (start != end) { + start.replace(end, "reset specialization"); + } + } + public static Node updateRoot(Node node) { updateRootImpl(((SpecializedNode) node).getSpecializationNode(), node); return node; @@ -133,6 +141,14 @@ return next != null ? next.count() + 1 : 1; } + private SpecializationNode findEnd() { + SpecializationNode node = this; + while (node.next != null) { + node = node.next; + } + return node; + } + protected final SpecializationNode removeSame(final CharSequence reason) { return atomic(new Callable() { public SpecializationNode call() throws Exception {