ViewVC logotype

Log of /src/pcl/combin.lisp

Parent Directory Parent Directory | Revision Log Revision Log

Links to HEAD: (view) (annotate)
Links to snapshot-2011-06: (view) (annotate)
Sticky Tag:

Revision 1.26 - (view) (annotate) - [select for diffs]
Fri Mar 19 15:19:03 2010 UTC (4 years, 1 month ago) by rtoy
Branch: MAIN
CVS Tags: GIT-CONVERSION, HEAD, RELEASE_20b, cross-sol-x86-2010-12-20, cross-sol-x86-base, cross-sol-x86-merged, cross-sparc-branch-base, post-merge-intl-branch, release-20b-pre1, release-20b-pre2, snapshot-2010-04, snapshot-2010-05, snapshot-2010-06, snapshot-2010-07, snapshot-2010-08, snapshot-2010-11, snapshot-2010-12, snapshot-2011-01, snapshot-2011-02, snapshot-2011-03, snapshot-2011-04, snapshot-2011-06, snapshot-2011-07, snapshot-2011-09, sparc-tramp-assem-2010-07-19, sparc-tramp-assem-base
Branch point for: RELEASE-20B-BRANCH, cross-sol-x86-branch, cross-sparc-branch, sparc-tramp-assem-branch
Changes since 1.25: +10 -9 lines
Diff to previous 1.25
Merge intl-branch 2010-03-18 to HEAD.  To build, you need to use
boot-2010-02-1 as the bootstrap file.  You should probably also use
the new -P option for build.sh to generate and update the po files
while building.

Revision 1.25 - (view) (annotate) - [select for diffs]
Tue Jul 26 13:18:21 2005 UTC (8 years, 8 months ago) by rtoy
Branch: MAIN
CVS Tags: RELEASE_19f, RELEASE_20a, amd64-dd-start, double-double-array-base, double-double-array-checkpoint, double-double-base, double-double-init-%make-sparc, double-double-init-checkpoint-1, double-double-init-ppc, double-double-init-sparc, double-double-init-sparc-2, double-double-init-x86, double-double-irrat-end, double-double-irrat-start, double-double-reader-base, double-double-reader-checkpoint-1, double-double-sparc-checkpoint-1, intl-2-branch-base, intl-branch-base, label-2009-03-16, label-2009-03-25, merge-sse2-packed, merge-with-19f, merged-unicode-utf16-extfmt-2009-06-11, portable-clx-base, portable-clx-import-2009-06-16, pre-merge-intl-branch, pre-telent-clx, release-19c, release-19c-base, release-19c-pre1, release-19d, release-19d-base, release-19d-pre1, release-19d-pre2, release-19e, release-19e-base, release-19e-pre1, release-19e-pre2, release-19f-base, release-19f-pre1, release-20a-base, release-20a-pre1, snapshot-2005-08, snapshot-2005-09, snapshot-2005-10, snapshot-2005-11, snapshot-2005-12, snapshot-2006-01, snapshot-2006-02, snapshot-2006-03, snapshot-2006-04, snapshot-2006-05, snapshot-2006-06, snapshot-2006-07, snapshot-2006-08, snapshot-2006-09, snapshot-2006-10, snapshot-2006-11, snapshot-2006-12, snapshot-2007-01, snapshot-2007-02, snapshot-2007-03, snapshot-2007-04, snapshot-2007-05, snapshot-2007-06, snapshot-2007-07, snapshot-2007-08, snapshot-2007-09, snapshot-2007-10, snapshot-2007-11, snapshot-2007-12, snapshot-2008-01, snapshot-2008-02, snapshot-2008-03, snapshot-2008-04, snapshot-2008-05, snapshot-2008-06, snapshot-2008-07, snapshot-2008-08, snapshot-2008-09, snapshot-2008-10, snapshot-2008-11, snapshot-2008-12, snapshot-2009-01, snapshot-2009-02, snapshot-2009-04, snapshot-2009-05, snapshot-2009-07, snapshot-2009-08, snapshot-2009-11, snapshot-2009-12, snapshot-2010-01, snapshot-2010-02, snapshot-2010-03, sse2-base, sse2-checkpoint-2008-10-01, sse2-merge-with-2008-10, sse2-merge-with-2008-11, sse2-packed-2008-11-12, sse2-packed-base, unicode-snapshot-2009-05, unicode-snapshot-2009-06, unicode-string-buffer-base, unicode-string-buffer-impl-base, unicode-utf16-base, unicode-utf16-char-support-2009-03-25, unicode-utf16-char-support-2009-03-26, unicode-utf16-extfmt-2009-03-27, unicode-utf16-extfmt-2009-06-11, unicode-utf16-extfmts-pre-sync-2008-11, unicode-utf16-extfmts-sync-2008-12, unicode-utf16-string-support, unicode-utf16-sync-2008-07, unicode-utf16-sync-2008-09, unicode-utf16-sync-2008-11, unicode-utf16-sync-2008-12, unicode-utf16-sync-label-2009-03-16
Branch point for: RELEASE-19F-BRANCH, RELEASE-20A-BRANCH, amd64-dd-branch, double-double-array-branch, double-double-branch, double-double-reader-branch, intl-2-branch, intl-branch, portable-clx-branch, release-19c-branch, release-19d-branch, release-19e-branch, sse2-branch, sse2-packed-branch, unicode-string-buffer-branch, unicode-string-buffer-impl-branch, unicode-utf16-branch, unicode-utf16-extfmt-branch
Changes since 1.24: +2 -2 lines
Diff to previous 1.24
Fix typo in error message.

