From 903cf47249c7484e1cf9d47ecac85f52916ee235 Mon Sep 17 00:00:00 2001
From: Florian Angerer <florian.angerer@oracle.com>
Date: Wed, 28 Jun 2017 10:45:11 +0200
Subject: [PATCH] Indexed access to RArgsValuesAndNames via interop.

---
 .../r/engine/interop/RArgsValuesAndNamesMR.java  | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

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 82f194dcdc..dd8b1d3e8b 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
@@ -22,6 +22,7 @@
  */
 package com.oracle.truffle.r.engine.interop;
 
+import com.oracle.truffle.api.frame.VirtualFrame;
 import com.oracle.truffle.api.interop.CanResolve;
 import com.oracle.truffle.api.interop.MessageResolution;
 import com.oracle.truffle.api.interop.Resolve;
@@ -45,6 +46,14 @@ public class RArgsValuesAndNamesMR {
         }
     }
 
+    @Resolve(message = "GET_SIZE")
+    public abstract static class RArgsValuesAndNamesGetSizeNode extends Node {
+        protected Object access(RArgsValuesAndNames receiver) {
+            assert false : "GET_SIZE";
+            return receiver.getLength();
+        }
+    }
+
     @Resolve(message = "IS_NULL")
     public abstract static class RArgsValuesAndNamesIsNullNode extends Node {
         protected Object access(@SuppressWarnings("unused") RArgsValuesAndNames receiver) {
@@ -52,6 +61,13 @@ public class RArgsValuesAndNamesMR {
         }
     }
 
+    @Resolve(message = "READ")
+    public abstract static class RArgsValuesAndNamesReadNode extends Node {
+        protected Object access(@SuppressWarnings("unused") VirtualFrame frame, RArgsValuesAndNames receiver, int index) {
+            return receiver.getArgument(index);
+        }
+    }
+
     @CanResolve
     public abstract static class RArgsValuesAndNamesCheck extends Node {
 
-- 
GitLab