From 806c6a62dace9565409bad1b2dbc2e5a7718adee Mon Sep 17 00:00:00 2001
From: Lukas Stadler <lukas.stadler@oracle.com>
Date: Mon, 12 Dec 2016 11:46:33 +0100
Subject: [PATCH] new FastROptions.ForceSources to generate source sections for
 all nodes

---
 .../src/com/oracle/truffle/r/nodes/RASTBuilder.java          | 5 +++++
 .../src/com/oracle/truffle/r/runtime/FastROptions.java       | 1 +
 2 files changed, 6 insertions(+)

diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTBuilder.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTBuilder.java
index 4b35745a57..12146234e4 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTBuilder.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RASTBuilder.java
@@ -234,6 +234,11 @@ public final class RASTBuilder implements RCodeBuilder<RSyntaxNode> {
         FrameDescriptor descriptor = new FrameDescriptor();
         FrameSlotChangeMonitor.initializeFunctionFrameDescriptor(name != null && !name.isEmpty() ? name : "<function>", descriptor);
         FunctionDefinitionNode rootNode = FunctionDefinitionNode.create(source, descriptor, argSourceSections, saveArguments, body, formals, name, argPostProcess);
+
+        if (FastROptions.ForceSources.getBooleanValue()) {
+            // forces source sections to be generated
+            rootNode.getSourceSection();
+        }
         return Truffle.getRuntime().createCallTarget(rootNode);
     }
 
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/FastROptions.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/FastROptions.java
index f0005b639a..767d9529d1 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/FastROptions.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/FastROptions.java
@@ -53,6 +53,7 @@ public enum FastROptions {
     RefCountIncrementOnly("Disable reference count decrements for experimental state transition implementation", false),
     UseInternalGraphics("Whether the internal (Java) graphics subsystem should be used", false),
     UseSpecials("Whether the fast-path special call nodes should be created for simple enough arguments.", true),
+    ForceSources("Generate source sections for unserialized code", false),
 
     // Promises optimizations
     EagerEval("If enabled, overrides all other EagerEval switches (see EagerEvalHelper)", false),
-- 
GitLab