Mercurial > hg > truffle
changeset 22309:78ebf3cda0b5
Merging the test to justify ae5c160bd047 fix
author | Jaroslav Tulach <jaroslav.tulach@oracle.com> |
---|---|
date | Thu, 15 Oct 2015 09:42:50 +0200 |
parents | d9b3e229ee46 (diff) 453f43971ca1 (current diff) |
children | 1d60440b03a8 |
files | |
diffstat | 6 files changed, 31 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/Layout.java Thu Oct 15 09:41:31 2015 +0200 +++ b/truffle/com.oracle.truffle.api.object/src/com/oracle/truffle/api/object/Layout.java Thu Oct 15 09:42:50 2015 +0200 @@ -169,8 +169,13 @@ return this; } + @Deprecated public EnumSet<ImplicitCast> getAllowedImplicitCasts() { return allowedImplicitCasts; } } + + protected static EnumSet<ImplicitCast> getAllowedImplicitCasts(Builder builder) { + return builder.allowedImplicitCasts; + } }
--- a/truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/PolyglotEngine.java Thu Oct 15 09:41:31 2015 +0200 +++ b/truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/PolyglotEngine.java Thu Oct 15 09:42:50 2015 +0200 @@ -499,10 +499,10 @@ } }); exceptionCheck(result); - return createValue(lang[0], result, ready); + return createValue(lang, result, ready); } - Value createValue(TruffleLanguage lang, Object[] result, CountDownLatch ready) { + Value createValue(TruffleLanguage[] lang, Object[] result, CountDownLatch ready) { return new Value(lang, result, ready); } @@ -583,7 +583,7 @@ } else { ready.countDown(); } - return obj[0] == null ? null : createValue(lang[0], obj, ready); + return obj[0] == null ? null : createValue(lang, obj, ready); } private void findGlobalSymbolImpl(Object[] obj, String globalName, TruffleLanguage<?>[] lang, CountDownLatch ready) { @@ -675,12 +675,12 @@ * running on behind. */ public class Value { - private final TruffleLanguage<?> language; + private final TruffleLanguage<?>[] language; private final Object[] result; private final CountDownLatch ready; private CallTarget target; - Value(TruffleLanguage<?> language, Object[] result, CountDownLatch ready) { + Value(TruffleLanguage<?>[] language, Object[] result, CountDownLatch ready) { this.language = language; this.result = result; this.ready = ready; @@ -729,8 +729,12 @@ } } if (representation == String.class) { - final Class<? extends TruffleLanguage> clazz = language.getClass(); - return representation.cast(SPI.toString(language, findEnv(clazz), obj)); + final Class<? extends TruffleLanguage> clazz = language[0].getClass(); + Object unwrapped = obj; + while (unwrapped instanceof EngineTruffleObject) { + unwrapped = ((EngineTruffleObject) obj).getDelegate(); + } + return representation.cast(SPI.toString(language[0], findEnv(clazz), unwrapped)); } if (representation.isInstance(obj)) { return representation.cast(obj); @@ -773,8 +777,8 @@ try (final Closeable c = SPI.executionStart(PolyglotEngine.this, -1, debugger, null)) { List<Object> arr = new ArrayList<>(); if (thiz == null) { - if (language != null) { - Object global = SPI.languageGlobal(SPI.findLanguage(PolyglotEngine.this, language.getClass())); + if (language[0] != null) { + Object global = SPI.languageGlobal(SPI.findLanguage(PolyglotEngine.this, language[0].getClass())); if (global != null) { arr.add(global); } @@ -786,7 +790,7 @@ for (;;) { try { if (target == null) { - target = SymbolInvokerImpl.createCallTarget(language, result[0], arr.toArray()); + target = SymbolInvokerImpl.createCallTarget(language[0], result[0], arr.toArray()); } res[0] = target.call(arr.toArray()); break; @@ -891,7 +895,7 @@ checkThread(); Object[] res = {SPI.languageGlobal(getEnv(true)), null}; - return res[0] == null ? null : new Value(info.getImpl(true), res, null); + return res[0] == null ? null : new Value(new TruffleLanguage[]{info.getImpl(true)}, res, null); } /**
--- a/truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/TruffleVM.java Thu Oct 15 09:41:31 2015 +0200 +++ b/truffle/com.oracle.truffle.api.vm/src/com/oracle/truffle/api/vm/TruffleVM.java Thu Oct 15 09:42:50 2015 +0200 @@ -135,7 +135,7 @@ } @Override - Value createValue(TruffleLanguage lang, Object[] result, CountDownLatch ready) { + Value createValue(TruffleLanguage[] lang, Object[] result, CountDownLatch ready) { return new Symbol(lang, result, ready); } @@ -172,7 +172,7 @@ @Deprecated public class Symbol extends Value { - Symbol(TruffleLanguage<?> language, Object[] result, CountDownLatch ready) { + Symbol(TruffleLanguage<?>[] language, Object[] result, CountDownLatch ready) { super(language, result, ready); }
--- a/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ProbeInstrument.java Thu Oct 15 09:41:31 2015 +0200 +++ b/truffle/com.oracle.truffle.api/src/com/oracle/truffle/api/instrument/ProbeInstrument.java Thu Oct 15 09:42:50 2015 +0200 @@ -28,9 +28,9 @@ import com.oracle.truffle.api.CallTarget; import com.oracle.truffle.api.CompilerDirectives; +import com.oracle.truffle.api.Truffle; import com.oracle.truffle.api.TruffleLanguage; import com.oracle.truffle.api.frame.VirtualFrame; -import com.oracle.truffle.api.impl.DefaultDirectCallNode; import com.oracle.truffle.api.nodes.DirectCallNode; import com.oracle.truffle.api.nodes.Node; import com.oracle.truffle.api.nodes.NodeCost; @@ -394,7 +394,8 @@ try { final CallTarget callTarget = Instrumenter.ACCESSOR.parse(languageClass, source, node, NO_ARGS); if (callTarget != null) { - callNode = new DefaultDirectCallNode(callTarget); // force inlining? + callNode = Truffle.getRuntime().createDirectCallNode(callTarget); + callNode.forceInlining(); adoptChildren(); EvalInstrument.this.probe.invalidateProbeUnchanged(); } @@ -406,7 +407,7 @@ } if (callNode != null) { try { - final Object result = callNode.call(vFrame, null); + final Object result = callNode.call(vFrame, NO_ARGS); if (evalListener != null) { evalListener.onExecution(node, vFrame, result); }
--- a/truffle/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/BasicLayout.java Thu Oct 15 09:41:31 2015 +0200 +++ b/truffle/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/BasicLayout.java Thu Oct 15 09:42:50 2015 +0200 @@ -23,6 +23,7 @@ package com.oracle.truffle.object.basic; import com.oracle.truffle.api.object.DynamicObject; +import com.oracle.truffle.api.object.Layout; import com.oracle.truffle.api.object.Location; import com.oracle.truffle.api.object.ObjectLocation; import com.oracle.truffle.api.object.ObjectType; @@ -34,6 +35,7 @@ import com.oracle.truffle.object.Locations.DualLocation; import com.oracle.truffle.object.basic.BasicLocations.ObjectFieldLocation; import com.oracle.truffle.object.basic.BasicLocations.SimpleObjectFieldLocation; + import java.util.EnumSet; public class BasicLayout extends LayoutImpl { @@ -50,8 +52,8 @@ this.objectArrayLocation = DynamicObjectBasic.OBJECT_ARRAY_LOCATION; } - static LayoutImpl createLayoutImpl(EnumSet<ImplicitCast> allowedImplicitCasts, LayoutStrategy strategy) { - return new BasicLayout(allowedImplicitCasts, strategy); + static LayoutImpl createLayoutImpl(Layout.Builder builder, LayoutStrategy strategy) { + return new BasicLayout(getAllowedImplicitCasts(builder), strategy); } @Override
--- a/truffle/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/DefaultLayoutFactory.java Thu Oct 15 09:41:31 2015 +0200 +++ b/truffle/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/DefaultLayoutFactory.java Thu Oct 15 09:42:50 2015 +0200 @@ -30,7 +30,7 @@ public class DefaultLayoutFactory implements LayoutFactory { public Layout createLayout(Layout.Builder layoutBuilder) { - return BasicLayout.createLayoutImpl(layoutBuilder.getAllowedImplicitCasts(), new DefaultStrategy()); + return BasicLayout.createLayoutImpl(layoutBuilder, new DefaultStrategy()); } public Property createProperty(Object id, Location location) {