Revision 1.24 - (view) (annotate) - [select for diffs]
Mon Jun 6 14:32:23 2005 UTC (8 years, 10 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2005-07
Changes since 1.23: +5 -2 lines
Diff to previous 1.23
Fix CALL-METHOD used outside of emf from.

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))


    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.

Revision 1.23 - (view) (annotate) - [select for diffs]
Fri Apr 2 15:24:02 2004 UTC (10 years ago) by rtoy
Branch: MAIN
CVS Tags: amd64-merge-start, mod-arith-base, ppc_gencgc_snap_2005-05-14, prm-before-macosx-merge-tag, release-19a, release-19a-base, release-19a-pre1, release-19a-pre2, release-19a-pre3, release-19b-base, release-19b-pre1, snapshot-2004-04, snapshot-2004-05, snapshot-2004-06, snapshot-2004-07, snapshot-2004-08, snapshot-2004-09, snapshot-2004-10, snapshot-2004-11, snapshot-2004-12, snapshot-2005-01, snapshot-2005-02, snapshot-2005-03, snapshot-2005-04, snapshot-2005-05, snapshot-2005-06
Branch point for: mod-arith-branch, ppc_gencgc_branch, release-19a-branch, release-19b-branch
Changes since 1.22: +2 -2 lines
Diff to previous 1.22
Fix typo.  Need a quote on .call-method.

Revision 1.22 - (view) (annotate) - [select for diffs]
Mon Mar 29 23:39:38 2004 UTC (10 years ago) by rtoy
Branch: MAIN
Changes since 1.21: +8 -8 lines
Diff to previous 1.21
Fix PCL call-method-list problem reported by Ole Rohne on cmucl-imp.
Patch from Ole, very slightly modified.

