Skip to content
Snippets Groups Projects
  1. Jul 26, 2005
  2. Jun 06, 2005
    • rtoy's avatar
      Fix CALL-METHOD used outside of emf from. · 0634baa7
      rtoy authored
      Fix from Gerd, cmucl-imp, 2005-06-04 for the following test:
      
          (define-method-combination mc ()
            ((primary () :required t))
            `(restart-case (call-method ,(first primary))
      	 ()))
      
          (defgeneric foo ()
            (:method-combination mc)
            (:method () nil))
      
          (foo)
      
          It turns out this is caused by RESTART-CASE macroexpanding its case
          expression, which it does to see if it starts with ERROR or similar.
          An ANSI thing, if I remember correctly.
      0634baa7
  3. Apr 02, 2004
  4. Mar 29, 2004
  5. Nov 05, 2003
    • gerd's avatar
      (defclass data () ((name :accessor name))) · 5a8847ea
      gerd authored
      	(defmethod name :before ((data data)))
      
      	(name (make-instance 'data))
      	 => too few args in a call to a method function
      
      	This is caused by standard-reader/writer methods having a
      	fast-function, but that's not the one that we should funcall if
      	pcl::*inline-methods-in-emfs* is true.  Use the fast-method-call
      	mechanism for such methods instead.
      
      	* src/pcl/combin.lisp (inlinable-method-p): New function.
      	(make-direct-calls): Removed.
      	(memf-test-converter): Add a local function method-key for
      	determining the function generator key.
      	(memf-code-converter): Add local functions make-call and
      	make-calls.  Generate direct calls if inlinable-method-p returns
      	true.
      5a8847ea
  6. Sep 05, 2003
  7. Aug 25, 2003
    • gerd's avatar
      Lazy signaling of errors because of invalid method qualifiers, · 2f40ed5a
      gerd authored
      	for ANSI compliance.
      
      	* src/pcl/defcombin.lisp (compute-effective-method):  If
      	*in-precompute-effective-methods-p*, generate an emf consisting of
      	a call to %invalid-qualifiers if there are such methods.
      
      	* src/pcl/combin.lisp (standard-compute-effective-method): Likewise.
      	(make-effective-method-lambda): Handle %invalid-qualifiers like
      	%no-primary-method.
      
      	* src/pcl/braid.lisp (%invalid-qualifiers): New function.
      	(invalid-qualifiers): New method.
      
      	* src/pcl/generic-functions.lisp (invalid-qualifiers): New gf.
      
      	* src/pcl/dfun.lisp (*max-emf-precomputation-methods*): Set to 100.
      
      	* src/docs/cmu-user/extensions.tex (Effective Method Precomputation):
      	Change description of *max-emf-precomputation-methods*.
      2f40ed5a
  8. May 30, 2003
    • gerd's avatar
      A generic function can have more than one name, via · e13a9dcb
      gerd authored
      	(SETF FDEFINITION), and it's possible to define methods with both
      	names.  Method functions are named with the name specified in
      	DEFMETHODS.  Methods metaobjects are unnamed.  Taking this all
      	together means that we must always use METHOD-FUNCTION-GET :NAME
      	to find out the name of a method function if we want to use it.
      
      	This showed up in gray-streams.lisp.  Found by Paul Werkowski.
      
      	* src/pcl/boot.lisp (method-function-name): Moved here from
      	combin.lisp; use method-function-get :name.
      
      	* src/pcl/combin.lisp (method-function-name): Move to boot.lisp.
      e13a9dcb
  9. May 28, 2003
    • gerd's avatar
      Support for inlineing of methods in effective methods. · 81a61aee
      gerd authored
      	* src-emf/docs/cmu-user/extensions.tex (Inlineing Methods in
      	Effective Methods): New subsection.
      
      	* src-emf/pcl/combin.lisp:
      	(method-function-name, make-direct-call, make-direct-calls)
      	(call-method-list-methods): New functions.
      	(memf-test-converter, memf-code-converter): Arrange for
      	generating funcalls instead of invoke- macros.
      
      	* src-emf/pcl/boot.lisp (*inline-methods-in-emfs*): New variable.
      	(expand-defmethod): If set, arrange for inlineing fast method
      	functions.
      
      	* src-emf/pcl/pkg.lisp ("PCL"): Export flush-emf-cache.
      
      	* src-emf/pcl/fngen.lisp (flush-emf-cache): New function.
      81a61aee
  10. May 25, 2003
    • gerd's avatar
      CLHS 7.6.5 keyword argument checking for calls to generic · 606c6835
      gerd authored
      	functions.  Found by Paul Dietz, of course.  This also includes
      	some minor code cleanup and a fix for a bug caused by a typo.
      
      	* src-gf/pcl/std-class.lisp
      	(compute-effective-slot-definition-initargs):
      	Reformatted to make it readable on a tty.
      
      	* src-gf/pcl/methods.lisp (set-condition-svuc-method): Fix a typo.
      
      	* src-gf/pcl/low.lisp (parse-lambda-list): Add an ignore
      	declaration.
      
      	* src-gf/pcl/init.lisp (valid-initargs): Use method-lambda-list*.
      
      	* src-gf/pcl/dfun.lisp (use-caching-dfun-p): Use
      	generic-function-methods*.
      	(use-constant-value-dfun-p): Ditto.
      	(use-dispatch-dfun-p): Don't use dispatching dfuns when we must
      	check keyword arguments according to CLHS 7.6.5, because this
      	computes emfs for sets methods that aren't applicable together in
      	the usual sense; this screws up emf keyword argument checking, of
      	course.
      	(make-initial-dfun): Use gf-arg-info*.
      	(update-dfun): Use generic-function-name*.
      	(final-accessor-dfun-type, make-accessor-table)
      	(compute-applicable-methods-using-types)
      	(compute-applicable-methods-using-types): Likewise.
      
      	* src-gf/pcl/combin.lisp (standard-compute-effective-method):
      	Don't use the single-call-method optimization if we must
      	check keyword arguments according to CLHS 7.6.5.
      	(callable-generator-for-emf): Rewritten to add a keyword
      	argument check to the emf.
      	(emfs-must-check-applicable-keywords-p)
      	(compute-applicable-keywords, check-applicable-keywords):
      	New functions.
      	(odd-number-of-keyword-arguments, invalid-keyword-argument):
      	Moved here from boot.lisp.
      	(make-effective-method-lambda): Add a check-applicable-keywords
      	form to the emf, if appropriate.
      	(memf-test-converter, memf-code-converter)
      	(memf-constant-converter): Deal with check-applicable-keywords.
      	(*applicable-methods*): New variable.
      	(make-callable): Bind it.
      	(make-emf-name): Use generic-function-name*.
      
      	* src/pcl/braid.lisp (ensure-non-standard-class): Remove
      	an used branch.
      
      	* src/pcl/boot.lisp (*make-method-lambda-gf-name*): Removed.
      	(expand-defmethod): Don't bind it.
      	(make-method-lambda-internal): Don't add &key to the method
      	function's lambda-list if the gf has &key.
      	(bind-args): Rewritten.  Don't do keyword checking as this is
      	done in emfs now.
      	(get-key-arg, get-key-arg1): Simplified; do less checking.
      	(generic-function-name*, generic-function-methods*)
      	(gf-arg-info*, method-lambda-list*): New functions.
      	(check-method-arg-info): Use them.
      	(gf-lambda-list-from-method): New function.
      	(gf-lambda-list): Use it.  Don't add &allow-other-keys to a
      	gf's lambda-list if a method has &key.
      	(get-generic-function-info): Use gf-arg-info*.
      	(parse-specialized-lambda-list): Add an ignore declaration.
      	(odd-number-of-keyword-arguments, invalid-keyword-argument):
      	Moved to combin.lisp.
      	(check-generic-function-lambda-list): Remove &more stuff
      	because that's checked elsewhere now (and Python can even
      	tell it is).
      
      	* src-gf/pcl/ctor.lisp (install-optimized-constructor): Remove
      	an unmatched ).
      606c6835
  11. May 04, 2003
    • gerd's avatar
      Code cleanup. Use EXTENSIONS package to reduce clutter. · 4e0d7ca0
      gerd authored
      	* src/pcl/defsys.lisp ("PCL", "WALKER"): Use ext.
      	* src/pcl/pkg.lisp ("PCL", "WALKER"): Use ext.
      	* src/pcl/*.lisp: Remove ext: prefixes.
      
      	* src/pcl/low.lisp (symbolicate*): Renamed from symbolicate.
      	* src/pcl/std-class.lisp (shared-initialize):
      	* src/pcl/defs.lisp (get-built-in-class-symbol)
      	(get-built-in-wrapper-symbol):
      	* src/pcl/braid.lisp (initial-classes-and-wrappers)
      	(bootstrap-meta-braid): Use symbolicate*.
      
      	* src/pcl/macros.lisp (dolist-carefully): Removed.
      	(true, false, zero): Moved to defclass.lisp.
      	(printing-random-thing-internal): Removed.
      	(printing-random-thing): Removed.
      	(rassq): Removed.
      	(*keyword-package*): Removed.
      	(make-keyword): Removed; import from cl.
      	(memq, delq, assq): Macros removed, import from ext.
      	(get-declaration): Moved to boot.lisp, where it's used.
      
      	* src/pcl/boot.lisp (get-declaration): Moved here from
      	macros.lisp.
      
      	* src/pcl/methods.lisp (named-object-print-function, print-object):
      	* src/pcl/low.lisp (print-std-instance):
      	* src/pcl/dfun.lisp (print-dfun-info):
      	* src/pcl/cache.lisp (print-cache, print-wrapper):
      	* src/pcl/boot.lisp (make-early-gf):
      	Use print-unreadable-object instead of printing-random-thing.
      
      	* src/pcl/defclass.lisp (true, false, zero): Moved here from
      	macros.lisp.
      
      	* src/pcl/methods.lisp (legal-qualifiers-p)
      	(legal-specializers-p): Use dolist.
      4e0d7ca0
  12. Mar 22, 2003
    • gerd's avatar
      * bootfiles/18e/boot[12].lisp: Bootstrap files for the lisp:class · a1e3ed93
      gerd authored
      = pcl:class part.  To get it booted from 18e, cross-compile using
      boot1.lisp as bootstrap.lisp in pmai's build scripts, then do a
      normal compile with boot2.lisp as bootstrap.lisp with the
      resulting Lisp.
      
      * code/byte-interp.lisp, code/defstruct.lisp, code/describe.lisp:
      * code/error.lisp, code/exports.lisp, code/hash-new.lisp:
      * code/hash.lisp, code/macros.lisp, code/misc.lisp:
      * code/package.lisp, code/pred.lisp, code/sharpm.lisp, code/type.lisp:
      * compiler/dump.lisp, compiler/fndb.lisp, compiler/globaldb.lisp:
      * compiler/proclaim.lisp, compiler/typetran.lisp, compiler/xref.lisp:
      * compiler/generic/primtype.lisp, compiler/generic/vm-type.lisp:
      Changes for to use kernel::class etc.
      
      * code/class.lisp (toplevel): Shadow class, built-in-class etc.
      (class): Give it conc-name %class-.
      (toplevel) [#+bootstrap-lisp-class=pcl-class]: Define old accessors.
      (everywhere): Use new class accessors.
      
      * compiler/generic/vm-fndb.lisp (%make-instance): Change from
      unsafe to flushable and movable.
      
      * code/ntrace.lisp (expand-trace, untrace): Changes for method
      tracing.
      
      * code/profile.lisp (profile, profile-all, unprofile): Method
      profiling.
      
      * pcl/*.text, pcl/bench.lisp, pcl/extensions.lisp:
      * pcl/fast-init.lisp, pcl/precom1.lisp, pcl/precom4.lisp:
      * pcl/structure-class.lisp, pcl/user-instances.lisp:
      Removed.
      
      * tools/pclcom.lisp: Changes for my PCL and lisp:class =
      pcl::class.
      a1e3ed93
  13. Jan 03, 2003
    • pmai's avatar
      Entomotomy Bug: define-method-combination-arguments-broken · 24ef6882
      pmai authored
      Updated the fix for the broken handling of the :arguments option to
      define-method-combination to Gerd Moellmann's latest patch.  Also
      includes various indentation fixes and a smallish documentation/comment fix.
      24ef6882
  14. Dec 18, 2002
  15. Aug 26, 2002
    • pmai's avatar
      Huge patch by Gerd Moellmann that removes PCL::ITERATE and PCL::GATHER* · 57eae931
      pmai authored
      in favor of normal CL constructs.  In a similar vein to SBCL, this patch
      also replaces all uses of #'(lambda ...) by just (lambda ...), and
      removes now-dated looking quotes in front of self-evaluating objects,
      like keywords and t/nil.  The patch has been slightly frobbed by me,
      to correct a couple of slight oversights, and make more effective use
      of the loop facility in a number of places.
      57eae931
  16. Apr 25, 2001
  17. May 30, 1999
  18. Dec 20, 1998
  19. Jan 22, 1998
    • pw's avatar
      While loading an :around method when no primary method exists, a compiler · af4895f0
      pw authored
      warning like ".ARG0. is defined but not used" was being emitted. Turns
      out that in such a case PCL generates an effective-method consisting
      of (error "No primary method for ...") or some such, thus ignoring
      the user method and not passing the supplied arguments to error. This
      change checks for the above case and inserts an ignorable declaration
      for the method arguments.
      af4895f0
  20. Feb 11, 1994
  21. Jan 13, 1993
  22. Jan 12, 1993
  23. Nov 09, 1992
  24. Aug 01, 1992
  25. Jun 01, 1992
  26. Oct 19, 1991
  27. Aug 12, 1990
Loading