diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/common/JavaUpCallsRFFIImpl.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/common/JavaUpCallsRFFIImpl.java index f7852a696915fb0e128fb6a90969735fe7a12ddc..7d5b19c7996dfb0d6fbbf5ad6f6a51ef6a9ab75b 100644 --- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/common/JavaUpCallsRFFIImpl.java +++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/common/JavaUpCallsRFFIImpl.java @@ -145,7 +145,6 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { } // Checkstyle: stop method name check - @Override public RIntVector Rf_ScalarInteger(int value) { return RDataFactory.createIntVectorFromScalar(value); @@ -212,7 +211,7 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { @Override @TruffleBoundary - public int Rf_defineVar(Object symbolArg, Object value, Object envArg) { + public void Rf_defineVar(Object symbolArg, Object value, Object envArg) { REnvironment env = (REnvironment) envArg; RSymbol name = (RSymbol) symbolArg; try { @@ -220,7 +219,6 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { } catch (PutException ex) { throw RError.error(RError.SHOW_CALLER2, ex); } - return 0; } @Override @@ -310,7 +308,7 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { @Override @TruffleBoundary - public Object Rf_setAttrib(Object obj, Object name, Object val) { + public void Rf_setAttrib(Object obj, Object name, Object val) { if (obj instanceof RAttributable) { RAttributable attrObj = (RAttributable) obj; String nameAsString; @@ -335,7 +333,6 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { } else { throw RInternalError.shouldNotReachHere(); } - return val; } @TruffleBoundary @@ -413,30 +410,26 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { @Override @TruffleBoundary - public int Rf_error(String msg) { + public void Rf_error(String msg) { RError.error(RError.SHOW_CALLER, RError.Message.GENERIC, msg); - return 0; } @Override @TruffleBoundary - public int Rf_warning(String msg) { + public void Rf_warning(String msg) { RError.warning(RError.SHOW_CALLER, RError.Message.GENERIC, msg); - return 0; } @Override @TruffleBoundary - public int Rf_warningcall(Object call, String msg) { + public void Rf_warningcall(Object call, String msg) { RErrorHandling.warningcallRFFI(call, msg); - return 0; } @Override @TruffleBoundary - public int Rf_errorcall(Object call, String msg) { + public void Rf_errorcall(Object call, String msg) { RErrorHandling.errorcallRFFI(call, msg); - return 0; } @Override @@ -540,7 +533,7 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { } @Override - public int SET_STRING_ELT(Object x, long i, Object v) { + public void SET_STRING_ELT(Object x, long i, Object v) { RStringVector vector = guaranteeInstanceOf(x, RStringVector.class); CharSXPWrapper element = guaranteeInstanceOf(v, CharSXPWrapper.class); String value = element.getContents(); @@ -548,14 +541,12 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { vector.setComplete(false); } vector.setElement((int) i, value); - return 0; } @Override - public int SET_VECTOR_ELT(Object x, long i, Object v) { + public void SET_VECTOR_ELT(Object x, long i, Object v) { RList list = guaranteeInstanceOf(x, RList.class); list.setElement((int) i, v); - return 0; } @Override @@ -767,12 +758,11 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { @Override @TruffleBoundary - public int SET_SYMVALUE(Object x, Object v) { + public void SET_SYMVALUE(Object x, Object v) { if (!(x instanceof RSymbol)) { throw RInternalError.shouldNotReachHere(); } REnvironment.baseEnv().safePut(((RSymbol) x).getName(), v); - return 0; } @Override @@ -784,12 +774,12 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { } @Override - public int R_LockBinding(Object sym, Object env) { + public void R_LockBinding(Object sym, Object env) { throw implementedAsNode(); } @Override - public int R_unLockBinding(Object sym, Object env) { + public void R_unLockBinding(Object sym, Object env) { throw implementedAsNode(); } @@ -878,7 +868,7 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { @Override @TruffleBoundary - public int Rf_gsetVar(Object symbol, Object value, Object rho) { + public void Rf_gsetVar(Object symbol, Object value, Object rho) { guarantee(symbol instanceof RSymbol); REnvironment baseEnv = RContext.getInstance().stateREnvironment.getBaseEnv(); guarantee(rho == baseEnv); @@ -887,19 +877,17 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { } catch (PutException e) { e.printStackTrace(); } - return 0; } @Override @TruffleBoundary - public int DUPLICATE_ATTRIB(Object to, Object from) { + public void DUPLICATE_ATTRIB(Object to, Object from) { if (from instanceof RAttributable) { guaranteeInstanceOf(to, RAttributable.class); DynamicObject attributes = ((RAttributable) from).getAttributes(); ((RAttributable) to).initAttributes(attributes == null ? null : RAttributesLayout.copy(attributes)); } // TODO: copy OBJECT? and S4 attributes - return 0; } @Override @@ -912,13 +900,13 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { } @Override - public int Rf_copyListMatrix(Object t, Object s, int byrow) { + public void Rf_copyListMatrix(Object t, Object s, int byrow) { throw unimplemented(); } @Override @TruffleBoundary - public int Rf_copyMatrix(Object t, Object s, int byRow) { + public void Rf_copyMatrix(Object t, Object s, int byRow) { int tRows = RRuntime.nrows(t); int tCols = RRuntime.ncols(t); final Object sav = RRuntime.asAbstractVector(s); @@ -938,6 +926,7 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { }; } else if (sav instanceof RAbstractDoubleVector) { c = new ContainerItemCopier() { + private final RAbstractDoubleVector sv = (RAbstractDoubleVector) sav; private final RAbstractDoubleVector tv = (RAbstractDoubleVector) t; private final Object tvStore = tv.getInternalStore(); @@ -1038,7 +1027,6 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { } else { // source is non-RAbstractContainer throw unimplemented(); } - return 0; } /** @@ -1047,6 +1035,7 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { * target container. */ interface ContainerItemCopier { + void copy(int sIdx, int tIdx); } @@ -1093,7 +1082,7 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { @Override @TruffleBoundary - public int SET_RDEBUG(Object x, int v) { + public void SET_RDEBUG(Object x, int v) { REnvironment env = guaranteeInstanceOf(x, REnvironment.class); if (env instanceof REnvironment.Function) { REnvironment.Function funcEnv = (REnvironment.Function) env; @@ -1104,7 +1093,6 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { RContext.getRRuntimeASTAccess().disableDebug(func); } } - return 0; } @Override @@ -1117,7 +1105,7 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { @Override @TruffleBoundary - public int SET_RSTEP(Object x, int v) { + public void SET_RSTEP(Object x, int v) { @SuppressWarnings("unused") REnvironment env = guaranteeInstanceOf(x, REnvironment.class); throw RInternalError.unimplemented("SET_RSTEP"); @@ -1189,9 +1177,8 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { @Override @TruffleBoundary - public int R_CleanUp(int sa, int status, int runlast) { + public void R_CleanUp(int sa, int status, int runlast) { RCleanUp.stdCleanUp(SA_TYPE.values()[sa], status, runlast != 0); - return 0; } @Override @@ -1240,36 +1227,31 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { } @Override - public int SET_S4_OBJECT(Object x) { + public void SET_S4_OBJECT(Object x) { guaranteeInstanceOf(x, RTypedValue.class).setS4(); - return 0; } @Override - public int UNSET_S4_OBJECT(Object x) { + public void UNSET_S4_OBJECT(Object x) { guaranteeInstanceOf(x, RTypedValue.class).unsetS4(); - return 0; } @Override @TruffleBoundary - public int Rprintf(String message) { + public void Rprintf(String message) { RContext.getInstance().getConsole().print(message); - return 0; } @Override @TruffleBoundary - public int GetRNGstate() { + public void GetRNGstate() { RRNG.getRNGState(); - return 0; } @Override @TruffleBoundary - public int PutRNGstate() { + public void PutRNGstate() { RRNG.putRNGState(); - return 0; } @Override @@ -1279,7 +1261,6 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { } // Checkstyle: stop method name check - @Override @TruffleBoundary public Object R_getGlobalFunctionContext() { @@ -1442,24 +1423,21 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { } @Override - public int R_SetExternalPtrAddr(Object x, long addr) { + public void R_SetExternalPtrAddr(Object x, long addr) { RExternalPtr p = guaranteeInstanceOf(x, RExternalPtr.class); p.setAddr(new SymbolHandle(addr)); - return 0; } @Override - public int R_SetExternalPtrTag(Object x, Object tag) { + public void R_SetExternalPtrTag(Object x, Object tag) { RExternalPtr p = guaranteeInstanceOf(x, RExternalPtr.class); p.setTag(tag); - return 0; } @Override - public int R_SetExternalPtrProtected(Object x, Object prot) { + public void R_SetExternalPtrProtected(Object x, Object prot) { RExternalPtr p = guaranteeInstanceOf(x, RExternalPtr.class); p.setProt(prot); - return 0; } @Override @@ -1681,9 +1659,11 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { } private static HashMap<String, Integer> name2typeTable; + static { name2typeTable = new HashMap<>(26); - name2typeTable.put("NULL", SEXPTYPE.NILSXP.code); /* real types */ + name2typeTable.put("NULL", SEXPTYPE.NILSXP.code); + /* real types */ name2typeTable.put("symbol", SEXPTYPE.SYMSXP.code); name2typeTable.put("pairlist", SEXPTYPE.LISTSXP.code); name2typeTable.put("closure", SEXPTYPE.CLOSXP.code); @@ -1695,7 +1675,8 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { name2typeTable.put("char", SEXPTYPE.CHARSXP.code); name2typeTable.put("logical", SEXPTYPE.LGLSXP.code); name2typeTable.put("integer", SEXPTYPE.INTSXP.code); - name2typeTable.put("double", SEXPTYPE.REALSXP.code); /*- "real", for R <= 0.61.x */ + name2typeTable.put("double", SEXPTYPE.REALSXP.code); + /*- "real", for R <= 0.61.x */ name2typeTable.put("complex", SEXPTYPE.CPLXSXP.code); name2typeTable.put("character", SEXPTYPE.STRSXP.code); name2typeTable.put("...", SEXPTYPE.DOTSXP.code); @@ -1792,7 +1773,7 @@ public abstract class JavaUpCallsRFFIImpl implements UpCallsRFFI { } @Override - public int Rf_copyMostAttrib(Object x, Object y) { + public void Rf_copyMostAttrib(Object x, Object y) { throw implementedAsNode(); } diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/AttributesAccessNodes.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/AttributesAccessNodes.java index 1ce91a921d39bd1c33dc932b7a4d26dfccfb24e5..7b6ef2821fb05a7cbff327b6d1bf052e005a460c 100644 --- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/AttributesAccessNodes.java +++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/AttributesAccessNodes.java @@ -124,13 +124,13 @@ public final class AttributesAccessNodes { @Child protected CopyOfRegAttributesNode copyRegAttributes; @Specialization - public Object doList(RAttributeStorage x, RAttributeStorage y) { + public Void doRAttributeStorage(RAttributeStorage x, RAttributeStorage y) { if (copyRegAttributes == null) { CompilerDirectives.transferToInterpreterAndInvalidate(); copyRegAttributes = CopyOfRegAttributesNode.create(); } copyRegAttributes.execute(x, y); - return RNull.instance; + return null; } @Fallback diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/EnvNodes.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/EnvNodes.java index 57441100e9446d379cead2d499ae288a22858a4c..e493bd7828f288ab24852cde81af3da2d75603c2 100644 --- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/EnvNodes.java +++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/EnvNodes.java @@ -27,7 +27,6 @@ import com.oracle.truffle.api.dsl.Specialization; import com.oracle.truffle.api.dsl.TypeSystemReference; import static com.oracle.truffle.r.ffi.impl.common.RFFIUtils.guaranteeInstanceOf; import com.oracle.truffle.r.runtime.RInternalError; -import com.oracle.truffle.r.runtime.data.RNull; import com.oracle.truffle.r.runtime.data.RSymbol; import com.oracle.truffle.r.runtime.data.RTypes; import com.oracle.truffle.r.runtime.env.REnvironment; @@ -38,14 +37,14 @@ public class EnvNodes { public abstract static class LockBindingNode extends FFIUpCallNode.Arg2 { @Specialization - Object lock(RSymbol sym, REnvironment env) { + Void lock(RSymbol sym, REnvironment env) { // TODO copied from EnvFunctions.LockBinding env.lockBinding(sym.getName()); - return RNull.instance; + return null; } @Fallback - Object lock(Object sym, Object env) { + Void lock(Object sym, Object env) { guaranteeInstanceOf(sym, RSymbol.class); guaranteeInstanceOf(env, REnvironment.class); throw RInternalError.shouldNotReachHere(); @@ -60,14 +59,14 @@ public class EnvNodes { public abstract static class UnlockBindingNode extends FFIUpCallNode.Arg2 { @Specialization - Object unlock(RSymbol sym, REnvironment env) { + Void unlock(RSymbol sym, REnvironment env) { // TODO copied from EnvFunctions.LockBinding env.unlockBinding(sym.getName()); - return RNull.instance; + return null; } @Fallback - Object unlock(Object sym, Object env) { + Void unlock(Object sym, Object env) { guaranteeInstanceOf(sym, RSymbol.class); guaranteeInstanceOf(env, REnvironment.class); throw RInternalError.shouldNotReachHere(); diff --git a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/upcalls/StdUpCallsRFFI.java b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/upcalls/StdUpCallsRFFI.java index 50237121f198930541ce26863c986c1336c2ec47..a26fa2347b0f22e96558002764ce2c776b4ce37d 100644 --- a/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/upcalls/StdUpCallsRFFI.java +++ b/com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/upcalls/StdUpCallsRFFI.java @@ -69,10 +69,6 @@ import com.oracle.truffle.r.ffi.processor.RFFIUpCallNode; * implementations. For example, many arguments are "strings" but we do not specify them as * {@code String} here. In particular do not use array types as these are passed as custom Truffle * objects in some implementations. - * - * N.B. Although some functions do not return results, the Truffle interop EXECUTE message machinery - * does not like {@code void} functions, so we just use {@code int}. Evidently the actual value does - * not matter. */ public interface StdUpCallsRFFI { // Checkstyle: stop method name check @@ -104,7 +100,7 @@ public interface StdUpCallsRFFI { Object Rf_cons(Object car, Object cdr); - int /* void */ Rf_defineVar(Object symbolArg, Object value, Object envArg); + void Rf_defineVar(Object symbolArg, Object value, Object envArg); Object R_getClassDef(@RFFICstring String clazz); @@ -127,7 +123,7 @@ public interface StdUpCallsRFFI { Object Rf_getAttrib(Object obj, Object name); - Object Rf_setAttrib(Object obj, Object name, Object val); + void Rf_setAttrib(Object obj, Object name, Object val); int Rf_inherits(Object x, @RFFICstring String clazz); @@ -143,13 +139,13 @@ public interface StdUpCallsRFFI { Object Rf_PairToVectorList(Object x); - int /* void */ Rf_error(@RFFICstring String msg); + void Rf_error(@RFFICstring String msg); - int /* void */ Rf_warning(@RFFICstring String msg); + void Rf_warning(@RFFICstring String msg); - int /* void */ Rf_warningcall(Object call, @RFFICstring String msg); + void Rf_warningcall(Object call, @RFFICstring String msg); - int /* void */ Rf_errorcall(Object call, @RFFICstring String msg); + void Rf_errorcall(Object call, @RFFICstring String msg); Object Rf_allocVector(int mode, long n); @@ -164,9 +160,9 @@ public interface StdUpCallsRFFI { @RFFIUpCallNode(LENGTHNode.class) int LENGTH(Object x); - int /* void */ SET_STRING_ELT(Object x, long i, Object v); + void SET_STRING_ELT(Object x, long i, Object v); - int /* void */ SET_VECTOR_ELT(Object x, long i, Object v); + void SET_VECTOR_ELT(Object x, long i, Object v); Object RAW(Object x); @@ -244,15 +240,15 @@ public interface StdUpCallsRFFI { Object SYMVALUE(Object x); - int /* void */ SET_SYMVALUE(Object x, Object v); + void SET_SYMVALUE(Object x, Object v); int R_BindingIsLocked(Object sym, Object env); @RFFIUpCallNode(LockBindingNode.class) - int R_LockBinding(Object sym, Object env); + void R_LockBinding(Object sym, Object env); @RFFIUpCallNode(UnlockBindingNode.class) - int R_unLockBinding(Object sym, Object env); + void R_unLockBinding(Object sym, Object env); Object R_FindNamespace(Object name); @@ -263,15 +259,15 @@ public interface StdUpCallsRFFI { Object Rf_GetOption1(Object tag); - int /* void */ Rf_gsetVar(Object symbol, Object value, Object rho); + void Rf_gsetVar(Object symbol, Object value, Object rho); - int /* void */ DUPLICATE_ATTRIB(Object to, Object from); + void DUPLICATE_ATTRIB(Object to, Object from); int R_compute_identical(Object x, Object y, int flags); - int /* void */ Rf_copyListMatrix(Object s, Object t, int byrow); + void Rf_copyListMatrix(Object s, Object t, int byrow); - int /* void */ Rf_copyMatrix(Object s, Object t, int byrow); + void Rf_copyMatrix(Object s, Object t, int byrow); Object R_tryEval(Object expr, Object env, int silent); @@ -279,11 +275,11 @@ public interface StdUpCallsRFFI { int RDEBUG(Object x); - int /* void */ SET_RDEBUG(Object x, int v); + void SET_RDEBUG(Object x, int v); int RSTEP(Object x); - int /* void */ SET_RSTEP(Object x, int v); + void SET_RSTEP(Object x, int v); Object ENCLOS(Object x); @@ -297,15 +293,15 @@ public interface StdUpCallsRFFI { int IS_S4_OBJECT(Object x); - int /* void */ SET_S4_OBJECT(Object x); + void SET_S4_OBJECT(Object x); - int /* void */ UNSET_S4_OBJECT(Object x); + void UNSET_S4_OBJECT(Object x); - int /* void */ Rprintf(@RFFICstring String message); + void Rprintf(@RFFICstring String message); - int /* void */ GetRNGstate(); + void GetRNGstate(); - int /* void */ PutRNGstate(); + void PutRNGstate(); double unif_rand(); @@ -319,13 +315,13 @@ public interface StdUpCallsRFFI { Object R_ExternalPtrProtected(Object x); - int /* void */ R_SetExternalPtrAddr(Object x, long addr); + void R_SetExternalPtrAddr(Object x, long addr); - int /* void */ R_SetExternalPtrTag(Object x, Object tag); + void R_SetExternalPtrTag(Object x, Object tag); - int /* void */ R_SetExternalPtrProtected(Object x, Object prot); + void R_SetExternalPtrProtected(Object x, Object prot); - int /* void */ R_CleanUp(int sa, int status, int runlast); + void R_CleanUp(int sa, int status, int runlast); Object R_NewHashedEnv(Object parent, Object initialSize); @@ -383,7 +379,7 @@ public interface StdUpCallsRFFI { Object Rf_namesgets(Object vec, Object val); @RFFIUpCallNode(CopyMostAttrib.class) - int Rf_copyMostAttrib(Object x, Object y); + void Rf_copyMostAttrib(Object x, Object y); @RFFIUpCallNode(VectorToPairListNode.class) Object Rf_VectorToPairList(Object x);