Expand statistics feature to cover all vm stats
Block access to the choice point stack and trail stats
unless the statistics feature is enabled for the VM.
Change-Id: Ifb7baa1ddc1605c3324e0c1f5f802b1daf2b6f05
diff --git a/src/builtin/PRED_$statistics_2.java b/src/builtin/PRED_$statistics_2.java
index 6d8b75c..e77864e 100644
--- a/src/builtin/PRED_$statistics_2.java
+++ b/src/builtin/PRED_$statistics_2.java
@@ -28,12 +28,12 @@
Term result = null;
a1 = a1.dereference();
+ engine.requireFeature(Prolog.Feature.STATISTICS, this, a1);
if (a1.isVariable()) {
throw new PInstantiationException(this, 1);
} else if (! a1.isSymbol()) {
throw new IllegalTypeException(this, 1, "atom", a1);
} else if (a1.equals(SYM_RUNTIME)) {
- engine.requireFeature(Prolog.Feature.STATISTICS_RUNTIME, this, a1);
long val1, val2;
Term start, previous;
val1 = System.currentTimeMillis() - engine.getStartRuntime();
@@ -61,7 +61,7 @@
} else {
return engine.fail();
}
- if (! a2.unify(result, engine.trail))
+ if (! a2.unify(result, engine.trail))
return engine.fail();
return cont;
}
diff --git a/src/lang/Prolog.java b/src/lang/Prolog.java
index 231ab2c..205f71d 100644
--- a/src/lang/Prolog.java
+++ b/src/lang/Prolog.java
@@ -90,7 +90,7 @@
IO,
/** Track the running time of evaluations */
- STATISTICS_RUNTIME;
+ STATISTICS;
}
protected final EnumSet<Feature> features = EnumSet.noneOf(Feature.class);
@@ -149,7 +149,7 @@
halt = 0;
debug = "off";
exception = NONE;
- startRuntime = features.contains(Feature.STATISTICS_RUNTIME)
+ startRuntime = features.contains(Feature.STATISTICS)
? System.currentTimeMillis()
: 0;
previousRuntime = 0;