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();
+        }
     }
+
 }