From 104adb5f969e51b2252b79d7b59203501971cff8 Mon Sep 17 00:00:00 2001 From: Adam Welc <adam.welc@oracle.com> Date: Tue, 3 Feb 2015 09:37:28 -0800 Subject: [PATCH] The "names" attribute id no longer copied on access. --- .../r/nodes/access/array/write/UpdateArrayHelperNode.java | 3 +++ .../src/com/oracle/truffle/r/runtime/data/RVector.java | 5 ++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/write/UpdateArrayHelperNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/write/UpdateArrayHelperNode.java index 1aafaa2891..3e4fe4a735 100644 --- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/write/UpdateArrayHelperNode.java +++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/array/write/UpdateArrayHelperNode.java @@ -428,6 +428,9 @@ public abstract class UpdateArrayHelperNode extends RNode { if (positions.getNames() != null) { posNames.enter(); RStringVector names = getNamesVector(resultVector); + if (names.isShared()) { + names = (RStringVector) names.copy(); + } RStringVector newNames = positions.getNames(); namesNACheck.enable(newNames); for (int i = 0; i < positions.getLength(); i++) { diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RVector.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RVector.java index 8ff3648209..b5afd53f0a 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RVector.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RVector.java @@ -118,13 +118,12 @@ public abstract class RVector extends RBounded implements RShareable, RAbstractV public final RStringVector getNames() { if (names == null) { if (dimNames != null && dimNames.getLength() == 1) { - RStringVector res = (RStringVector) dimNames.getDataAt(0); - return res.isShared() ? (RStringVector) res.copy() : res; + return (RStringVector) dimNames.getDataAt(0); } else { return null; } } else { - return names.isShared() ? (RStringVector) names.copy() : names; + return names; } } -- GitLab