Mercurial > hg > truffle
diff graal/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java @ 21890:894f82515e38
Truffle/APIs and Debugging: Evolutionary steps to integrating debugging and tool support with TruffleVM APIs
- Add a version string to language registration: Language.getShortName() produces a string with both language and version
- Rename SLMain --> SLLanguage (little change current machinery)
- Remove DebugEngine dependence on ExecutionContext: Visualizer access migrated to TruffleLanguage
- ExecutionContext now has only one method left: getCompilerOptions()
- Rename SourceExecutionProvider to DebugSupportProvider, now supplied by implementing abstract TruffleLanguage.getDebugSupport()
- Revise DebugEngine and its helper classes to work with the new APIs
author | Michael Van De Vanter <michael.van.de.vanter@oracle.com> |
---|---|
date | Tue, 09 Jun 2015 15:20:30 -0700 |
parents | 45083be8a812 |
children |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java Fri Jun 05 18:05:13 2015 -0700 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java Tue Jun 09 15:20:30 2015 -0700 @@ -28,7 +28,9 @@ import java.lang.annotation.*; import java.lang.reflect.*; +import com.oracle.truffle.api.debug.*; import com.oracle.truffle.api.impl.*; +import com.oracle.truffle.api.instrument.*; import com.oracle.truffle.api.source.*; import com.oracle.truffle.api.vm.*; import com.oracle.truffle.api.vm.TruffleVM.Language; @@ -104,10 +106,10 @@ * somebody asks for it (by calling this method). * <p> * The exported object can either be <code>TruffleObject</code> (e.g. a native object from the - * other language) to support inter-operability between languages, {@link String} or one of Java + * other language) to support interoperability between languages, {@link String} or one of Java * primitive wrappers ( {@link Integer}, {@link Double}, {@link Short}, {@link Boolean}, etc.). * <p> - * The way a symbol becomes <em>exported</em> is language dependant. In general it is preferred + * The way a symbol becomes <em>exported</em> is language dependent. In general it is preferred * to make the export explicit - e.g. call some function or method to register an object under * specific name. Some languages may however decide to support implicit export of symbols (for * example from global scope, if they have one). However explicit exports should always be @@ -143,6 +145,10 @@ */ protected abstract boolean isObjectOfLanguage(Object object); + protected abstract ToolSupportProvider getToolSupport(); + + protected abstract DebugSupportProvider getDebugSupport(); + /** * Represents execution environment of the {@link TruffleLanguage}. Each active * {@link TruffleLanguage} receives instance of the environment before any code is executed upon @@ -237,5 +243,16 @@ protected Object languageGlobal(TruffleLanguage l) { return l.getLanguageGlobal(); } + + @Override + protected ToolSupportProvider getToolSupport(TruffleLanguage l) { + return l.getToolSupport(); + } + + @Override + protected DebugSupportProvider getDebugSupport(TruffleLanguage l) { + return l.getDebugSupport(); + } } + }