From 20aef3b295508db76cc74733121b1eaccf22ac2c Mon Sep 17 00:00:00 2001
From: Mick Jordan <mick.jordan@oracle.com>
Date: Thu, 1 Jun 2017 13:28:38 -0700
Subject: [PATCH] Add dimensions on CompilationFinal arrays; update Truffle
 version

---
 .../truffle/r/engine/interop/NativeLogicalArray.java      | 2 +-
 .../truffle/r/nodes/builtin/base/BaseGammaFunctions.java  | 2 +-
 .../truffle/r/nodes/builtin/base/BaseVariables.java       | 6 +++---
 .../r/nodes/access/variables/LocalReadVariableNode.java   | 2 +-
 .../r/nodes/access/variables/ReadVariableNode.java        | 4 ++--
 .../r/nodes/access/vector/SearchFirstStringNode.java      | 2 +-
 .../oracle/truffle/r/nodes/function/ArgumentMatcher.java  | 4 ++--
 .../truffle/r/nodes/function/CallArgumentsNode.java       | 2 +-
 .../oracle/truffle/r/nodes/function/CallMatcherNode.java  | 2 +-
 .../oracle/truffle/r/nodes/function/FormalArguments.java  | 4 ++--
 .../com/oracle/truffle/r/nodes/function/RCallNode.java    | 8 ++++----
 .../truffle/r/nodes/function/S3FunctionLookupNode.java    | 2 +-
 .../truffle/r/nodes/instrumentation/RInstrumentation.java | 2 +-
 .../src/com/oracle/truffle/r/runtime/RVersionInfo.java    | 6 +++---
 .../com/oracle/truffle/r/runtime/VirtualEvalFrame.java    | 4 ++--
 .../r/runtime/env/frame/NSBaseMaterializedFrame.java      | 2 +-
 mx.fastr/suite.py                                         | 2 +-
 17 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/NativeLogicalArray.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/NativeLogicalArray.java
index 01f3f46c1b..d8229921a1 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/NativeLogicalArray.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/NativeLogicalArray.java
@@ -31,7 +31,7 @@ import com.oracle.truffle.r.runtime.data.RTruffleObject;
  * array in FastR is represented as {@code byte[]}.
  */
 public class NativeLogicalArray extends NativeNACheck implements RTruffleObject {
-    @CompilationFinal public final byte[] data;
+    @CompilationFinal(dimensions = 1) public final byte[] data;
 
     public NativeLogicalArray(Object obj, byte[] value) {
         super(obj);
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BaseGammaFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BaseGammaFunctions.java
index 4ee6d5194c..7befd61a6d 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BaseGammaFunctions.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BaseGammaFunctions.java
@@ -142,7 +142,7 @@ public class BaseGammaFunctions {
 
         @Child private DpsiFnCalc dpsiFnCalc;
 
-        @CompilationFinal private static final double[] bvalues = new double[]{1.00000000000000000e+00, -5.00000000000000000e-01, 1.66666666666666667e-01, -3.33333333333333333e-02,
+        @CompilationFinal(dimensions = 1) private static final double[] bvalues = new double[]{1.00000000000000000e+00, -5.00000000000000000e-01, 1.66666666666666667e-01, -3.33333333333333333e-02,
                         2.38095238095238095e-02, -3.33333333333333333e-02, 7.57575757575757576e-02, -2.53113553113553114e-01, 1.16666666666666667e+00, -7.09215686274509804e+00,
                         5.49711779448621554e+01, -5.29124242424242424e+02, 6.19212318840579710e+03, -8.65802531135531136e+04, 1.42551716666666667e+06, -2.72982310678160920e+07,
                         6.01580873900642368e+08, -1.51163157670921569e+10, 4.29614643061166667e+11, -1.37116552050883328e+13, 4.88332318973593167e+14, -1.92965793419400681e+16};
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BaseVariables.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BaseVariables.java
index eed42c1ccb..be994a54dd 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BaseVariables.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/BaseVariables.java
@@ -5,7 +5,7 @@
  *
  * Copyright (c) 1995-2012, The R Core Team
  * Copyright (c) 2003, The R Foundation
- * Copyright (c) 2015, 2016, Oracle and/or its affiliates
+ * Copyright (c) 2015, 2017, Oracle and/or its affiliates
  *
  * All rights reserved.
  */
@@ -26,7 +26,7 @@ import com.oracle.truffle.r.runtime.env.REnvironment;
  */
 public class BaseVariables {
     // @formatter:off
-    @CompilationFinal private static final String[] PLATFORM_NAMES = new String[] {
+    @CompilationFinal(dimensions = 1) private static final String[] PLATFORM_NAMES = new String[] {
         "OS.type", "file.sep", "dynlib.ext", "GUI", "endian", "pkgType", "path.sep", "r_arch"
     };
     // @formatter:on
@@ -42,7 +42,7 @@ public class BaseVariables {
     }
 
     // @formatter:off
-    @CompilationFinal private static final String[] MACHINE_NAMES = new String[] {
+    @CompilationFinal(dimensions = 1) private static final String[] MACHINE_NAMES = new String[] {
         "double.eps",            "double.neg.eps",        "double.xmin",
         "double.xmax",           "double.base",           "double.digits",
         "double.rounding",       "double.guard",          "double.ulp.digits",
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/LocalReadVariableNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/LocalReadVariableNode.java
index 4ce17a2cce..19334b09e2 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/LocalReadVariableNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/LocalReadVariableNode.java
@@ -47,7 +47,7 @@ public final class LocalReadVariableNode extends Node {
     private final Object identifier;
     private final boolean forceResult;
 
-    @CompilationFinal private boolean[] seenValueKinds;
+    @CompilationFinal(dimensions = 1) private boolean[] seenValueKinds;
     @CompilationFinal private ValueProfile valueProfile;
     @CompilationFinal private ConditionProfile isNullProfile;
     @CompilationFinal private ConditionProfile isMissingProfile;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java
index 5df1356f04..d784b3d0a1 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/variables/ReadVariableNode.java
@@ -144,7 +144,7 @@ public final class ReadVariableNode extends RSourceSectionNode implements RSynta
     private final ReadKind kind;
     private int invalidationCount;
 
-    @CompilationFinal private final boolean[] seenValueKinds = new boolean[FrameSlotKind.values().length];
+    @CompilationFinal(dimensions = 1) private final boolean[] seenValueKinds = new boolean[FrameSlotKind.values().length];
 
     private ReadVariableNode(SourceSection sourceSection, Object identifier, RType mode, ReadKind kind) {
         super(sourceSection);
@@ -422,7 +422,7 @@ public final class ReadVariableNode extends RSourceSectionNode implements RSynta
     private static final class MultiAssumptionLevel extends FrameLevel {
 
         private final FrameLevel next;
-        @CompilationFinal private final Assumption[] assumptions;
+        @CompilationFinal(dimensions = 1) private final Assumption[] assumptions;
 
         private MultiAssumptionLevel(FrameLevel next, Assumption... assumptions) {
             this.next = next;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/SearchFirstStringNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/SearchFirstStringNode.java
index 68f3ed0476..b1baf683b5 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/SearchFirstStringNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/SearchFirstStringNode.java
@@ -64,7 +64,7 @@ final class SearchFirstStringNode extends Node {
     private final boolean useNAForNotFound;
     private final boolean exactMatch;
 
-    @CompilationFinal private int[] cachedIndices;
+    @CompilationFinal(dimensions = 1) private int[] cachedIndices;
 
     private SearchFirstStringNode(boolean exactMatch, boolean useNAForNotFound) {
         this.exactMatch = exactMatch;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/ArgumentMatcher.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/ArgumentMatcher.java
index 7c2fefce91..1a6f910110 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/ArgumentMatcher.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/ArgumentMatcher.java
@@ -483,8 +483,8 @@ public class ArgumentMatcher {
         public static final int UNMATCHED = -1;
         public static final int VARARGS = -2;
 
-        @CompilationFinal private final int[] resultPermutation;
-        @CompilationFinal private final int[] varargsPermutation;
+        @CompilationFinal(dimensions = 1) private final int[] resultPermutation;
+        @CompilationFinal(dimensions = 1) private final int[] varargsPermutation;
         private final ArgumentsSignature varargsSignature;
 
         /**
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/CallArgumentsNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/CallArgumentsNode.java
index cc46a97dbc..5501e65549 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/CallArgumentsNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/CallArgumentsNode.java
@@ -73,7 +73,7 @@ public final class CallArgumentsNode extends RBaseNode implements UnmatchedArgum
      * If a supplied argument is a {@link ReadVariableNode} whose name is "...", this field contains
      * the index of the name. Otherwise it is an empty list.
      */
-    @CompilationFinal private final int[] varArgsSymbolIndices;
+    @CompilationFinal(dimensions = 1) private final int[] varArgsSymbolIndices;
 
     private final IdentityHashMap<RNode, Closure> closureCache = new IdentityHashMap<>();
 
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/CallMatcherNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/CallMatcherNode.java
index 0e77db678e..88f0ec8867 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/CallMatcherNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/CallMatcherNode.java
@@ -196,7 +196,7 @@ public abstract class CallMatcherNode extends RBaseNode {
          * {@link VarArgsHelper#flattenNames(ArgumentsSignature)} for the interpretation of the
          * values.
          */
-        @CompilationFinal private final long[] preparePermutation;
+        @CompilationFinal(dimensions = 1) private final long[] preparePermutation;
         private final MatchPermutation permutation;
         private final FormalArguments formals;
         @Child private RFastPathNode fastPath;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/FormalArguments.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/FormalArguments.java
index c5ad9ab6fc..4935f4c82e 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/FormalArguments.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/FormalArguments.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -61,7 +61,7 @@ public final class FormalArguments extends Arguments<RNode> implements ClosureCa
      * builtins), {@link RMissing#instance} and {@link RArgsValuesAndNames#EMPTY} will be replaced
      * with the actual default values on the callee side.
      */
-    @CompilationFinal private final Object[] internalDefaultArguments;
+    @CompilationFinal(dimensions = 1) private final Object[] internalDefaultArguments;
 
     private FormalArguments(RNode[] defaultArguments, Object[] internalDefaultArguments, ArgumentsSignature signature) {
         super(defaultArguments, signature);
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java
index 65788bca31..8233f4cc27 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/RCallNode.java
@@ -790,10 +790,10 @@ public abstract class RCallNode extends RCallBaseNode implements RSyntaxNode, RS
         @Child private SetVisibilityNode visibility = SetVisibilityNode.create();
 
         // not using profiles to save overhead
-        @CompilationFinal private final boolean[] argEmptySeen;
-        @CompilationFinal private final boolean[] varArgSeen;
-        @CompilationFinal private final boolean[] nonWrapSeen;
-        @CompilationFinal private final boolean[] wrapSeen;
+        @CompilationFinal(dimensions = 1) private final boolean[] argEmptySeen;
+        @CompilationFinal(dimensions = 1) private final boolean[] varArgSeen;
+        @CompilationFinal(dimensions = 1) private final boolean[] nonWrapSeen;
+        @CompilationFinal(dimensions = 1) private final boolean[] wrapSeen;
 
         private final FormalArguments formals;
         private final RBuiltinDescriptor builtinDescriptor;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/S3FunctionLookupNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/S3FunctionLookupNode.java
index e7921cf9d3..b520673ff9 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/S3FunctionLookupNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/function/S3FunctionLookupNode.java
@@ -280,7 +280,7 @@ public abstract class S3FunctionLookupNode extends RBaseNode {
 
         @Child private S3FunctionLookupNode next;
 
-        @CompilationFinal private final String[] cachedTypeContents;
+        @CompilationFinal(dimensions = 1) private final String[] cachedTypeContents;
         @Children private final ReadVariableNode[] unsuccessfulReadsCallerFrame;
         @Child private LocalReadVariableNode readS3MethodsTable;
         @Children private final LocalReadVariableNode[] unsuccessfulReadsTable;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/instrumentation/RInstrumentation.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/instrumentation/RInstrumentation.java
index 4f8856e8c6..9e2edd953c 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/instrumentation/RInstrumentation.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/instrumentation/RInstrumentation.java
@@ -43,7 +43,7 @@ public class RInstrumentation {
      * The function names that were requested to be used in implicit {@code debug(f)} calls, when
      * those functions are defined. Global to all contexts.
      */
-    @CompilationFinal private static String[] debugFunctionNames;
+    @CompilationFinal(dimensions = 1) private static String[] debugFunctionNames;
 
     public static FunctionDefinitionNode getFunctionDefinitionNode(RFunction func) {
         assert !func.isBuiltin();
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RVersionInfo.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RVersionInfo.java
index 6336fb8835..a75cadee75 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RVersionInfo.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RVersionInfo.java
@@ -45,9 +45,9 @@ public enum RVersionInfo {
 
     public static final int SERIALIZE_VERSION = (2 << 16) + (3 << 8) + 0;
 
-    @CompilationFinal private static final RVersionInfo[] VALUES = RVersionInfo.values();
-    @CompilationFinal private static String[] ListValues;
-    @CompilationFinal private static String[] ListNames;
+    @CompilationFinal(dimensions = 1) private static final RVersionInfo[] VALUES = RVersionInfo.values();
+    @CompilationFinal(dimensions = 1) private static String[] ListValues;
+    @CompilationFinal(dimensions = 1) private static String[] ListNames;
 
     private final String listName;
     private String value;
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/VirtualEvalFrame.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/VirtualEvalFrame.java
index 22a80d4b03..7eae87ef38 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/VirtualEvalFrame.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/VirtualEvalFrame.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -35,7 +35,7 @@ import com.oracle.truffle.r.runtime.data.RFunction;
  */
 public abstract class VirtualEvalFrame extends SubstituteVirtualFrame implements VirtualFrame, MaterializedFrame {
 
-    @CompilationFinal protected final Object[] arguments;
+    @CompilationFinal(dimensions = 1) protected final Object[] arguments;
 
     private VirtualEvalFrame(MaterializedFrame originalFrame, Object[] arguments) {
         super(originalFrame);
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/frame/NSBaseMaterializedFrame.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/frame/NSBaseMaterializedFrame.java
index e7006cbd06..94f26a4df6 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/frame/NSBaseMaterializedFrame.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/frame/NSBaseMaterializedFrame.java
@@ -42,7 +42,7 @@ public final class NSBaseMaterializedFrame implements MaterializedFrame {
     private static final ValueProfile frameProfile = ValueProfile.createClassProfile();
 
     private final MaterializedFrame packageBaseFrame;
-    @CompilationFinal private final Object[] arguments;
+    @CompilationFinal(dimensions = 1) private final Object[] arguments;
 
     // this frame descriptor is only used for lookups in FrameSlotChangeMonitor
     private final FrameDescriptor markerFrameDescriptor;
diff --git a/mx.fastr/suite.py b/mx.fastr/suite.py
index 62617e1a5f..c3353e7fab 100644
--- a/mx.fastr/suite.py
+++ b/mx.fastr/suite.py
@@ -29,7 +29,7 @@ suite = {
             {
                "name" : "truffle",
                "subdir" : True,
-               "version" : "538d97d5e696be8a0f882cf970e70689674651c2",
+               "version" : "49be77b996566438b7be1f2bf9717b9b9f1c90c1",
                "urls" : [
                     {"url" : "https://github.com/graalvm/graal", "kind" : "git"},
                     {"url" : "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind" : "binary"},
-- 
GitLab