# HG changeset patch # User Chris Seaton # Date 1415494455 0 # Node ID 3343ed66de7962d2d2e99ff3c081b42c4a673193 # Parent 36fb9592c13b78e724e7e25bf4202798e5c79970 Truffle: RootNode#getExecutionContext. diff -r 36fb9592c13b -r 3343ed66de79 CHANGELOG.md --- a/CHANGELOG.md Sat Nov 08 22:22:00 2014 +0000 +++ b/CHANGELOG.md Sun Nov 09 00:54:15 2014 +0000 @@ -16,6 +16,7 @@ * Renamed DirectCallNode#isSplit to DirectCallNode#isCallTargetCloned * Added PrimitiveValueProfile. * Added -G:TruffleTimeThreshold=5000 option to defer compilation for call targets +* Added RootNode#getExecutionContext to identify nodes with languages * ... ## Version 0.5 diff -r 36fb9592c13b -r 3343ed66de79 graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java Sat Nov 08 22:22:00 2014 +0000 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/nodes/RootNode.java Sun Nov 09 00:54:15 2014 +0000 @@ -107,4 +107,23 @@ this.callTarget = callTarget; } + /** + * Returns the {@link ExecutionContext} associated with this RootNode. This allows + * the correct ExecutionContext to be determined for a RootNode (and + * so also for a {@link RootCallTarget} and a {@link FrameInstance} obtained from the call + * stack) without prior knowledge of the language it has come from. + * + * Used for instance to determine the language of a RootNode: + * + *
+     * 
+     * rootNode.getExecutionContext().getLanguageShortName();
+     *  
+ * + * Returns null by default. + */ + public ExecutionContext getExecutionContext() { + return null; + } + } diff -r 36fb9592c13b -r 3343ed66de79 graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/SLRootNode.java --- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/SLRootNode.java Sat Nov 08 22:22:00 2014 +0000 +++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/nodes/SLRootNode.java Sun Nov 09 00:54:15 2014 +0000 @@ -22,6 +22,7 @@ */ package com.oracle.truffle.sl.nodes; +import com.oracle.truffle.api.*; import com.oracle.truffle.api.CompilerDirectives.*; import com.oracle.truffle.api.frame.*; import com.oracle.truffle.api.nodes.*; @@ -86,4 +87,9 @@ public SLContext getSLContext() { return this.context; } + + @Override + public ExecutionContext getExecutionContext() { + return this.context; + } }