From 6a0c47a6c96b68457fc5c7e028c42b5730c0ba9f Mon Sep 17 00:00:00 2001
From: stepan <stepan.sindelar@oracle.com>
Date: Fri, 16 Mar 2018 11:41:47 +0100
Subject: [PATCH] Do not use deprecated KeyInfo.newBuilder()

---
 .../truffle/r/engine/TruffleRLanguageImpl.java   |  6 ------
 .../oracle/truffle/r/engine/interop/ListMR.java  |  9 +++++----
 .../interop/RAbstractVectorAccessFactory.java    |  4 +---
 .../r/engine/interop/RArgsValuesAndNamesMR.java  |  5 ++---
 .../truffle/r/engine/interop/REnvironmentMR.java | 12 ++++++------
 .../truffle/r/engine/interop/RLanguageMR.java    |  5 +----
 .../truffle/r/engine/interop/RPromiseMR.java     |  4 ++--
 .../truffle/r/engine/interop/RS4ObjectMR.java    |  8 +++-----
 .../com/oracle/truffle/r/runtime/env/RScope.java | 16 ++++++----------
 9 files changed, 26 insertions(+), 43 deletions(-)

diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguageImpl.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguageImpl.java
index e47345b704..e84096fba5 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguageImpl.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguageImpl.java
@@ -217,12 +217,6 @@ public final class TruffleRLanguageImpl extends TruffleRLanguage {
         }
     }
 
-    @Override
-    protected Object getLanguageGlobal(RContext context) {
-        // TODO: what's the meaning of "language global" for R?
-        return null;
-    }
-
     public static RContext getCurrentContext() {
         return TruffleLanguage.getCurrentContext(TruffleRLanguage.class);
     }
diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ListMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ListMR.java
index 8110560bfa..17611a0c03 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ListMR.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ListMR.java
@@ -29,7 +29,6 @@ import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.frame.VirtualFrame;
 import com.oracle.truffle.api.interop.CanResolve;
 import com.oracle.truffle.api.interop.KeyInfo;
-import com.oracle.truffle.api.interop.KeyInfo.Builder;
 import com.oracle.truffle.api.interop.MessageResolution;
 import com.oracle.truffle.api.interop.Resolve;
 import com.oracle.truffle.api.interop.TruffleObject;