Revision 1.21 - (view) (annotate) - [select for diffs]
Wed Nov 5 17:01:18 2003 UTC (10 years, 5 months ago) by gerd
Branch: MAIN
CVS Tags: snapshot-2003-12
Changes since 1.20: +79 -81 lines
Diff to previous 1.20
	(defclass data () ((name :accessor name)))
	(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

Revision 1.20 - (view) (annotate) - [select for diffs]
Fri Sep 5 23:03:36 2003 UTC (10 years, 7 months ago) by gerd
Branch: MAIN
CVS Tags: snapshot-2003-10, snapshot-2003-11
Changes since 1.19: +3 -3 lines
Diff to previous 1.19
	* src/pcl/methods.lisp (reinitialize-instance): Remove
	unmatched parenthesis.

	* src/pcl/combin.lisp (standard-compute-effective-method): Remove
	an ignore declaration, add a special declaration.

Revision 1.19 - (view) (annotate) - [select for diffs]
Mon Aug 25 20:10:41 2003 UTC (10 years, 7 months ago) by gerd
Branch: MAIN
CVS Tags: lisp-executable-base
Branch point for: lisp-executable
Changes since 1.18: +58 -57 lines
Diff to previous 1.18
	Lazy signaling of errors because of invalid method qualifiers,
	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

	* 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*.

Revision 1.18 - (view) (annotate) - [select for diffs]
Fri May 30 09:14:34 2003 UTC (10 years, 10 months ago) by gerd
Branch: MAIN
CVS Tags: dynamic-extent-base, sparc_gencgc, sparc_gencgc_merge
Branch point for: dynamic-extent, sparc_gencgc_branch
Changes since 1.17: +3 -14 lines
Diff to previous 1.17
	A generic function can have more than one name, via
	(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.

Revision 1.17 - (view) (annotate) - [select for diffs]
Wed May 28 10:41:47 2003 UTC (10 years, 10 months ago) by gerd
Branch: MAIN
Changes since 1.16: +113 -32 lines
Diff to previous 1.16
	Support for inlineing of methods in effective methods.

	* 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

	* src-emf/pcl/pkg.lisp ("PCL"): Export flush-emf-cache.

	* src-emf/pcl/fngen.lisp (flush-emf-cache): New function.

Revision 1.16 - (view) (annotate) - [select for diffs]
Sun May 25 14:33:50 2003 UTC (10 years, 10 months ago) by gerd
Branch: MAIN
Changes since 1.15: +156 -28 lines
Diff to previous 1.15
	CLHS 7.6.5 keyword argument checking for calls to generic
	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
	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

	* src-gf/pcl/init.lisp (valid-initargs): Use method-lambda-list*.

	* src-gf/pcl/dfun.lisp (use-caching-dfun-p): Use
	(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
	(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): 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.
	(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 ).

Revision 1.15 - (view) (annotate) - [select for diffs]
Sun May 4 13:11:22 2003 UTC (10 years, 11 months ago) by gerd
Branch: MAIN
Changes since 1.14: +2 -2 lines
Diff to previous 1.14
	Code cleanup.  Use EXTENSIONS package to reduce clutter.

	* 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)
	* 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

	* 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

	* src/pcl/methods.lisp (legal-qualifiers-p)
	(legal-specializers-p): Use dolist.

Revision 1.14 - (view) (annotate) - [select for diffs]
Sat Mar 22 16:15:17 2003 UTC (11 years, 1 month ago) by gerd
Branch: MAIN
CVS Tags: remove_negative_zero_not_zero
Changes since 1.13: +434 -379 lines
Diff to previous 1.13
* bootfiles/18e/boot[12].lisp: Bootstrap files for the lisp:class
= 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

* code/profile.lisp (profile, profile-all, unprofile): Method

* 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:

* tools/pclcom.lisp: Changes for my PCL and lisp:class =

Revision 1.13 - (view) (annotate) - [select for diffs]
Fri Jan 3 18:50:23 2003 UTC (11 years, 3 months ago) by pmai
Branch: MAIN
CVS Tags: cold-pcl-base, release-18e, release-18e-base, release-18e-pre1, release-18e-pre2
Branch point for: cold-pcl, release-18e-branch
Changes since 1.12: +26 -10 lines
Diff to previous 1.12
Entomotomy Bug: define-method-combination-arguments-broken

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.

Revision 1.12 - (view) (annotate) - [select for diffs]
Wed Dec 18 19:16:28 2002 UTC (11 years, 4 months ago) by pmai
Branch: MAIN
Changes since 1.11: +25 -11 lines
Diff to previous 1.11
Entomotomy Bug: pcl-error-reporting-unhelpful-on-missing-primary-method

Merged patches and ideas by Gerd Moellmann and Christophe Rhodes to improve
error reporting on missing applicable primary methods for standard method-
combination to report the arguments that were passed to the GF in question.

Revision 1.11 - (view) (annotate) - [select for diffs]
Mon Aug 26 02:23:11 2002 UTC (11 years, 7 months ago) by pmai
Branch: MAIN
Branch point for: UNICODE-BRANCH
Changes since 1.10: +67 -67 lines
Diff to previous 1.10
Huge patch by Gerd Moellmann that removes PCL::ITERATE and PCL::GATHER*
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.

Revision 1.10 - (view) (annotate) - [select for diffs]
Wed Apr 25 21:44:51 2001 UTC (12 years, 11 months ago) by pmai
Branch: MAIN
Changes since 1.9: +36 -16 lines
Diff to previous 1.9
  by fixing bootstrapping problems with the disabled around method of
  COMPUTE-EFFECTIVE-METHOD, and reinstating it.
o Added stricter error checking for standard method combination.

Revision 1.9 - (view) (annotate) - [select for diffs]
Sun May 30 23:13:54 1999 UTC (14 years, 10 months ago) by pw
Branch: MAIN
Changes since 1.8: +2 -2 lines
Diff to previous 1.8
Remove all #+ and #- conditionals from the source code. What is left
is essentially Common Lisp except for explicit references to things
in CMUCL specific packages.

Revision 1.8 - (view) (annotate) - [select for diffs]
Sun Dec 20 04:30:17 1998 UTC (15 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.7: +4 -0 lines
Diff to previous 1.7
Add CMUCL style file-comments; from Peter Van Eynde.

Revision 1.7 - (view) (annotate) - [select for diffs]
Thu Jan 22 12:32:52 1998 UTC (16 years, 2 months ago) by pw
Branch: MAIN
Changes since 1.6: +8 -3 lines
Diff to previous 1.6
While loading an :around method when no primary method exists, a compiler
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.

Revision 1.6 - (view) (annotate) - [select for diffs]
Tue Jan 12 18:23:29 1993 UTC (21 years, 3 months ago) by phg
Branch: MAIN
Branch point for: RELENG_18
Changes since 1.5: +1 -1 lines
Diff to previous 1.5
September-16-92-PCL-e has been incorporated into the CMUCL sources thanks
to Rick Harris.

Revision 1.5 - (view) (annotate) - [select for diffs]
Mon Nov 9 15:18:26 1992 UTC (21 years, 5 months ago) by ram
Branch: MAIN
Changes since 1.4: +281 -221 lines
Diff to previous 1.4
This is September 92 PCL.

Revision 1.4 - (view) (annotate) - [select for diffs]
Sat Aug 1 15:28:21 1992 UTC (21 years, 8 months ago) by ram
Branch: MAIN
Changes since 1.3: +30 -19 lines
Diff to previous 1.3
This is July 92 PCL

Revision 1.3 - (view) (annotate) - [select for diffs]
Mon Jun 1 18:37:35 1992 UTC (21 years, 10 months ago) by ram
Branch: MAIN
Changes since 1.2: +136 -78 lines
Diff to previous 1.2
This is March-92-PCL-2a.

Revision 1.2 - (view) (annotate) - [select for diffs]
Sat Oct 19 17:21:59 1991 UTC (22 years, 6 months ago) by ram
Branch: MAIN
Changes since 1.1: +1 -0 lines
Diff to previous 1.1
Merged with latest PCL version.

Revision 1.1 - (view) (annotate) - [select for diffs]
Sun Aug 12 03:46:05 1990 UTC (23 years, 8 months ago) by wlott
Branch: MAIN
Initial revision

This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.

  Diffs between and
  Type of Diff should be a

Sort log by:

  ViewVC Help
Powered by ViewVC 1.1.5