[armedbear-cvs] r12456 - trunk/abcl/src/org/armedbear/lisp

Ville Voutilainen vvoutilainen at common-lisp.net
Sat Feb 13 15:28:46 UTC 2010


Author: vvoutilainen
Date: Sat Feb 13 10:28:44 2010
New Revision: 12456

Log:
Stack-friendly SpecialOperators.


Modified:
   trunk/abcl/src/org/armedbear/lisp/SpecialOperators.java

Modified: trunk/abcl/src/org/armedbear/lisp/SpecialOperators.java
==============================================================================
--- trunk/abcl/src/org/armedbear/lisp/SpecialOperators.java	(original)
+++ trunk/abcl/src/org/armedbear/lisp/SpecialOperators.java	Sat Feb 13 10:28:44 2010
@@ -40,9 +40,13 @@
 public final class SpecialOperators
 {
   // ### quote
-  private static final SpecialOperator QUOTE =
-    new SpecialOperator(Symbol.QUOTE, "thing")
-    {
+  private static final SpecialOperator QUOTE = new sf_quote();
+  private static final class sf_quote extends SpecialOperator {
+      sf_quote()
+      {
+        super(Symbol.QUOTE, "thing");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 
@@ -54,9 +58,13 @@
     };
 
   // ### if
-  private static final SpecialOperator IF =
-    new SpecialOperator(Symbol.IF, "test then &optional else")
-    {
+  private static final SpecialOperator IF = new sf_if();
+  private static final class sf_if extends SpecialOperator {
+      sf_if()
+      {
+        super(Symbol.IF, "test then &optional else");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 
@@ -84,9 +92,13 @@
     };
 
   // ### let
-  private static final SpecialOperator LET =
-    new SpecialOperator(Symbol.LET, "bindings &body body")
-    {
+  private static final SpecialOperator LET = new sf_let();
+  private static final class sf_let extends SpecialOperator {
+      sf_let()
+      {
+        super(Symbol.LET, "bindings &body body");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 
@@ -98,9 +110,13 @@
     };
 
   // ### let*
-  private static final SpecialOperator LET_STAR =
-    new SpecialOperator(Symbol.LET_STAR, "bindings &body body")
-    {
+  private static final SpecialOperator LET_STAR = new sf_let_star();
+  private static final class sf_let_star extends SpecialOperator {
+      sf_let_star()
+      {
+        super(Symbol.LET_STAR, "bindings &body body");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 
@@ -173,9 +189,13 @@
   }
 
   // ### symbol-macrolet
-  private static final SpecialOperator SYMBOL_MACROLET =
-    new SpecialOperator(Symbol.SYMBOL_MACROLET, "macrobindings &body body")
-    {
+  private static final SpecialOperator SYMBOL_MACROLET = new sf_symbol_macrolet();
+  private static final class sf_symbol_macrolet extends SpecialOperator {
+      sf_symbol_macrolet()
+      {
+        super(Symbol.SYMBOL_MACROLET, "macrobindings &body body");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 
@@ -223,10 +243,14 @@
     };
 
   // ### load-time-value form &optional read-only-p => object
-  private static final SpecialOperator LOAD_TIME_VALUE =
-    new SpecialOperator(Symbol.LOAD_TIME_VALUE,
-                        "form &optional read-only-p")
-    {
+  private static final SpecialOperator LOAD_TIME_VALUE = new sf_load_time_value();
+  private static final class sf_load_time_value extends SpecialOperator {
+      sf_load_time_value()
+      {
+        super(Symbol.LOAD_TIME_VALUE,
+                        "form &optional read-only-p");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 
@@ -244,9 +268,13 @@
     };
 
   // ### locally
-  private static final SpecialOperator LOCALLY =
-    new SpecialOperator(Symbol.LOCALLY, "&body body")
-    {
+  private static final SpecialOperator LOCALLY = new sf_locally();
+  private static final class sf_locally extends SpecialOperator {
+      sf_locally()
+      {
+        super(Symbol.LOCALLY, "&body body");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 
@@ -259,9 +287,13 @@
     };
 
   // ### progn
-  private static final SpecialOperator PROGN =
-    new SpecialOperator(Symbol.PROGN, "&rest forms")
-    {
+  private static final SpecialOperator PROGN = new sf_progn();
+  private static final class sf_progn extends SpecialOperator {
+      sf_progn()
+      {
+        super(Symbol.PROGN, "&rest forms");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 
@@ -272,9 +304,13 @@
     };
 
   // ### flet
-  private static final SpecialOperator FLET =
-    new SpecialOperator(Symbol.FLET, "definitions &body body")
-    {
+  private static final SpecialOperator FLET = new sf_flet();
+  private static final class sf_flet extends SpecialOperator {
+      sf_flet()
+      {
+        super(Symbol.FLET, "definitions &body body");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 
@@ -284,9 +320,13 @@
     };
 
   // ### labels
-  private static final SpecialOperator LABELS =
-    new SpecialOperator(Symbol.LABELS, "definitions &body body")
-    {
+  private static final SpecialOperator LABELS = new sf_labels();
+  private static final class sf_labels extends SpecialOperator {
+      sf_labels()
+      {
+        super(Symbol.LABELS, "definitions &body body");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 
@@ -364,9 +404,13 @@
   }
 
   // ### the value-type form => result*
-  private static final SpecialOperator THE =
-    new SpecialOperator(Symbol.THE, "type value")
-    {
+  private static final SpecialOperator THE = new sf_the();
+  private static final class sf_the extends SpecialOperator {
+      sf_the()
+      {
+        super(Symbol.THE, "type value");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 
@@ -399,9 +443,13 @@
     };
 
   // ### progv
-  private static final SpecialOperator PROGV =
-    new SpecialOperator(Symbol.PROGV, "symbols values &body body")
-    {
+  private static final SpecialOperator PROGV = new sf_progv();
+  private static final class sf_progv extends SpecialOperator {
+      sf_progv()
+      {
+        super(Symbol.PROGV, "symbols values &body body");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 
@@ -427,9 +475,13 @@
     };
 
   // ### declare
-  private static final SpecialOperator DECLARE =
-    new SpecialOperator(Symbol.DECLARE, "&rest declaration-specifiers")
-    {
+  private static final SpecialOperator DECLARE = new sf_declare();
+  private static final class sf_declare extends SpecialOperator {
+      sf_declare()
+      {
+        super(Symbol.DECLARE, "&rest declaration-specifiers");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 
@@ -439,9 +491,13 @@
     };
 
   // ### function
-  private static final SpecialOperator FUNCTION =
-    new SpecialOperator(Symbol.FUNCTION, "thing")
-    {
+  private static final SpecialOperator FUNCTION = new sf_function();
+  private static final class sf_function extends SpecialOperator {
+      sf_function()
+      {
+        super(Symbol.FUNCTION, "thing");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 
@@ -497,9 +553,13 @@
     };
 
   // ### setq
-  private static final SpecialOperator SETQ =
-    new SpecialOperator(Symbol.SETQ, "&rest vars-and-values")
-    {
+  private static final SpecialOperator SETQ = new sf_setq();
+  private static final class sf_setq extends SpecialOperator {
+      sf_setq()
+      {
+        super(Symbol.SETQ, "&rest vars-and-values");
+      }
+	
       @Override
       public LispObject execute(LispObject args, Environment env)
 




More information about the armedbear-cvs mailing list