From 9db8d2393718a32c95bdbd99a0ddfd51deeb6e9b Mon Sep 17 00:00:00 2001 From: stepan <stepan.sindelar@oracle.com> Date: Thu, 14 Dec 2017 12:06:36 +0100 Subject: [PATCH] Do not hold reference to REngine in AnonymousRootNode --- .../com/oracle/truffle/r/engine/REngine.java | 18 ++++++++++++------ mx.fastr/suite.py | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java index 3fc8de06e5..e457130ddb 100644 --- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java +++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java @@ -533,7 +533,7 @@ final class REngine implements Engine, Engine.Timings { */ @TruffleBoundary private RootCallTarget doMakeCallTarget(RNode body, String description, boolean printResult, boolean topLevel) { - return Truffle.getRuntime().createCallTarget(new AnonymousRootNode(body, description, printResult, topLevel)); + return Truffle.getRuntime().createCallTarget(new AnonymousRootNode(this, body, description, printResult, topLevel)); } /** @@ -544,7 +544,7 @@ final class REngine implements Engine, Engine.Timings { * context of that frame. Note that passing only this one frame argument, strictly spoken, * violates the frame layout as set forth in {@link RArguments}. This is for internal use only. */ - private final class AnonymousRootNode extends RootNode implements RootWithBody { + private static final class AnonymousRootNode extends RootNode implements RootWithBody { private final ValueProfile frameTypeProfile = ValueProfile.createClassProfile(); private final ConditionProfile isVirtualFrameProfile = ConditionProfile.createBinaryProfile(); @@ -552,13 +552,15 @@ final class REngine implements Engine, Engine.Timings { private final String description; private final boolean printResult; private final boolean topLevel; + private final boolean suppressWarnings; @Child private RNode body; @Child private GetVisibilityNode visibility = GetVisibilityNode.create(); @Child private SetVisibilityNode setVisibility = SetVisibilityNode.create(); - protected AnonymousRootNode(RNode body, String description, boolean printResult, boolean topLevel) { - super(context.getLanguage()); + protected AnonymousRootNode(REngine engine, RNode body, String description, boolean printResult, boolean topLevel) { + super(engine.context.getLanguage()); + this.suppressWarnings = engine.suppressWarnings; this.body = body; this.description = description; this.printResult = printResult; @@ -597,7 +599,7 @@ final class REngine implements Engine, Engine.Timings { if (printResult && result != null) { assert topLevel; if (visibility.execute(vf)) { - printResult(result); + printResultImpl(result); } } if (topLevel) { @@ -665,8 +667,12 @@ final class REngine implements Engine, Engine.Timings { } @Override - @TruffleBoundary public void printResult(Object originalResult) { + printResultImpl(originalResult); + } + + @TruffleBoundary + static void printResultImpl(Object originalResult) { Object result = evaluatePromise(originalResult); result = RRuntime.asAbstractVector(result); if (result instanceof RTypedValue || result instanceof TruffleObject) { diff --git a/mx.fastr/suite.py b/mx.fastr/suite.py index 2027fdf996..edde805aec 100644 --- a/mx.fastr/suite.py +++ b/mx.fastr/suite.py @@ -29,7 +29,7 @@ suite = { { "name" : "truffle", "subdir" : True, - "version" : "05b61f9fa9dceebec447f3ec3656c8cc5be215dd", + "version" : "b29a94a6738f96c33be981681b69216a1664eb8a", "urls" : [ {"url" : "https://github.com/graalvm/graal", "kind" : "git"}, {"url" : "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind" : "binary"}, -- GitLab