Skip to content

Commit 0378093

Browse files
committed
[GR-11414] Fix various problems with devtools package.
PullRequest: fastr/1666
2 parents 7f907f5 + 176eb52 commit 0378093

File tree

20 files changed

+382
-297
lines changed

20 files changed

+382
-297
lines changed

com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/common/JavaUpCallsRFFIImpl.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames;
7272
import com.oracle.truffle.r.runtime.data.RAttributable;
7373
import com.oracle.truffle.r.runtime.data.RAttributesLayout;
74+
import com.oracle.truffle.r.runtime.data.RComplex;
7475
import com.oracle.truffle.r.runtime.data.RComplexVector;
7576
import com.oracle.truffle.r.runtime.data.RDataFactory;
7677
import com.oracle.truffle.r.runtime.data.RDoubleVector;
@@ -84,6 +85,7 @@
8485
import com.oracle.truffle.r.runtime.data.RNull;
8586
import com.oracle.truffle.r.runtime.data.RObject;
8687
import com.oracle.truffle.r.runtime.data.RPromise;
88+
import com.oracle.truffle.r.runtime.data.RRaw;
8789
import com.oracle.truffle.r.runtime.data.RPromise.EagerPromise;
8890
import com.oracle.truffle.r.runtime.data.RRawVector;
8991
import com.oracle.truffle.r.runtime.data.RShareable;
@@ -140,6 +142,12 @@ private static RuntimeException implementedAsNode() {
140142
}
141143

142144
// Checkstyle: stop method name check
145+
146+
@Override
147+
public RComplexVector Rf_ScalarComplex(double real, double imag) {
148+
return RDataFactory.createComplexVectorFromScalar(RComplex.valueOf(real, imag));
149+
}
150+
143151
@Override
144152
public RIntVector Rf_ScalarInteger(int value) {
145153
return RDataFactory.createIntVectorFromScalar(value);
@@ -156,6 +164,11 @@ public RLogicalVector Rf_ScalarLogical(int value) {
156164
return RDataFactory.createLogicalVectorFromScalar(byteValue);
157165
}
158166

167+
@Override
168+
public RRawVector Rf_ScalarRaw(int value) {
169+
return RDataFactory.createRawVectorFromScalar(RRaw.valueOf((byte) value));
170+
}
171+
159172
@Override
160173
public RDoubleVector Rf_ScalarReal(double value) {
161174
return RDataFactory.createDoubleVectorFromScalar(value);
@@ -465,7 +478,32 @@ public Object Rf_allocArray(int mode, Object dimsObj) {
465478
RAbstractVector result = (RAbstractVector) Rf_allocVector(mode, n);
466479
setDims(newDims, result);
467480
return result;
481+
}
468482

483+
@Override
484+
@TruffleBoundary
485+
public Object Rf_allocList(int length) {
486+
Object result = RNull.instance;
487+
for (int i = 0; i < length; i++) {
488+
result = RDataFactory.createPairList(RNull.instance, result);
489+
}
490+
return result;
491+
}
492+
493+
@Override
494+
@TruffleBoundary
495+
public Object Rf_allocSExp(int mode) {
496+
SEXPTYPE type = SEXPTYPE.mapInt(mode);
497+
switch (type) {
498+
case ENVSXP:
499+
return RDataFactory.createNewEnv(null);
500+
case LISTSXP:
501+
return RDataFactory.createPairList(RNull.instance, RNull.instance);
502+
case LANGSXP:
503+
return RDataFactory.createPairList(1, type);
504+
default:
505+
throw unimplemented("unexpected SEXPTYPE " + type);
506+
}
469507
}
470508

471509
@TruffleBoundary

com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/upcalls/StdUpCallsRFFI.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,10 +156,14 @@
156156
public interface StdUpCallsRFFI {
157157
// Checkstyle: stop method name check
158158

159+
Object Rf_ScalarComplex(double real, double imag);
160+
159161
Object Rf_ScalarInteger(int value);
160162

161163
Object Rf_ScalarLogical(int value);
162164

165+
Object Rf_ScalarRaw(int value);
166+
163167
Object Rf_ScalarReal(double value);
164168

165169
Object Rf_ScalarString(Object value);
@@ -242,6 +246,12 @@ public interface StdUpCallsRFFI {
242246
@RFFIRunGC
243247
Object Rf_allocMatrix(int mode, int nrow, int ncol);
244248

249+
@RFFIRunGC
250+
Object Rf_allocList(int length);
251+
252+
@RFFIRunGC
253+
Object Rf_allocSExp(int type);
254+
245255
int Rf_nrows(Object x);
246256

247257
int Rf_ncols(Object x);

com.oracle.truffle.r.native/fficall/src/common/rffi_upcalls.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,12 @@ extern __thread void* *callbacks;
3030

3131
// This is the complete set , including those not yet implemented
3232

33+
typedef SEXP (*call_Rf_ScalarComplex)(double real, double imag);
3334
typedef SEXP (*call_Rf_ScalarInteger)(int value);
35+
typedef SEXP (*call_Rf_ScalarLogical)(int value);
36+
typedef SEXP (*call_Rf_ScalarRaw)(int value);
3437
typedef SEXP (*call_Rf_ScalarReal)(double value);
3538
typedef SEXP (*call_Rf_ScalarString)(SEXP value);
36-
typedef SEXP (*call_Rf_ScalarLogical)(int value);
3739
typedef SEXP (*call_Rf_allocVector)(SEXPTYPE t, R_xlen_t len);
3840
typedef SEXP (*call_Rf_allocArray)(SEXPTYPE t, SEXP dims);
3941
typedef SEXP (*call_Rf_alloc3DArray)(SEXPTYPE t, int x, int y, int z);

0 commit comments

Comments
 (0)