@@ -476,9 +475,11 @@ public class ListMR {
         }
 
         private static int buildKeys(Object value) {
-            Builder builder = KeyInfo.newBuilder();
-            builder.setReadable(true).setWritable(true).setInvocable(value instanceof RFunction);
-            return builder.build();
+            int result = KeyInfo.READABLE | KeyInfo.MODIFIABLE;
+            if (value instanceof RFunction) {
+                result |= KeyInfo.INVOCABLE;
+            }
+            return result;
         }
 
         private void initExtractNode() {
diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java
index 71f967bff0..fec7058df2 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java
@@ -280,9 +280,7 @@ public final class RAbstractVectorAccessFactory implements StandardFactory {
             if (unknownIdentifier.profile(idx < 0 || idx >= lengthNode.executeInteger(receiver))) {
                 return 0;
             }
-            KeyInfo.Builder builder = KeyInfo.newBuilder();
-            builder.setReadable(true).setWritable(true);
-            return builder.build();
+            return KeyInfo.READABLE | KeyInfo.MODIFIABLE;
         }
 
         @Fallback
diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RArgsValuesAndNamesMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RArgsValuesAndNamesMR.java
index 41d74de381..70ef6ffa40 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RArgsValuesAndNamesMR.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RArgsValuesAndNamesMR.java
@@ -193,9 +193,8 @@ public class RArgsValuesAndNamesMR {
         }
 
         private static Object createKeyInfo(RArgsValuesAndNames receiver, int idx) {
-            KeyInfo.Builder builder = KeyInfo.newBuilder();
-            builder.setReadable(true).setInvocable(receiver.getArgument(idx) instanceof RFunction);
-            return builder.build();
+            int invocable = receiver.getArgument(idx) instanceof RFunction ? KeyInfo.INVOCABLE : 0;
+            return KeyInfo.READABLE | invocable;
         }
 
         @Fallback
diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/REnvironmentMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/REnvironmentMR.java
index 31246b547d..f53da4a554 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/REnvironmentMR.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/REnvironmentMR.java
@@ -29,7 +29,6 @@ import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.frame.VirtualFrame;
 import com.oracle.truffle.api.interop.CanResolve;
 import com.oracle.truffle.api.interop.KeyInfo;
-import com.oracle.truffle.api.interop.KeyInfo.Builder;
 import com.oracle.truffle.api.interop.Message;
 import com.oracle.truffle.api.interop.MessageResolution;
 import com.oracle.truffle.api.interop.Resolve;
@@ -212,13 +211,14 @@ public class REnvironmentMR {
             if (val == null) {
                 return 0;
             }
-            Builder builder = KeyInfo.newBuilder();
-            builder.setReadable(true);
+            int result = KeyInfo.READABLE;
             if (!receiver.isLocked() && !receiver.bindingIsLocked(identifier)) {
-                builder.setWritable(true);
+                result |= KeyInfo.MODIFIABLE;
             }
-            builder.setInvocable(val instanceof RFunction);
-            return builder.build();
+            if (val instanceof RFunction) {
+                result |= KeyInfo.INVOCABLE;
+            }
+            return result;
         }
 
         @Fallback
diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RLanguageMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RLanguageMR.java
index 5861a235f3..d6f5b6b3f8 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RLanguageMR.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RLanguageMR.java
@@ -155,11 +155,8 @@ public class RLanguageMR {
             if (unknownIdentifier.profile(idx < 0 || idx >= receiver.getLength())) {
                 return 0;
             }
-
-            KeyInfo.Builder builder = KeyInfo.newBuilder();
-            builder.setReadable(true);
             // TODO what about writeble/invocable/...
-            return builder.build();
+            return KeyInfo.READABLE;
         }
 
         @Fallback
diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RPromiseMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RPromiseMR.java
index 07fa19481e..9d5d457829 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RPromiseMR.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RPromiseMR.java
@@ -172,9 +172,9 @@ public class RPromiseMR {
         @Specialization
         protected Object access(@SuppressWarnings("unused") RPromise receiver, String identifier) {
             if (PROP_EXPR.equals(identifier) || PROP_VALUE.equals(identifier)) {
-                return KeyInfo.newBuilder().setReadable(true).build();
+                return KeyInfo.READABLE;
             } else if (PROP_IS_EVALUATED.equals(identifier)) {
-                return KeyInfo.newBuilder().setReadable(true).setWritable(true).build();
+                return KeyInfo.READABLE | KeyInfo.MODIFIABLE;
             } else {
                 return 0;
             }
diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RS4ObjectMR.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RS4ObjectMR.java
index ff7122e0fa..db48f8916a 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RS4ObjectMR.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RS4ObjectMR.java
@@ -28,7 +28,6 @@ import com.oracle.truffle.api.dsl.Fallback;
 import com.oracle.truffle.api.dsl.Specialization;
 import com.oracle.truffle.api.interop.CanResolve;
 import com.oracle.truffle.api.interop.KeyInfo;
-import com.oracle.truffle.api.interop.KeyInfo.Builder;
 import com.oracle.truffle.api.interop.Message;
 import com.oracle.truffle.api.interop.MessageResolution;
 import com.oracle.truffle.api.interop.Resolve;
@@ -233,10 +232,9 @@ public class RS4ObjectMR {
                 CompilerDirectives.transferToInterpreterAndInvalidate();
                 getAttributeNode = insert(GetAttributeNode.create());
             }
-            Builder builder = KeyInfo.newBuilder();
-            builder.setReadable(true).setWritable(!identifier.equals("class"));
-            builder.setInvocable(getAttributeNode.execute(receiver, identifier) instanceof RFunction);
-            return builder.build();
+            int writeable = !identifier.equals("class") ? KeyInfo.MODIFIABLE : 0;
+            int executable = getAttributeNode.execute(receiver, identifier) instanceof RFunction ? KeyInfo.INVOCABLE : 0;
+            return KeyInfo.READABLE | writeable | executable;
         }
 
         protected static ArrayAttributeNode createArrayAttributeNode() {
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/RScope.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/RScope.java
index cb2d3141e1..6f7f5c8e22 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/RScope.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/RScope.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2018, 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
@@ -32,7 +32,6 @@ import com.oracle.truffle.api.frame.Frame;
 import com.oracle.truffle.api.frame.MaterializedFrame;
 import com.oracle.truffle.api.interop.ForeignAccess;
 import com.oracle.truffle.api.interop.KeyInfo;
-import com.oracle.truffle.api.interop.KeyInfo.Builder;
 import com.oracle.truffle.api.interop.Message;
 import com.oracle.truffle.api.interop.MessageResolution;
 import com.oracle.truffle.api.interop.Resolve;
@@ -236,16 +235,14 @@ public final class RScope {
             public abstract static class VarMapsKeyInfoNode extends Node {
 
                 protected Object access(VariablesObject receiver, String identifier) {
-                    Builder builder = KeyInfo.newBuilder();
-                    builder.setReadable(true);
-
+                    int result = KeyInfo.READABLE;
                     if (!receiver.frameAccess.bindingIsLocked(identifier)) {
-                        builder.setWritable(true);
+                        result |= KeyInfo.MODIFIABLE;
                     }
                     if (receiver.frameAccess.get(identifier) instanceof RFunction) {
-                        builder.setInvocable(true);
+                        result |= KeyInfo.INVOCABLE;
                     }
-                    return builder.build();
+                    return result;
                 }
             }
 
@@ -356,8 +353,7 @@ public final class RScope {
             @Resolve(message = "HAS_SIZE")
             abstract static class ArgNamesHasSizeNode extends Node {
 
-                @SuppressWarnings("unused")
-                public Object access(ArgumentNamesObject varNames) {
+                public Object access(@SuppressWarnings("unused") ArgumentNamesObject varNames) {
                     return true;
                 }
             }
-- 
GitLab