From 1bd47865080394ed9ae84ac37f64a08f6e63878d Mon Sep 17 00:00:00 2001
From: Lukas Stadler <lukas.stadler@oracle.com>
Date: Tue, 11 Nov 2014 14:42:00 +0100
Subject: [PATCH] direct array access in UnaryArithmeticReduceNode

---
 .../truffle/r/nodes/unary/UnaryArithmeticReduceNode.java | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticReduceNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticReduceNode.java
index bc46cceb08..3caa924bf4 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticReduceNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/unary/UnaryArithmeticReduceNode.java
@@ -188,8 +188,9 @@ public abstract class UnaryArithmeticReduceNode extends UnaryNode {
         int result = semantics.getIntStart();
         na.enable(operand);
         int opCount = 0;
+        int[] data = operand.getDataWithoutCopying();
         for (int i = 0; i < operand.getLength(); i++) {
-            int d = operand.getDataAt(i);
+            int d = data[i];
             if (na.check(d)) {
                 if (profiledNaRm) {
                     continue;
@@ -213,8 +214,9 @@ public abstract class UnaryArithmeticReduceNode extends UnaryNode {
         double result = semantics.getDoubleStart();
         na.enable(operand);
         int opCount = 0;
+        double[] data = operand.getDataWithoutCopying();
         for (int i = 0; i < operand.getLength(); i++) {
-            double d = operand.getDataAt(i);
+            double d = data[i];
             if (na.check(d)) {
                 if (profiledNaRm) {
                     continue;
@@ -238,8 +240,9 @@ public abstract class UnaryArithmeticReduceNode extends UnaryNode {
         int result = semantics.getIntStart();
         na.enable(operand);
         int opCount = 0;
+        byte[] data = operand.getDataWithoutCopying();
         for (int i = 0; i < operand.getLength(); i++) {
-            byte d = operand.getDataAt(i);
+            byte d = data[i];
             if (na.check(d)) {
                 if (profiledNaRm) {
                     continue;
-- 
GitLab