Mercurial > hg > truffle
changeset 19281:92880b0f7fed
Truffle-DSL: add internal API support to reset the specialization chain.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Thu, 22 Jan 2015 20:42:48 +0100 |
parents | 57f3498a51a4 |
children | ae81dd154fb6 |
files | graal/com.oracle.truffle.api.dsl/src/com/oracle/truffle/api/dsl/internal/SpecializationNode.java |
diffstat | 1 files changed, 16 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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<SpecializationNode>() { public SpecializationNode call() throws Exception {