Changeset 12181


Ignore:
Timestamp:
10/09/09 20:38:25 (12 years ago)
Author:
ehuelsmann
Message:

Prevent nested compilation of CLOS generated methods.

This prevents recursive compilation of the same method
while it's already being compiled.

Location:
trunk/abcl/src/org/armedbear/lisp
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/Primitives.java

    r12170 r12181  
    14501450    };
    14511451
     1452  /** Stub to be replaced later when signal.lisp has been loaded. */
    14521453  // ### error
    14531454  private static final Primitive ERROR =
     
    14671468        //###FIXME: Bail out, but do it nicer...
    14681469        System.exit(1);
     1470        return NIL;
     1471      }
     1472    };
     1473
     1474  /** Stub replaced when compiler-pass2.lisp has been loaded */
     1475  // ### autocompile
     1476  private static final Primitive AUTOCOMPILE =
     1477    new Primitive(Symbol.AUTOCOMPILE, "function")
     1478    {
     1479      @Override
     1480      public LispObject execute(LispObject function) throws ConditionThrowable
     1481      {
    14691482        return NIL;
    14701483      }
  • trunk/abcl/src/org/armedbear/lisp/Symbol.java

    r12124 r12181  
    29442944
    29452945  // External symbols in SYSTEM package.
     2946  public static final Symbol _ENABLE_AUTOCOMPILE_ =
     2947    PACKAGE_SYS.addExternalSymbol("*ENABLE-AUTOCOMPILE*");
     2948  public static final Symbol AUTOCOMPILE =
     2949    PACKAGE_SYS.addExternalSymbol("AUTOCOMPILE");
    29462950  public static final Symbol ENVIRONMENT =
    29472951    PACKAGE_SYS.addExternalSymbol("ENVIRONMENT");
  • trunk/abcl/src/org/armedbear/lisp/clos.lisp

    r12179 r12181  
    13361336                   nil))))))
    13371337
    1338     (when (and (fboundp 'compile)
     1338    (when (and (fboundp 'autocompile)
    13391339               (not (autoloadp 'compile)))
    1340       (setf code (or (compile nil code) code)))
     1340      (setf code (or (autocompile code) code)))
    13411341
    13421342    code))
     
    15361536                                            `(funcall ,(%method-function primary) args nil))
    15371537                                          primaries)))))))))
    1538     (or (ignore-errors (compile nil emf-form))
     1538    (or (ignore-errors (autocompile emf-form))
    15391539        (coerce-to-function emf-form))))
    15401540
     
    17541754                                                   :function (if (autoloadp 'compile)
    17551755                                                                 method-function
    1756                                                                  (compile nil method-function))
     1756                                                                 (autocompile method-function))
    17571757                                                   :fast-function (if (autoloadp 'compile)
    17581758                                                                      fast-function
    1759                                                                       (compile nil fast-function))
     1759                                                                      (autocompile fast-function))
    17601760                                                   :slot-name slot-name)))
    17611761        (%add-method gf method)
     
    17791779                   :function (if (autoloadp 'compile)
    17801780                                 method-function
    1781                                  (compile nil method-function))
     1781                                 (autocompile method-function))
    17821782                   :fast-function (if (autoloadp 'compile)
    17831783                                      fast-function
    1784                                       (compile nil fast-function))
     1784                                      (autocompile fast-function))
    17851785                   )))
    17861786
  • trunk/abcl/src/org/armedbear/lisp/compiler-pass2.lisp

    r12180 r12181  
    87598759
    87608760
     8761(defun sys:autocompile (function)
     8762  (when sys:*enable-autocompile*
     8763    (let ((sys:*enable-autocompile* nil))
     8764      (values (compile nil function)))))
     8765
     8766(setf sys:*enable-autocompile* t)
     8767
    87618768(provide "COMPILER-PASS2")
Note: See TracChangeset for help on using the changeset viewer.