Skip to content
Snippets Groups Projects
  1. 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
    • gerd's avatar
      For-arithmetic is allowed on NUMBERs. Found by Paul Dietz. · 808e32b6
      gerd authored
      	* src/code/loop.lisp (loop-for-arithmetic): Use type number
      	instead of real.
      808e32b6
    • gerd's avatar
      Structure slot names can be any symbol. Found by Paul Dietz. · 3bbc7259
      gerd authored
      	* src/pcl/std-class.lisp (*allow-funny-slot-names*): Renamed
      	from *allow-keyword-slot-names*.
      
      	* src/pcl/methods.lisp (legal-slot-name-p): Allow any symbol
      	if *allow-funny-slot-names* is true.
      	(shared-initialize): Print the value of the :slot-name initarg.
      
      	* src/code/defstruct.lisp (parse-1-dsd): Treat nil as symbol
      	when used as a slot name.
      3bbc7259
  2. May 27, 2003
  3. May 26, 2003
  4. May 25, 2003
    • gerd's avatar
      * src/pcl/cache.lisp (with-local-cache-functions): Add a reference · 6de448f9
      gerd authored
      	to invalid-wrapper-p to get rid of compiler notes.
      6de448f9
    • gerd's avatar
      * src-gf/pcl/methods.lisp (function-keywords): Use · e42371af
      gerd authored
      	method-lambda-list instead of method-lambda-list* because
      	the method can't be an early method at this point.
      e42371af
    • gerd's avatar
      * src-gf/pcl/boot.lisp (invoke-effective-method-function): Add · e304f5f0
      gerd authored
      	an inhibit-warnings.  See the comment there for the reason.
      e304f5f0
    • gerd's avatar
      *** empty log message *** · c0905f06
      gerd authored
      c0905f06
    • 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
  5. May 24, 2003
  6. May 23, 2003
    • gerd's avatar
    • gerd's avatar
      Add fwrappers. Rewrite TRACE and PROFILE to use fwrappers. · 5f74af19
      gerd authored
      	To bootstrap, use boot12.lisp with pmai's scripts.
      
      	* src/bootfiles/18e/boot12.lisp: New file.
      
      	* src/tools/worldload.lisp, src/tools/worldcom.lisp:
      	* src/tools/worldbuild.lisp: Add code:fwrappers.
      
      	* src/docs/cmu-user/extensions.tex (Function Wrappers):
      	New section.
      
      	* src/code/fwrappers.lisp: New file.
      
      	* src-fw/pcl/defs.lisp (gdefinition): Don't check for profiled
      	functions.
      
      	* src-fw/code/exports.lisp: Add walker and fwrappers.
      
      	* src-fw/code/fdefinition.lisp (fdefn-init): Set
      	*valid-function-names* to nil.
      	(encapsulation): Structure removed.
      	(do-encapsulations, encapsulation, last-encapsulation)
      	(push-encapsulation, encapsulate, unencapsulate, encapsulated-p):
      	Removed.  There is a compatibility layer in fwrappers.lisp.
      	(fdefinition, %set-fdefinition): Rewritten.
      
      	* src/code/profile.lisp: Remove #+cmu and #-cmu.
      	("PROFILE"): Use fwrappers.
      	(*profile-info*): Removed.
      	(profile-info): Redefined.
      	(*existing-encapsulations*): Removed.
      	(reset-profile-info, profile-info-profiling-values): New functions.
      	(make-profile-encapsulation): Removed.
      	(profile): New function name syntax.
      	(make-profile-fwrapper-name, make-profile-fwrapper): New functions.
      	(def-profile-fwrapper): Precompute some fwrappers.
      	(ensure-profile-fwrapper, find-profile-fwrapper, pi-or-lose):
      	New functions.
      	(profile-1-function): Rewritten.
      	(unprofile-1-function): Ditto.
      	(re-profile-redefined-function): New function.
      	(toplevel): Push it on *setf-fdefinition-hook*.
      
      	* src/code/ntrace.lisp (trace-call): Removed.
      	(trace-fwrapper): New fwrapper.
      	(trace-1): Use fwrap instead of encapsulate.
      	(untrace-1): Use funwrap instead of unencapsulate.
      5f74af19
    • gerd's avatar
      Add fwrappers. Rewrite TRACE and PROFILE to use fwrappers. · e9211546
      gerd authored
      	To bootstrap, use boot12.lisp with pmai's scripts.
      
      	* src/bootfiles/18e/boot12.lisp: New file.
      
      	* src/tools/worldload.lisp, src/tools/worldcom.lisp:
      	* src/tools/worldbuild.lisp: Add code:fwrappers.
      
      	* src/docs/cmu-user/extensions.tex (Function Wrappers):
      	New section.
      
      	* src/code/fwrappers.lisp: New file.
      
      	* src-fw/pcl/defs.lisp (gdefinition): Don't check for profiled
      	functions.
      
      	* src-fw/code/exports.lisp: Add walker and fwrappers.
      
      	* src-fw/code/fdefinition.lisp (fdefn-init): Set
      	*valid-function-names* to nil.
      	(encapsulation): Structure removed.
      	(do-encapsulations, encapsulation, last-encapsulation)
      	(push-encapsulation, encapsulate, unencapsulate, encapsulated-p):
      	Removed.  There is a compatibility layer in fwrappers.lisp.
      	(fdefinition, %set-fdefinition): Rewritten.
      
      	* src/code/profile.lisp: Remove #+cmu and #-cmu.
      	("PROFILE"): Use fwrappers.
      	(*profile-info*): Removed.
      	(profile-info): Redefined.
      	(*existing-encapsulations*): Removed.
      	(reset-profile-info, profile-info-profiling-values): New functions.
      	(make-profile-encapsulation): Removed.
      	(profile): New function name syntax.
      	(make-profile-fwrapper-name, make-profile-fwrapper): New functions.
      	(def-profile-fwrapper): Precompute some fwrappers.
      	(ensure-profile-fwrapper, find-profile-fwrapper, pi-or-lose):
      	New functions.
      	(profile-1-function): Rewritten.
      	(unprofile-1-function): Ditto.
      	(re-profile-redefined-function): New function.
      	(toplevel): Push it on *setf-fdefinition-hook*.
      
      	* src/code/ntrace.lisp (trace-call): Removed.
      	(trace-fwrapper): New fwrapper.
      	(trace-1): Use fwrap instead of encapsulate.
      	(untrace-1): Use funwrap instead of unencapsulate.
      e9211546
    • gerd's avatar
      * src/pcl/macros.lisp (pcl-internal-function-name-p): New · d86aae34
      gerd authored
      	function.
      	* src/pcl/boot.lisp (set-arg-info1): Use it instead of
      	relying on valid-function-name-p to return nil as second
      	value for PCL-internal functions.
      d86aae34
  7. May 22, 2003
  8. May 21, 2003
  9. May 20, 2003
    • gerd's avatar
      * src/pcl/rt/inline-access.lisp (auto-compile-declaration.2): Use · a7cf6186
      gerd authored
      	declaration identifiers from EXT.
      a7cf6186
    • gerd's avatar
      boot11.lisp · 2376d277
      gerd authored
      2376d277
    • gerd's avatar
      Move PCL's declaration identifiers SLOTS, AUTO-COMPILE, · e10b73e5
      gerd authored
      	NOT-AUTO-COMPILE to EXT.  To bootstrap, using pmai's scripts, copy
      	boot11.lisp to target:bootstrap.lisp and build.
      
      	* src/bootfiles/18e/boot11.lisp: New file.
      
      	* src/code/exports.lisp ("EXTENSIONS"): Export slots,
      	auto-compile, no-auto-compile.
      
      	* src/pcl/info.lisp: Don't export slots, auto-compile,
      	not-auto-compile.
      
      	* src/docs/cmu-user/extensions.tex: Declaration identifiers
      	moved from pcl: to ext:.
      e10b73e5
    • gerd's avatar
      Store user-specified slot names in DEFSTRUCT-SLOT-DESCRIPTIONs, · 20254db5
      gerd authored
      	which is necessary for conforming SLOT-EXISTS-P and
      	MAKE-LOAD-FORM-SAVING-SLOTS.  To bootstrap, using pmai's
      	build scripts:
      
      	1. Copy boot10.lisp to target:bootstrap.lisp and do a full
      	   build.  Choose the CLOBBER-IT restart when asked
      	   (for an unknown reason, it doesn't work to do this
      	   programatically.)
      
      	2. Leave the bootstrap file where it is and do a full build
      	   with the Lisp produced in step 1.
      
      	3. Remove the bootstrap file and do another full build.
      
      	* src/bootfiles/18e/boot10.lisp: New file.
      
      	* src-dsd/code/defstruct.lisp (defstruct-slot-description):
      	Rename slot %name to name.
      	(dsd-%name): New function.
      	(dsd-name): Function removed.
      	(parse-1-dsd): Set dsd-name to the slot symbol.
      
      	* src-dsd/pcl/std-class.lisp (*allow-keyword-slot-names*): New
      	variable.
      	(initialize-internal-slot-functions) <around
      	structure-effective-slot-definition>: New method binding
      	*allow-keyword-slot-names* to true.
      
      	* src-dsd/pcl/methods.lisp (legal-slot-name-p): Allow keywords
      	if *allow-keyword-slot-names* is true.
      20254db5
  10. May 19, 2003
  11. May 18, 2003
    • gerd's avatar
      Paul Dietz' DEFGENERIC.ERROR.4. Check for repeated lambda · c4827066
      gerd authored
      	variables.
      
      	* src/pcl/boot.lisp (parse-generic-function-lambda-list)
      	(analyze-lambda-list, parse-specialized-lambda-list):
      	Use parse-lambda-list.
      	(expand-defmethod): Proclaim the generic function using
      	the unspecialized lambda list, not the method's specialized
      	lambda list.
      
      	* src/pcl/low.lisp (parse-lambda-list): New function.
      c4827066
    • gerd's avatar
      Methods with &optional args could be called with too many · f1455e42
      gerd authored
      	arguments without signaling an error.  Found by Paul Dietz'
      	test suite, MAKE-LOAD-FORM.ERROR.2.
      
      	* src/pcl/boot.lisp (too-many-args): New function.
      	(bind-args): Use it.
      f1455e42
  12. May 17, 2003
Loading