[e-cvs] cvs commit: e/src/jsrc/org/erights/e/elang/interp InteractiveInterp.java Interp.java
markm@eros.cs.jhu.edu
markm@eros.cs.jhu.edu
Sun, 2 Dec 2001 00:32:05 -0500
markm 01/12/02 00:32:05
Modified: src/csrc/setup eprops-template.txt
src/esrc/com/skyhunter/e/net promiseAllResolved.emaker
src/esrc/org/erights/e/elang/cmd cmdLoopMakerAuthor.emaker
src/esrc/scripts setup.e
src/jsrc/org/erights/e/elang/interp InteractiveInterp.java
Interp.java
Log:
Added props switches for Dean's new diagnostics
Revision Changes Path
1.24 +22 -0 e/src/csrc/setup/eprops-template.txt
Index: eprops-template.txt
===================================================================
RCS file: /cvs/e/src/csrc/setup/eprops-template.txt,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- eprops-template.txt 2001/11/06 06:27:32 1.23
+++ eprops-template.txt 2001/12/02 05:32:05 1.24
@@ -230,6 +230,14 @@
e.interp.expand=${{e.interp.expand}}
+# In an interactive interpreter, when this is set to true, the
+# further expansion to an internal form is echoed. This is for
+# debugging the Kernel-E implementation, and probably serves no
+# function for normal use. The output is implementation dependent.
+# Defaults to false.
+
+e.interp.show-transformed=${{e.interp.show-transformed}}
+
# When true, problem reports by default show the Java stack trace in
# addition to the E stack trace. (This is only relevant while E in
# interpreted. Once it's compiled, there will only be one stack trace
@@ -238,10 +246,24 @@
e.interp.verbose=${{e.interp.verbose}}
+# Defaults to "fe", for "front-end runner". May be set to "be" for
+# "back-end runner". If set to "fe", then the initial runner of the
+# initial vat will be a front-end runner, meaning it will run in the
+# AWT event thread, use the AWT event queue, and can thereby interact
+# synchronously with AWT and Swing components.
#
+# If set to "be", then the initial runner of the initial vat will be a
+# new back-end runner, meaning it will run in its own thread, use its
+# own queue, and should not (eventually, cannot) synchronously access
+# AWT or Swing components.
e.interp.runner=${{e.interp.runner}}
+# Says whether E should print, as a diagnostic on stderr, the total
+# post-initialization time to interpret the E program. Defaults to
+# false.
+
+e.interp.print-timing=${{e.interp.print-timing}}
################# Configuring a Vat's network presence #################
1.2 +2 -2 e/src/esrc/com/skyhunter/e/net/promiseAllResolved.emaker
Index: promiseAllResolved.emaker
===================================================================
RCS file: /cvs/e/src/esrc/com/skyhunter/e/net/promiseAllResolved.emaker,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- promiseAllResolved.emaker 2001/03/31 06:47:32 1.1
+++ promiseAllResolved.emaker 2001/12/02 05:32:05 1.2
@@ -1,11 +1,11 @@
# Given a List of promises, when all the promises have been resolved,
# resolve the returned promise, either fulfilling it with the list of fulfillments (if
# all the promises were fulfilled) or by smashing the returned promise
-# with one of the broken promises (if at least one promise was broken).
+# with one of the broken promises (if at least one promise was broken).
def promiseAllResolved(promises) :any {
def [result, resolver] := PromiseMaker()
var count := promises size()
- def resolution := promises
+ var resolution := promises
def countdownToResolution() {
count -= 1
if (count <= 0) {resolver resolve(resolution)}
1.6 +11 -7 e/src/esrc/org/erights/e/elang/cmd/cmdLoopMakerAuthor.emaker
Index: cmdLoopMakerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/org/erights/e/elang/cmd/cmdLoopMakerAuthor.emaker,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- cmdLoopMakerAuthor.emaker 2001/11/10 23:51:51 1.5
+++ cmdLoopMakerAuthor.emaker 2001/12/02 05:32:05 1.6
@@ -10,6 +10,8 @@
var expandFlag :boolean :=
propUtils testProp(props, "e.interp.expand")
+ var showTransformedFlag :boolean :=
+ propUtils testProp(props, "e.interp.show-transformed")
var showsJavaStackFlag :boolean :=
propUtils testProp(props, "e.interp.shows-java-stack")
var showsEStackFlag :boolean :=
@@ -22,13 +24,15 @@
to getArgs() :any { args }
to getProps() :any { props }
- to getExpand() :boolean { expandFlag }
- to getShowsJavaStack() :boolean { showsJavaStackFlag }
- to getShowsEStack() :boolean { showsEStackFlag }
- to getInteractive() :boolean { true }
- to setExpand(newFlag) { expandFlag := newFlag }
- to setShowsJavaStack(newFlag) { showsJavaStackFlag := newFlag }
- to setShowsEStack(newFlag) { showsEStackFlag := newFlag }
+ to getExpand() :boolean { expandFlag }
+ to getShowTransformed() :boolean { showTransformedFlag }
+ to getShowsJavaStack() :boolean { showsJavaStackFlag }
+ to getShowsEStack() :boolean { showsEStackFlag }
+ to getInteractive() :boolean { true }
+ to setExpand(newFlag) { expandFlag := newFlag }
+ to setShowTransformed(newFlag) { showTransformedFlag := newFlag }
+ to setShowsJavaStack(newFlag) { showsJavaStackFlag := newFlag }
+ to setShowsEStack(newFlag) { showsEStackFlag := newFlag }
to getTopScope() :any { topScope }
to getResult(i) :any { results[i] }
1.20 +29 -26 e/src/esrc/scripts/setup.e
Index: setup.e
===================================================================
RCS file: /cvs/e/src/esrc/scripts/setup.e,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- setup.e 2001/11/06 06:27:32 1.19
+++ setup.e 2001/12/02 05:32:05 1.20
@@ -8,32 +8,35 @@
# eprops.txt
def props := [
- "e.extensionslist" => ".e;.emaker;.caplet;.updoc;.vat;.cap",
- "e.vendor" => "ERights.org",
- "e.vendor.url" => "http://www.erights.org/",
- "e.vendor.url.bug" => "mailto:bugs@erights.org",
- "e.onErrorExit" => "gui",
- "e.swingLnF" => "platform",
- "e.interp.interactive" => "false",
- "e.interp.parseSpam" => "false",
- "e.interp.expand" => "false",
- "e.interp.verbose" => "false",
- "e.interp.runner" => "fe",
- "e.enable.anon-lambda" => "allow",
- "e.enable.auditors" => "allow",
- "e.enable.define" => "allow",
- "e.enable.dot-props" => "allow",
- "e.enable.meta-object" => "false",
- "e.enable.meta-scope" => "false",
- "e.enable.no-paren-call" => "allow",
- "e.enable.no-paren-method" => "allow",
- "e.enable.one-method-object" => "allow",
- "e.enable.plumbing" => "allow",
- "e.enable.typedef" => "allow",
- "e.enable.when-clauses" => "allow",
- "e.enable.notabs" => "allow",
- "e.enable.lambda-args" => "allow",
- "sun.awt.exception.handler" => "org.erights.e.elib.prim.FEProblemHandler"
+ "sun.awt.exception.handler" => "org.erights.e.elib.prim.FEProblemHandler",
+ "e.extensionslist" => ".e;.emaker;.caplet;.updoc;.vat;.cap",
+ "e.vendor" => "ERights.org",
+ "e.vendor.url" => "http://www.erights.org/",
+ "e.vendor.url.bug" => "mailto:bugs@erights.org",
+ "e.onErrorExit" => "gui",
+ "e.swingLnF" => "platform",
+ "e.interp.interactive" => "false",
+ "e.interp.parseSpam" => "false",
+ "e.interp.expand" => "false",
+ "e.interp.show-transformed" => "false",
+ "e.interp.verbose" => "false",
+ "e.interp.runner" => "fe",
+ "e.interp.print-timing" => "false",
+
+ "e.enable.anon-lambda" => "allow",
+ "e.enable.auditors" => "allow",
+ "e.enable.define" => "allow",
+ "e.enable.dot-props" => "allow",
+ "e.enable.meta-object" => "false",
+ "e.enable.meta-scope" => "false",
+ "e.enable.no-paren-call" => "allow",
+ "e.enable.no-paren-method" => "allow",
+ "e.enable.one-method-object" => "allow",
+ "e.enable.plumbing" => "allow",
+ "e.enable.typedef" => "allow",
+ "e.enable.when-clauses" => "allow",
+ "e.enable.notabs" => "allow",
+ "e.enable.lambda-args" => "allow"
] diverge()
# 'false' means overwrite rather than complain
1.14 +31 -3 e/src/jsrc/org/erights/e/elang/interp/InteractiveInterp.java
Index: InteractiveInterp.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/interp/InteractiveInterp.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- InteractiveInterp.java 2001/11/10 19:40:41 1.13
+++ InteractiveInterp.java 2001/12/02 05:32:05 1.14
@@ -92,6 +92,8 @@
private boolean myExpandFlag = false;
+ private boolean myShowTransformedFlag = false;
+
private boolean myVerboseFlag = false;
private Object myTopLock = new Object();
@@ -124,6 +126,7 @@
Scope topScope,
boolean expandFlag,
+ boolean showTransformedFlag,
boolean verboseFlag) {
myArgs = args;
myProps = props;
@@ -135,6 +138,7 @@
myTopScope = topScope;
myExpandFlag = expandFlag;
+ myShowTransformedFlag = showTransformedFlag;
myVerboseFlag = verboseFlag;
}
@@ -155,6 +159,13 @@
/**
*
*/
+ public boolean getShowTransformed() {
+ return myShowTransformedFlag;
+ }
+
+ /**
+ *
+ */
public boolean getInteractive() {
return true;
}
@@ -207,6 +218,13 @@
/**
*
*/
+ public void setShowTransformed(boolean flag) {
+ myShowTransformedFlag = flag;
+ }
+
+ /**
+ *
+ */
public void setTopScope(Scope newScope) {
myTopScope = newScope;
}
@@ -276,8 +294,12 @@
interpPromise);
}
- boolean expandFlag = Interp.testProp(props, "e.interp.expand");
- boolean verboseFlag = Interp.testProp(props, "e.interp.verbose");
+ boolean expandFlag =
+ Interp.testProp(props, "e.interp.expand");
+ boolean showTransformedFlag =
+ Interp.testProp(props, "e.interp.show-transformed");
+ boolean verboseFlag =
+ Interp.testProp(props, "e.interp.verbose");
InteractiveInterp result = new InteractiveInterp();
result.setState(args,
@@ -290,6 +312,7 @@
optTopScope,
expandFlag,
+ showTransformedFlag,
verboseFlag);
interpResolver.resolve(result);
return result;
@@ -362,9 +385,14 @@
try {
if (myExpandFlag) {
myOuts.print("# expansion: ");
+ eExpr.lnPrintOn(myOuts.indent("# "));
+ myOuts.println();
+ myOuts.println();
+ }
+ if (myShowTransformedFlag) {
+ myOuts.print("# transform: ");
// HACK to see transformed source tree
EExpr.TheLastTransformed.lnPrintOn(myOuts.indent("# "));
- //eExpr.lnPrintOn(myOuts.indent("# "));
myOuts.println();
myOuts.println();
}
1.78 +18 -14 e/src/jsrc/org/erights/e/elang/interp/Interp.java
Index: Interp.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/interp/Interp.java,v
retrieving revision 1.77
retrieving revision 1.78
diff -u -r1.77 -r1.78
--- Interp.java 2001/11/17 18:25:54 1.77
+++ Interp.java 2001/12/02 05:32:05 1.78
@@ -114,22 +114,24 @@
/**
* Must call setState() to initialize. This allows subclassing.
*/
- /*package*/ Interp() {
+ /*package*/
+ Interp() {
}
/**
*
*/
- /*package*/ void setState(ConstList args,
- ConstMap props,
- TextWriter outs,
- TextWriter errs,
+ /*package*/
+ void setState(ConstList args,
+ ConstMap props,
+ TextWriter outs,
+ TextWriter errs,
- Runner runner,
- EParser parser,
- Scope topScope,
+ Runner runner,
+ EParser parser,
+ Scope topScope,
- boolean verboseFlag) {
+ boolean verboseFlag) {
myArgs = args;
myProps = props;
myOuts = outs;
@@ -696,17 +698,19 @@
long start = System.currentTimeMillis();
if (null == interp.interpret()) {
- printTime(start);
+ printTime(start, props);
System.exit(0);
} else {
- printTime(start);
+ printTime(start, props);
errorExit(errs, props);
}
}
- static private void
- printTime(long start) {
+ static private void printTime(long start, ConstMap props) {
long stop = System.currentTimeMillis();
- System.out.println("Run after initialization: " + (stop - start) + " ms");
+ if (testProp(props, "e.interp.print-timing")) {
+ System.err.println("Run after initialization: " +
+ (stop - start) + " ms");
+ }
}
}