From ff9e56b4b276f73ed3eca2c72c5559e9feb0826e Mon Sep 17 00:00:00 2001
From: Michael Haupt <michael.haupt@oracle.com>
Date: Thu, 3 Apr 2014 15:22:20 +0200
Subject: [PATCH] insert common superclass for all invisible builtins

---
 .../nodes/builtin/RInvisibleBuiltinNode.java  | 32 +++++++++++++++++++
 .../truffle/r/nodes/builtin/base/Assign.java  |  7 +---
 .../truffle/r/nodes/builtin/base/Cat.java     |  7 +---
 .../builtin/base/ConnectionFunctions.java     | 14 ++------
 .../r/nodes/builtin/base/Contributors.java    |  7 +---
 .../r/nodes/builtin/base/Invisible.java       |  7 +---
 .../truffle/r/nodes/builtin/base/License.java |  7 +---
 .../truffle/r/nodes/builtin/base/OnExit.java  |  7 +---
 .../truffle/r/nodes/builtin/base/Print.java   |  7 +---
 .../truffle/r/nodes/builtin/base/Quit.java    |  7 +---
 .../r/nodes/builtin/base/ReadREnviron.java    |  7 +---
 .../truffle/r/nodes/builtin/base/Rm.java      |  7 +---
 .../truffle/r/nodes/builtin/base/SetSeed.java |  7 +---
 .../truffle/r/nodes/builtin/base/Setwd.java   |  7 +---
 .../r/nodes/builtin/base/SysSleep.java        |  7 +---
 .../r/nodes/builtin/base/UpdateAttr.java      |  7 +---
 .../nodes/builtin/base/UpdateAttributes.java  |  7 +---
 .../r/nodes/builtin/base/UpdateClass.java     |  7 +---
 .../r/nodes/builtin/base/UpdateDiag.java      |  7 +---
 .../r/nodes/builtin/base/UpdateDim.java       |  7 +---
 .../r/nodes/builtin/base/UpdateDimNames.java  |  7 +---
 .../r/nodes/builtin/base/UpdateLength.java    |  7 +---
 .../r/nodes/builtin/base/UpdateNames.java     |  7 +---
 23 files changed, 55 insertions(+), 138 deletions(-)
 create mode 100644 com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/RInvisibleBuiltinNode.java

diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/RInvisibleBuiltinNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/RInvisibleBuiltinNode.java
new file mode 100644
index 0000000000..2242f0782b
--- /dev/null
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/RInvisibleBuiltinNode.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2014, 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
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package com.oracle.truffle.r.nodes.builtin;
+
+public abstract class RInvisibleBuiltinNode extends RBuiltinNode {
+
+    @Override
+    public final boolean getVisibility() {
+        return false;
+    }
+
+}
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Assign.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Assign.java
index 98fc9df03b..890113247b 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Assign.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Assign.java
@@ -33,7 +33,7 @@ import com.oracle.truffle.r.runtime.*;
 import com.oracle.truffle.r.runtime.data.*;
 
 @RBuiltin("assign")
