From e996a7625537e0f1416a843e1f7c8789e98c0fb8 Mon Sep 17 00:00:00 2001 From: stepan <stepan.sindelar@oracle.com> Date: Fri, 6 Oct 2017 14:00:45 +0200 Subject: [PATCH] Fix Fallback in GetDataStore node --- .../src/com/oracle/truffle/r/runtime/data/RVector.java | 2 +- .../oracle/truffle/r/runtime/data/nodes/GetDataStore.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) 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 f13b35c636..5f7239c993 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 @@ -94,7 +94,7 @@ public abstract class RVector<ArrayT> extends RSharingAttributeStorage implement */ public abstract ArrayT getInternalManagedData(); - public boolean hasNativeMemoryData() { + public final boolean hasNativeMemoryData() { return getInternalManagedData() == null; } diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/nodes/GetDataStore.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/nodes/GetDataStore.java index d3587b1ed9..e71c465201 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/nodes/GetDataStore.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/nodes/GetDataStore.java @@ -55,6 +55,12 @@ public abstract class GetDataStore extends Node { @Fallback protected Object doFallback(RAbstractVector vector) { + if (noNativeMemoryData(vector)) { + RVector<?> vec = (RVector<?>) vector; + if (vec.hasNativeMemoryData()) { + return vec.getNativeMirror(); + } + } return vector.getInternalStore(); } -- GitLab