[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");
+        }
     }
 }