-public abstract class Assign extends RBuiltinNode {
+public abstract class Assign extends RInvisibleBuiltinNode {
 
     @Child private WriteVariableNode writeVariableNode;
 
@@ -55,11 +55,6 @@ public abstract class Assign extends RBuiltinNode {
                         ConstantNode.create(RRuntime.LOGICAL_FALSE), ConstantNode.create(RRuntime.LOGICAL_TRUE)};
     }
 
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
-
     @Specialization(order = 1, guards = "noEnv")
     @SuppressWarnings("unused")
     public Object assign(VirtualFrame frame, String x, Object value, Object pos, RMissing envir, byte inherits, byte immediate) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Cat.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Cat.java
index dba1d8385e..5c2b8ecdec 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Cat.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Cat.java
@@ -36,7 +36,7 @@ import com.oracle.truffle.r.runtime.data.model.*;
 
 @RBuiltin(value = "cat", lastParameterKind = LastParameterKind.VAR_ARGS_SPECIALIZE)
 @SuppressWarnings("unused")
-public abstract class Cat extends RBuiltinNode {
+public abstract class Cat extends RInvisibleBuiltinNode {
     private static final Object[] PARAMETER_NAMES = new Object[]{"...", "file", "sep", "fill", "labels", "append"};
 
     @Override
@@ -50,11 +50,6 @@ public abstract class Cat extends RBuiltinNode {
                         ConstantNode.create(RRuntime.LOGICAL_FALSE)};
     }
 
-    @Override
-    public boolean getVisibility() {
-        return false;
-    }
-
     @Child private ToString toString;
 
     @CompilationFinal private String currentSep;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/ConnectionFunctions.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/ConnectionFunctions.java
index 36052a9569..4c7f655eb2 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/ConnectionFunctions.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/ConnectionFunctions.java
@@ -59,12 +59,7 @@ public abstract class ConnectionFunctions {
     }
 
     @RBuiltin(".Internal.file")
-    public abstract static class File extends RBuiltinNode {
-        @Override
-        public final boolean getVisibility() {
-            return false;
-        }
-
+    public abstract static class File extends RInvisibleBuiltinNode {
         @Specialization
         @SuppressWarnings("unused")
         public Object file(String description, String open, byte blocking, RAbstractStringVector encoding, byte raw) {
@@ -91,12 +86,7 @@ public abstract class ConnectionFunctions {
     }
 
     @RBuiltin("close")
-    public abstract static class Close extends RBuiltinNode {
-        @Override
-        public final boolean getVisibility() {
-            return false;
-        }
-
+    public abstract static class Close extends RInvisibleBuiltinNode {
         @Specialization
         public Object close(@SuppressWarnings("unused") Object con) {
             controlVisibility();
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Contributors.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Contributors.java
index 4340388876..a34882b2cc 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Contributors.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Contributors.java
@@ -28,15 +28,10 @@ import com.oracle.truffle.r.runtime.*;
 import com.oracle.truffle.r.runtime.data.*;
 
 @RBuiltin("contributors")
-public abstract class Contributors extends RBuiltinNode {
+public abstract class Contributors extends RInvisibleBuiltinNode {
 
     private static final String CONTRIBUTORS = Utils.getResourceAsString(Contributors.class, "CONTRIBUTORS", true);
 
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
-
     @Specialization
     public Object contributors() {
         controlVisibility();
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Invisible.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Invisible.java
index 0bf8d9a19e..be5ac98f8f 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Invisible.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Invisible.java
@@ -29,7 +29,7 @@ import com.oracle.truffle.r.nodes.builtin.*;
 import com.oracle.truffle.r.runtime.data.*;
 
 @RBuiltin("invisible")
-public abstract class Invisible extends RBuiltinNode {
+public abstract class Invisible extends RInvisibleBuiltinNode {
 
     private static final Object[] PARAMETER_NAMES = new Object[]{"x"};
 
@@ -47,11 +47,6 @@ public abstract class Invisible extends RBuiltinNode {
         return new RNode[]{ConstantNode.create(RNull.instance)};
     }
 
-    @Override
-    public boolean getVisibility() {
-        return false;
-    }
-
     @Specialization
     public Object doInvisible(Object o) {
         controlVisibility();
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/License.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/License.java
index 34f607968d..948fe1a091 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/License.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/License.java
@@ -28,12 +28,7 @@ import com.oracle.truffle.r.runtime.*;
 import com.oracle.truffle.r.runtime.data.*;
 
 @RBuiltin({"license", "licence"})
-public abstract class License extends RBuiltinNode {
-
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
+public abstract class License extends RInvisibleBuiltinNode {
 
     @Specialization
     public Object license() {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/OnExit.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/OnExit.java
index d568380ab4..8eeb2bdb34 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/OnExit.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/OnExit.java
@@ -32,12 +32,7 @@ import com.oracle.truffle.r.runtime.data.*;
  * evaluated, but {@code add} is.
  */
 @RBuiltin("on.exit")
-public abstract class OnExit extends RBuiltinNode {
-
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
+public abstract class OnExit extends RInvisibleBuiltinNode {
 
     @Specialization
     public Object onExit(@SuppressWarnings("unused") Object expr, @SuppressWarnings("unused") Object add) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Print.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Print.java
index 888927da26..3e54f03810 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Print.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Print.java
@@ -39,15 +39,10 @@ import com.oracle.truffle.r.runtime.data.model.*;
 
 @RBuiltin("print")
 @SuppressWarnings("unused")
-public abstract class Print extends RBuiltinNode {
+public abstract class Print extends RInvisibleBuiltinNode {
 
     @Child protected PrettyPrinterNode prettyPrinter = PrettyPrinterNodeFactory.create(null, null, false);
 
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
-
     private static void printHelper(String string) {
         RContext.getInstance().getConsoleHandler().println(string);
     }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Quit.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Quit.java
index 7358ce44bd..67aa77576b 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Quit.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Quit.java
@@ -31,7 +31,7 @@ import com.oracle.truffle.r.runtime.*;
 import com.oracle.truffle.r.runtime.data.*;
 
 @RBuiltin({"quit", "q"})
-public abstract class Quit extends RBuiltinNode {
+public abstract class Quit extends RInvisibleBuiltinNode {
 
     private static final Object[] PARAMETER_NAMES = new Object[]{"save", "status", "runLast"};
 
@@ -52,11 +52,6 @@ public abstract class Quit extends RBuiltinNode {
         return arguments;
     }
 
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
-
     @Specialization
     public Object doQuit(final String saveArg, int status, byte runLast) {
         controlVisibility();
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/ReadREnviron.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/ReadREnviron.java
index 115ac64f5a..65cc1477cd 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/ReadREnviron.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/ReadREnviron.java
@@ -30,12 +30,7 @@ import com.oracle.truffle.r.runtime.*;
 import com.oracle.truffle.r.runtime.data.model.*;
 
 @RBuiltin("readRenviron")
-public abstract class ReadREnviron extends RBuiltinNode {
-
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
+public abstract class ReadREnviron extends RInvisibleBuiltinNode {
 
     @Specialization(guards = "lengthOneCVector")
     public Object doReadEnviron(RAbstractStringVector vec) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Rm.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Rm.java
index af2d70b596..0974d0fbb5 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Rm.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Rm.java
@@ -32,7 +32,7 @@ import com.oracle.truffle.r.runtime.*;
 import com.oracle.truffle.r.runtime.data.*;
 
 @RBuiltin(value = {"rm", "remove"}, lastParameterKind = LastParameterKind.VAR_ARGS_SPECIALIZE)
-public abstract class Rm extends RBuiltinNode {
+public abstract class Rm extends RInvisibleBuiltinNode {
 
     public static Rm create(String name) {
         RNode[] args = getParameterValues0();
@@ -57,11 +57,6 @@ public abstract class Rm extends RBuiltinNode {
         return getParameterValues0();
     }
 
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
-
     @Specialization
     @SuppressWarnings("unused")
     public Object rm(VirtualFrame frame, String name, RStringVector list, Object pos, RMissing envir, byte inherits) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/SetSeed.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/SetSeed.java
index 1bd9709163..1d7514cb65 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/SetSeed.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/SetSeed.java
@@ -28,12 +28,7 @@ import com.oracle.truffle.r.runtime.*;
 import com.oracle.truffle.r.runtime.data.*;
 
 @RBuiltin("set.seed")
-public abstract class SetSeed extends RBuiltinNode {
-
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
+public abstract class SetSeed extends RInvisibleBuiltinNode {
 
     @Specialization
     public RNull setseed(int n) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Setwd.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Setwd.java
index 6fd1100323..9a13f24ad2 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Setwd.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/Setwd.java
@@ -28,12 +28,7 @@ import com.oracle.truffle.r.runtime.*;
 import com.oracle.truffle.r.runtime.ffi.*;
 
 @RBuiltin({".Internal.setwd"})
-public abstract class Setwd extends RBuiltinNode {
-
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
+public abstract class Setwd extends RInvisibleBuiltinNode {
 
     @Specialization
     public Object setwd(String dir) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/SysSleep.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/SysSleep.java
index 91c3af6fb9..8d50998484 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/SysSleep.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/SysSleep.java
@@ -28,12 +28,7 @@ import com.oracle.truffle.r.runtime.*;
 import com.oracle.truffle.r.runtime.data.*;
 
 @RBuiltin(".Internal.Sys.sleep")
-public abstract class SysSleep extends RBuiltinNode {
-
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
+public abstract class SysSleep extends RInvisibleBuiltinNode {
 
     @Specialization(order = 0)
     public Object sysSleep(double seconds) {
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttr.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttr.java
index 053eed09a6..a18197a341 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttr.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttr.java
@@ -37,7 +37,7 @@ import com.oracle.truffle.r.runtime.data.model.*;
 
 @RBuiltin("attr<-")
 @SuppressWarnings("unused")
-public abstract class UpdateAttr extends RBuiltinNode {
+public abstract class UpdateAttr extends RInvisibleBuiltinNode {
 
     @Child UpdateNames updateNames;
     @Child UpdateDimNames updateDimNames;
@@ -45,11 +45,6 @@ public abstract class UpdateAttr extends RBuiltinNode {
     @Child private CastToVectorNode castVector;
     @Child private CastListNode castList;
 
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
-
     private RAbstractVector updateNames(VirtualFrame frame, RAbstractVector vector, Object o) {
         if (updateNames == null) {
             CompilerDirectives.transferToInterpreterAndInvalidate();
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttributes.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttributes.java
index c5a160bd76..9228d0f45d 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttributes.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateAttributes.java
@@ -38,18 +38,13 @@ import com.oracle.truffle.r.runtime.data.model.*;
 
 @RBuiltin("attributes<-")
 @SuppressWarnings("unused")
-public abstract class UpdateAttributes extends RBuiltinNode {
+public abstract class UpdateAttributes extends RInvisibleBuiltinNode {
 
     @Child UpdateNames updateNames;
     @Child private CastIntegerNode castInteger;
     @Child private CastToVectorNode castVector;
     @Child private CastListNode castList;
 
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
-
     private void updateNamesStringVector(VirtualFrame frame, RAbstractVector vector, Object o) {
         if (updateNames == null) {
             CompilerDirectives.transferToInterpreterAndInvalidate();
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateClass.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateClass.java
index 60ba7e21c7..e73305a822 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateClass.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateClass.java
@@ -22,7 +22,7 @@ import com.oracle.truffle.r.runtime.data.*;
 import com.oracle.truffle.r.runtime.data.model.*;
 
 @RBuiltin(value = "class<-")
-public abstract class UpdateClass extends RBuiltinNode {
+public abstract class UpdateClass extends RInvisibleBuiltinNode {
 
     private RVector resultVector;
     @Child private CastStringNode castStringNode;
@@ -35,11 +35,6 @@ public abstract class UpdateClass extends RBuiltinNode {
 
     public abstract Object execute(VirtualFrame frame, RAbstractVector vector, Object o);
 
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
-
     @Specialization
     public Object setClass(VirtualFrame frame, RAbstractVector arg, RAbstractVector className) {
         controlVisibility();
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDiag.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDiag.java
index ce21a0d60b..221532caac 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDiag.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDiag.java
@@ -33,17 +33,12 @@ import com.oracle.truffle.r.runtime.data.model.*;
 import com.oracle.truffle.r.runtime.ops.na.*;
 
 @RBuiltin("diag<-")
-public abstract class UpdateDiag extends RBuiltinNode {
+public abstract class UpdateDiag extends RInvisibleBuiltinNode {
 
     private final NACheck naCheck = NACheck.create();
 
     @Child protected CastDoubleNode castDouble;
 
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
-
     public static boolean isMatrix(RAbstractVector vector) {
         return vector.hasDimensions() && vector.getDimensions().length == 2;
     }
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDim.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDim.java
index 34bce85904..f2d0069c66 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDim.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDim.java
@@ -35,15 +35,10 @@ import com.oracle.truffle.r.runtime.data.model.*;
 
 @RBuiltin("dim<-")
 @SuppressWarnings("unused")
-public abstract class UpdateDim extends RBuiltinNode {
+public abstract class UpdateDim extends RInvisibleBuiltinNode {
 
     @Child private CastIntegerNode castInteger;
 
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
-
     private RAbstractIntVector castInteger(VirtualFrame frame, RAbstractVector vector) {
         if (castInteger == null) {
             CompilerDirectives.transferToInterpreterAndInvalidate();
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDimNames.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDimNames.java
index 7ce2f79585..62b336ea56 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDimNames.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateDimNames.java
@@ -35,16 +35,11 @@ import com.oracle.truffle.r.runtime.data.model.*;
 
 @RBuiltin("dimnames<-")
 @SuppressWarnings("unused")
-public abstract class UpdateDimNames extends RBuiltinNode {
+public abstract class UpdateDimNames extends RInvisibleBuiltinNode {
 
     @Child CastStringNode castStringNode;
     @Child CastToVectorNode castVectorNode;
 
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
-
     private Object castString(VirtualFrame frame, Object o) {
         if (castStringNode == null) {
             CompilerDirectives.transferToInterpreterAndInvalidate();
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateLength.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateLength.java
index ef1ddebb47..90c1c60e6c 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateLength.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateLength.java
@@ -31,7 +31,7 @@ import com.oracle.truffle.r.runtime.data.*;
 import com.oracle.truffle.r.runtime.data.model.*;
 
 @RBuiltin("length<-")
-public abstract class UpdateLength extends RBuiltinNode {
+public abstract class UpdateLength extends RInvisibleBuiltinNode {
 
     @CreateCast("arguments")
     protected RNode[] castStatusArgument(RNode[] arguments) {
@@ -40,11 +40,6 @@ public abstract class UpdateLength extends RBuiltinNode {
         return arguments;
     }
 
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
-
     @Specialization(order = 1, guards = "isLengthOne")
     public RAbstractVector updateLength(RAbstractVector vector, RAbstractIntVector lengthVector) {
         controlVisibility();
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateNames.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateNames.java
index 0245b04d34..7e69930467 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateNames.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/builtin/base/UpdateNames.java
@@ -34,15 +34,10 @@ import com.oracle.truffle.r.runtime.data.*;
 import com.oracle.truffle.r.runtime.data.model.*;
 
 @RBuiltin("names<-")
-public abstract class UpdateNames extends RBuiltinNode {
+public abstract class UpdateNames extends RInvisibleBuiltinNode {
 
     @Child CastStringNode castStringNode;
 
-    @Override
-    public final boolean getVisibility() {
-        return false;
-    }
-
     private Object castString(VirtualFrame frame, Object o) {
         if (castStringNode == null) {
             CompilerDirectives.transferToInterpreterAndInvalidate();
-- 
GitLab