# HG changeset patch # User Matthias Grimmer # Date 1430407673 -7200 # Node ID ab451b6de9f88ad831dcca9c276dccaa510a4d19 # Parent f383ff4c9af832476e4698500e8fb060853af9ef Interop: introduce separate global language scope diff -r f383ff4c9af8 -r ab451b6de9f8 graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/ForeignAccessArguments.java --- a/graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/ForeignAccessArguments.java Thu Apr 30 20:29:27 2015 +0200 +++ b/graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/ForeignAccessArguments.java Thu Apr 30 17:27:53 2015 +0200 @@ -54,6 +54,10 @@ return copyOfRange(arguments, RUNTIME_ARGUMENT_COUNT, arguments.length); } + public static Object[] extractUserArguments(int skip, Object[] arguments) { + return copyOfRange(arguments, RUNTIME_ARGUMENT_COUNT + skip, arguments.length); + } + public static int getUserArgumentCount(Object[] arguments) { return arguments.length - RUNTIME_ARGUMENT_COUNT; } diff -r f383ff4c9af8 -r ab451b6de9f8 graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/TruffleGlobalScope.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/TruffleGlobalScope.java Thu Apr 30 17:27:53 2015 +0200 @@ -0,0 +1,14 @@ +package com.oracle.truffle.interop; + +import com.oracle.truffle.api.frame.*; +import com.oracle.truffle.api.interop.*; + +public interface TruffleGlobalScope { + void exportTruffleObject(Object identifier, TruffleObject object); + + FrameSlot getFrameSlot(Object identifier); + + TruffleObject getTruffleObject(FrameSlot slot); + + boolean contains(Object identifier); +} diff -r f383ff4c9af8 -r ab451b6de9f8 graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/TruffleLanguage.java --- a/graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/TruffleLanguage.java Thu Apr 30 20:29:27 2015 +0200 +++ b/graal/com.oracle.truffle.interop/src/com/oracle/truffle/interop/TruffleLanguage.java Thu Apr 30 17:27:53 2015 +0200 @@ -29,12 +29,12 @@ public interface TruffleLanguage { String getLanguageName(); - TruffleObject getLanguageContext(); - - void setGlobalContext(TruffleObject context); - - boolean hasGlobalProperty(String name); - Object run(String[] arguments); + void setTruffleGlobalScope(TruffleGlobalScope globalScope); + + TruffleObject getLanguageGlobal(); + + boolean isObjectOfLanguage(TruffleObject object); + }