Skip to content
Snippets Groups Projects
Commit 73bf5d8c authored by Mick Jordan's avatar Mick Jordan
Browse files

implement .Machine

parent 5c8057a1
Branches
No related tags found
No related merge requests found
...@@ -86,6 +86,7 @@ public final class REngine implements RContext.Engine { ...@@ -86,6 +86,7 @@ public final class REngine implements RContext.Engine {
Locale.setDefault(Locale.ROOT); Locale.setDefault(Locale.ROOT);
FastROptions.initialize(); FastROptions.initialize();
Load_RFFIFactory.initialize(); Load_RFFIFactory.initialize();
RAccuracyInfo.initialize();
singleton.crashOnFatalError = crashOnFatalErrorArg; singleton.crashOnFatalError = crashOnFatalErrorArg;
singleton.builtinLookup = RBuiltinPackages.getInstance(); singleton.builtinLookup = RBuiltinPackages.getInstance();
singleton.context = RContext.setRuntimeState(singleton, commandArgs, consoleHandler, new RASTHelperImpl(), headless); singleton.context = RContext.setRuntimeState(singleton, commandArgs, consoleHandler, new RASTHelperImpl(), headless);
...@@ -95,7 +96,6 @@ public final class REngine implements RContext.Engine { ...@@ -95,7 +96,6 @@ public final class REngine implements RContext.Engine {
singleton.evalFunction = singleton.lookupBuiltin("eval"); singleton.evalFunction = singleton.lookupBuiltin("eval");
RPackageVariables.initializeBase(); RPackageVariables.initializeBase();
RVersionInfo.initialize(); RVersionInfo.initialize();
RAccuracyInfo.initialize();
RRNG.initialize(); RRNG.initialize();
TempDirPath.initialize(); TempDirPath.initialize();
LibPaths.initialize(); LibPaths.initialize();
......
...@@ -40,7 +40,7 @@ import com.oracle.truffle.r.runtime.env.REnvironment.*; ...@@ -40,7 +40,7 @@ import com.oracle.truffle.r.runtime.env.REnvironment.*;
public class BaseVariables implements RPackageVariables.Handler { public class BaseVariables implements RPackageVariables.Handler {
// @formatter:off // @formatter:off
private static final String[] VARS = new String[]{ private static final String[] VARS = new String[]{
".AutoloadEnv", ".BaseNamespaceEnv", ".GlobalEnv", ".Platform", ".Library", ".LibrarySite" ".AutoloadEnv", ".BaseNamespaceEnv", ".GlobalEnv", ".Machine", ".Platform", ".Library", ".LibrarySite"
}; };
// @formatter:on // @formatter:on
...@@ -50,6 +50,7 @@ public class BaseVariables implements RPackageVariables.Handler { ...@@ -50,6 +50,7 @@ public class BaseVariables implements RPackageVariables.Handler {
}; };
// @formatter:on // @formatter:on
// @formatter:off
private int initialized = -1; private int initialized = -1;
public BaseVariables() { public BaseVariables() {
...@@ -77,6 +78,9 @@ public class BaseVariables implements RPackageVariables.Handler { ...@@ -77,6 +78,9 @@ public class BaseVariables implements RPackageVariables.Handler {
String[] platformData = new String[]{"unix", File.separator, ".so", "unknown", "little", "source", File.pathSeparator, ""}; String[] platformData = new String[]{"unix", File.separator, ".so", "unknown", "little", "source", File.pathSeparator, ""};
value = RDataFactory.createList(platformData, RDataFactory.createStringVector(PLATFORM_NAMES, RDataFactory.COMPLETE_VECTOR)); value = RDataFactory.createList(platformData, RDataFactory.createStringVector(PLATFORM_NAMES, RDataFactory.COMPLETE_VECTOR));
break; break;
case ".Machine":
value = createMachine();
break;
default: default:
continue; continue;
} }
...@@ -110,4 +114,39 @@ public class BaseVariables implements RPackageVariables.Handler { ...@@ -110,4 +114,39 @@ public class BaseVariables implements RPackageVariables.Handler {
initialized++; initialized++;
} }
private static final String[] MACHINE_NAMES = new String[] {
"double.eps", "double.neg.eps", "double.xmin",
"double.xmax", "double.base", "double.digits",
"double.rounding", "double.guard", "double.ulp.digits",
"double.neg.ulp.digits", "double.exponent", "double.min.exp",
"double.max.exp", "integer.max", "sizeof.long",
"sizeof.longlong", "sizeof.longdouble", "sizeof.pointer"
};
// @formatter:on
private static RList createMachine() {
Object[] values = new Object[MACHINE_NAMES.length];
RAccuracyInfo acc = RAccuracyInfo.get();
values[0] = acc.eps;
values[1] = acc.epsneg;
values[2] = acc.xmin;
values[3] = acc.xmax;
values[4] = acc.ibeta;
values[5] = acc.it;
values[6] = acc.irnd;
values[7] = acc.ngrd;
values[8] = acc.machep;
values[9] = acc.negep;
values[10] = acc.iexp;
values[11] = acc.minexp;
values[12] = acc.maxexp;
values[13] = Integer.MAX_VALUE;
// TODO platform specific
values[14] = 8;
values[15] = 8;
values[16] = 16;
values[17] = 8;
return RDataFactory.createList(values, RDataFactory.createStringVector(MACHINE_NAMES, RDataFactory.COMPLETE_VECTOR));
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment