Mercurial > hg > truffle
changeset 14080:cd4595e8a685
Truffle: added notification from callee to callers in the CallNode.
author | Christian Humer <christian.humer@gmail.com> |
---|---|
date | Wed, 05 Mar 2014 23:33:36 +0100 |
parents | ca92db718c74 |
children | a5fe04acc81a |
files | graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/CallNode.java graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java |
diffstat | 2 files changed, 13 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/CallNode.java Wed Mar 05 23:33:25 2014 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/CallNode.java Wed Mar 05 23:33:36 2014 +0100 @@ -114,13 +114,17 @@ registerCallTarget((CallNode) newNode); } - protected final void registerCallTarget(CallNode newNode) { + protected static final void registerCallTarget(CallNode newNode) { RootNode newRoot = newNode.getCurrentRootNode(); if (newRoot != null) { newRoot.addCachedCallNode(newNode); } } + protected void notifyCallNodeAdded() { + + } + /** * Returns the {@link RootNode} associated with {@link CallTarget} returned by * {@link #getCurrentCallTarget()}. @@ -140,7 +144,7 @@ * @deprecated always returns <code>true</code> now. */ @Deprecated - public final boolean isInlinable() { + public boolean isInlinable() { return true; }
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java Wed Mar 05 23:33:25 2014 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java Wed Mar 05 23:33:36 2014 +0100 @@ -128,7 +128,13 @@ /* Internal API. Do not use. */ void addCachedCallNode(CallNode callSite) { - this.cachedCallNodes.add(callSite); + if (cachedCallNodes.add(callSite)) { + for (CallNode callNode : cachedCallNodes) { + if (callSite != callNode) { + callNode.notifyCallNodeAdded(); + } + } + } } /* Internal API. Do not use. */