Mercurial > hg > truffle
diff truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/AccessorTest.java @ 22066:78c3d3d8d86e
Clearly separating the TruffleLanguage definition from context used during its execution. TruffleLanguage now has to have public static field INSTANCE and override createContext method.
author | Jaroslav Tulach <jaroslav.tulach@oracle.com> |
---|---|
date | Thu, 06 Aug 2015 08:31:49 +0200 |
parents | 09531c471176 |
children | cf19259edf87 |
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/AccessorTest.java Wed Aug 05 10:19:41 2015 -0700 +++ b/truffle/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/AccessorTest.java Thu Aug 06 08:31:49 2015 +0200 @@ -22,6 +22,7 @@ */ package com.oracle.truffle.api.test.vm; +import com.oracle.truffle.api.TruffleLanguage; import com.oracle.truffle.api.impl.Accessor; import com.oracle.truffle.api.test.vm.ImplicitExplicitExportTest.ExportImportLanguage1; import static com.oracle.truffle.api.test.vm.ImplicitExplicitExportTest.L1; @@ -54,13 +55,18 @@ Object afterInitialization = findLanguageByClass(vm); assertNotNull("Language found", afterInitialization); - assertTrue("Right instance", afterInitialization instanceof ExportImportLanguage1); + assertTrue("Right instance: " + afterInitialization, afterInitialization instanceof ExportImportLanguage1); } - Object findLanguageByClass(TruffleVM vm) throws IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException { + Object findLanguageByClass(TruffleVM vm) throws IllegalAccessException, NoSuchMethodException, SecurityException, IllegalArgumentException, InvocationTargetException, NoSuchFieldException { Method find = Accessor.class.getDeclaredMethod("findLanguage", TruffleVM.class, Class.class); find.setAccessible(true); - Object language1 = find.invoke(API, vm, ExportImportLanguage1.class); - return language1; + TruffleLanguage.Env env = (TruffleLanguage.Env) find.invoke(API, vm, ExportImportLanguage1.class); + Field f = env.getClass().getDeclaredField("langCtx"); + f.setAccessible(true); + Object langCtx = f.get(env); + f = langCtx.getClass().getDeclaredField("lang"); + f.setAccessible(true); + return f.get(langCtx); } }