Skip to content

Commit aebe9a6

Browse files
committed
[GR-20016] RLogicalVector - R vectors should use "storage strategy" pattern.
PullRequest: fastr/2408
2 parents 72d639c + 83edbd6 commit aebe9a6

File tree

48 files changed

+936
-916
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+936
-916
lines changed

com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/tools/C_ParseRd.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -37,7 +37,7 @@
3737
import com.oracle.truffle.r.runtime.RRuntime;
3838
import com.oracle.truffle.r.runtime.conn.RConnection;
3939
import com.oracle.truffle.r.runtime.data.RDataFactory;
40-
import com.oracle.truffle.r.runtime.data.model.RAbstractLogicalVector;
40+
import com.oracle.truffle.r.runtime.data.RLogicalVector;
4141
import com.oracle.truffle.r.runtime.data.model.RAbstractStringVector;
4242
import com.oracle.truffle.r.runtime.env.REnvironment;
4343
import com.oracle.truffle.r.runtime.ffi.ToolsRFFI;
@@ -59,7 +59,7 @@ public abstract class C_ParseRd extends RExternalBuiltinNode.Arg9 {
5959

6060
@TruffleBoundary
6161
@Specialization
62-
protected Object parseRd(Object conObj, REnvironment srcfile, @SuppressWarnings("unused") Object encoding, RAbstractLogicalVector verbose, RAbstractStringVector basename, Object fragmentObj,
62+
protected Object parseRd(Object conObj, REnvironment srcfile, @SuppressWarnings("unused") Object encoding, RLogicalVector verbose, RAbstractStringVector basename, Object fragmentObj,
6363
Object warningCallsObj, Object macros, Object warndupsObj,
6464
@Cached("create()") AsIntegerNode conAsInteger,
6565
@Cached("create()") AsLogicalNode fragmentAsLogical,

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Mapply.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,13 @@
5050
import com.oracle.truffle.r.runtime.AnonymousFrameVariable;
5151
import com.oracle.truffle.r.runtime.ArgumentsSignature;
5252
import com.oracle.truffle.r.runtime.DSLConfig;
53+
import com.oracle.truffle.r.runtime.RRuntime;
5354
import com.oracle.truffle.r.runtime.Utils;
5455
import com.oracle.truffle.r.runtime.builtins.RBuiltin;
5556
import com.oracle.truffle.r.runtime.context.RContext;
5657
import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames;
5758
import com.oracle.truffle.r.runtime.data.RDataFactory;
5859
import com.oracle.truffle.r.runtime.data.RFunction;
59-
import com.oracle.truffle.r.runtime.data.RLogical;
6060
import com.oracle.truffle.r.runtime.data.RNull;
6161
import com.oracle.truffle.r.runtime.data.RStringVector;
6262
import com.oracle.truffle.r.runtime.data.model.RAbstractListVector;
@@ -133,7 +133,7 @@ public abstract static class MapplyInternalNode extends Node implements Internal
133133
public abstract Object[] execute(VirtualFrame frame, RAbstractListVector dots, RFunction function, RAbstractListVector additionalArguments);
134134

135135
private static Object getVecElement(RAbstractListVector dots, int i, int listIndex, int[] lengths, ExtractVectorNode extractNode) {
136-
return extractNode.apply(dots.getDataAt(listIndex), new Object[]{i % lengths[listIndex] + 1}, RLogical.TRUE, RLogical.TRUE);
136+
return extractNode.apply(dots.getDataAt(listIndex), new Object[]{i % lengths[listIndex] + 1}, RRuntime.LOGICAL_TRUE, RRuntime.LOGICAL_TRUE);
137137
}
138138

139139
@Specialization(limit = "getCacheSize(5)", guards = {"dots.getLength() == dotsLength", "moreArgs.getLength() == moreArgsLength",

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/Parse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ private static Source createSource(RContext context, Object srcFile, String coal
190190
if (srcFile instanceof REnvironment) {
191191
REnvironment srcFileEnv = (REnvironment) srcFile;
192192
Object b = srcFileEnv.get("isFile");
193-
boolean isFile = RRuntime.fromLogical(b != null ? (byte) b : 0);
193+
boolean isFile = RRuntime.fromLogical(RRuntime.asLogicalObject(b));
194194
if (isFile) {
195195
// Might be a URL
196196
String urlFileName = RRuntime.asString(srcFileEnv.get("filename"));

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/SortFunctions.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ protected static RStringVector jdkSort(RAbstractStringVector vec, boolean decrea
142142
return RDataFactory.createStringVector(sort(data, decreasing), vec.isComplete());
143143
}
144144

145-
protected static RLogicalVector jdkSort(RAbstractLogicalVector vec, boolean decreasing) {
145+
protected static RLogicalVector jdkSort(RLogicalVector vec, boolean decreasing) {
146146
byte[] data = vec.materialize().getDataCopy();
147147
return RDataFactory.createLogicalVector(sort(data, decreasing), vec.isComplete());
148148
}
@@ -179,7 +179,7 @@ protected RStringVector sort(RAbstractStringVector vec, boolean decreasing) {
179179
}
180180

181181
@Specialization
182-
protected RLogicalVector sort(RAbstractLogicalVector vec, boolean decreasing) {
182+
protected RLogicalVector sort(RLogicalVector vec, boolean decreasing) {
183183
return jdkSort(vec, decreasing);
184184
}
185185

@@ -243,7 +243,7 @@ protected RStringVector sort(RAbstractStringVector vec, Object partial) {
243243

244244
@SuppressWarnings("unused")
245245
@Specialization
246-
protected RLogicalVector sort(RAbstractLogicalVector vec, Object partial) {
246+
protected RLogicalVector sort(RLogicalVector vec, Object partial) {
247247
return jdkSort(vec, false);
248248
}
249249

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/foreign/LookupAdapter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -39,9 +39,9 @@
3939
import com.oracle.truffle.r.runtime.Utils;
4040
import com.oracle.truffle.r.runtime.context.RContext;
4141
import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames;
42+
import com.oracle.truffle.r.runtime.data.RDataFactory;
4243
import com.oracle.truffle.r.runtime.data.RExternalPtr;
4344
import com.oracle.truffle.r.runtime.data.RList;
44-
import com.oracle.truffle.r.runtime.data.RLogical;
4545
import com.oracle.truffle.r.runtime.data.RMissing;
4646
import com.oracle.truffle.r.runtime.data.model.RAbstractStringVector;
4747
import com.oracle.truffle.r.runtime.ffi.DLL;
@@ -164,7 +164,7 @@ protected NativeCallInfo execute(RList symbol) {
164164
String name = RRuntime.asString(nameExtract.execute(symbol, "name"));
165165
SymbolHandle address = ((RExternalPtr) addressExtract.execute(symbol, "address")).getAddr();
166166
// field name may be "package" or "dll", but always at (R) index 3
167-
RList packageList = (RList) packageExtract.apply(symbol, new Object[]{3}, RLogical.valueOf(false), RMissing.instance);
167+
RList packageList = (RList) packageExtract.apply(symbol, new Object[]{3}, RDataFactory.createLogicalVectorFromScalar(false), RMissing.instance);
168168
DLLInfo dllInfo = (DLLInfo) ((RExternalPtr) infoExtract.execute(packageList, "info")).getExternalObject();
169169
return new NativeCallInfo(name, address, dllInfo);
170170
}

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/Subscript.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
import com.oracle.truffle.r.runtime.builtins.RBuiltin;
4646
import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames;
4747
import com.oracle.truffle.r.runtime.data.REmpty;
48-
import com.oracle.truffle.r.runtime.data.RLogical;
4948
import com.oracle.truffle.r.runtime.data.RMissing;
5049
import com.oracle.truffle.r.runtime.data.RNull;
5150
import com.oracle.truffle.r.runtime.data.RTypes;
@@ -119,7 +118,7 @@ protected Object getIndexes(Object x, RArgsValuesAndNames indexes, RAbstractLogi
119118
args[i] = REmpty.instance;
120119
}
121120
}
122-
return extractNode.apply(x, args, exact, RLogical.TRUE);
121+
return extractNode.apply(x, args, exact, RRuntime.LOGICAL_TRUE);
123122
}
124123

125124
@Specialization(guards = "!indexes.isEmpty()", replaces = "getIndexes")
@@ -134,6 +133,6 @@ protected Object getIndexesGeneric(Object x, RArgsValuesAndNames indexes, RAbstr
134133
args[i] = REmpty.instance;
135134
}
136135
}
137-
return extractNode.apply(x, args, exact, RLogical.TRUE);
136+
return extractNode.apply(x, args, exact, RRuntime.LOGICAL_TRUE);
138137
}
139138
}

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/Subset.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@
4343
import com.oracle.truffle.r.runtime.builtins.RBuiltin;
4444
import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames;
4545
import com.oracle.truffle.r.runtime.data.REmpty;
46-
import com.oracle.truffle.r.runtime.data.RLogical;
4746
import com.oracle.truffle.r.runtime.data.RMissing;
4847
import com.oracle.truffle.r.runtime.data.RNull;
4948
import com.oracle.truffle.r.runtime.nodes.RNode;
49+
import com.oracle.truffle.r.runtime.RRuntime;
5050

5151
@ImportStatic(DSLConfig.class)
5252
@RBuiltin(name = "[", kind = PRIMITIVE, parameterNames = {"x", "...",
@@ -107,7 +107,7 @@ protected Object getIndexes(Object x, RArgsValuesAndNames indexes, Object drop,
107107
args[i] = REmpty.instance;
108108
}
109109
}
110-
return extractNode.apply(x, args, RLogical.TRUE, drop);
110+
return extractNode.apply(x, args, RRuntime.LOGICAL_TRUE, drop);
111111
}
112112

113113
@Specialization(guards = "!indexes.isEmpty()", replaces = "getIndexes")
@@ -118,6 +118,6 @@ protected Object getIndexesGeneric(Object x, RArgsValuesAndNames indexes, Object
118118
args[i] = REmpty.instance;
119119
}
120120
}
121-
return extractNode.apply(x, args, RLogical.TRUE, drop);
121+
return extractNode.apply(x, args, RRuntime.LOGICAL_TRUE, drop);
122122
}
123123
}

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/special/SubscriptSpecial.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import com.oracle.truffle.r.nodes.helpers.SpecialsUtils.ConvertIndex;
3232
import com.oracle.truffle.r.runtime.RRuntime;
3333
import com.oracle.truffle.r.runtime.data.RList;
34-
import com.oracle.truffle.r.runtime.data.RLogical;
3534
import com.oracle.truffle.r.runtime.data.model.RAbstractVector;
3635
import com.oracle.truffle.r.runtime.nodes.RNode;
3736

@@ -54,7 +53,7 @@ protected static ExtractVectorNode createAccess() {
5453
@Specialization(guards = {"simpleVector(vector)", "!inReplacement"})
5554
protected static Object accessObject(RAbstractVector vector, Object index,
5655
@Cached("createAccess()") ExtractVectorNode extract) {
57-
return extract.apply(vector, new Object[]{index}, RRuntime.LOGICAL_TRUE, RLogical.TRUE);
56+
return extract.apply(vector, new Object[]{index}, RRuntime.LOGICAL_TRUE, RRuntime.LOGICAL_TRUE);
5857
}
5958

6059
public static RNode create(boolean inReplacement, RNode profiledVector, ConvertIndex index) {

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/infix/special/SubsetSpecial.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import com.oracle.truffle.r.runtime.RRuntime;
3434
import com.oracle.truffle.r.runtime.data.RDataFactory;
3535
import com.oracle.truffle.r.runtime.data.RList;
36-
import com.oracle.truffle.r.runtime.data.RLogical;
3736
import com.oracle.truffle.r.runtime.data.model.RAbstractVector;
3837
import com.oracle.truffle.r.runtime.nodes.RNode;
3938

@@ -67,7 +66,7 @@ protected static ExtractVectorNode createAccess() {
6766
@Specialization(guards = {"simpleVector(vector)", "!inReplacement"})
6867
protected Object accessObject(RAbstractVector vector, Object index,
6968
@Cached("createAccess()") ExtractVectorNode extract) {
70-
return extract.apply(vector, new Object[]{index}, RRuntime.LOGICAL_TRUE, RLogical.TRUE);
69+
return extract.apply(vector, new Object[]{index}, RRuntime.LOGICAL_TRUE, RRuntime.LOGICAL_TRUE);
7170
}
7271

7372
public static RNode create(boolean inReplacement, RNode vectorNode, ConvertIndex index) {

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/fastr/FastRInspect.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,8 @@
3737
import com.oracle.truffle.r.runtime.builtins.RBuiltin;
3838
import com.oracle.truffle.r.runtime.conn.StdConnections;
3939
import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames;
40-
import com.oracle.truffle.r.runtime.data.RDoubleVector;
41-
import com.oracle.truffle.r.runtime.data.RIntVector;
4240
import com.oracle.truffle.r.runtime.data.RNull;
41+
import com.oracle.truffle.r.runtime.data.model.RAbstractVector;
4342
import java.io.IOException;
4443

4544
/**
@@ -58,10 +57,8 @@ public Object call(RArgsValuesAndNames args, byte inspectVectorData) {
5857
for (int i = 0; i < args.getLength(); i++) {
5958
Object arg = args.getArgument(i);
6059
if (RRuntime.fromLogical(inspectVectorData) && RRuntime.hasVectorData(arg)) {
61-
if (arg instanceof RIntVector) {
62-
writeString(((RIntVector) arg).getData().getClass().getName(), true);
63-
} else if (arg instanceof RDoubleVector) {
64-
writeString(((RDoubleVector) arg).getData().getClass().getName(), true);
60+
if (arg instanceof RAbstractVector) {
61+
writeString(((RAbstractVector) arg).getData().getClass().getName(), true);
6562
}
6663
} else {
6764
writeString(arg.getClass().getName(), true);

0 commit comments

Comments
 (0)