Skip to content
Snippets Groups Projects
  1. Apr 21, 2003
  2. Apr 19, 2003
    • gerd's avatar
      Add destructuring support to &REST, &BODY, &WHOLE. Detected · 1ca1159c
      gerd authored
      	by Paul Dietz' ANSI tests.
      
      	* src/code/defmacro.lisp (parse-defmacro-lambda-list): Add
      	&parse-body, replacing &body (<body> <decls> <doc>).  Add
      	destructuring support to &rest, &body, &whole.
      
      	* src/code/eval.lisp (lambda-list-keywords): Add &parse-body.
      
      	* src/code/exports.lisp ("EXTENSIONS"): Export &parse-body.
      
      	* src/hemlock/table.lisp (do-words, with-folded-string):
      	* src/hemlock/macros.lisp (with-pop-up-display):
      	* src/compiler/macros.lisp (deftransform):
      	* src/compiler/ir1tran.lisp (symbol-macrolet, let, locally)
      	(let*, flet, labels) <ir1-translator>:
      	* src/code/package.lisp (do-symbols, do-external-symbols)
      	(do-all-symbols):
      	* src/code/macros.lisp (defun, prog, prog*, with-open-file)
      	(with-open-stream, with-input-from-string)
      	(with-output-to-string, do, do*):
      	* src/code/mach.lisp (gr-bind):
      	* src/code/extensions.lisp (do-anonymous, do-hash, defun-cached):
      	Use &parse-body instead of &body.
      1ca1159c
    • toy's avatar
      32677b40
  3. Apr 18, 2003
    • gerd's avatar
      Fix for RANDOM-NSET-EXCLUSIVE-OR test case. NSET-EXCLUSIVE-OR · eba7fd9d
      gerd authored
      	used to return different results than SET-EXCLUSIVE-OR, and its
      	algorithm doesn't appear to be easily fixable.  Wait for someone
      	who cares enough to fix the algorithm.
      
      	* src/code/list.lisp (nset-exclusive-or): Implement in terms of
      	SET-EXCLUSIVE-OR.
      eba7fd9d
    • gerd's avatar
      Make condition readers/writers generic functions, as required by · 897b08d2
      gerd authored
      	ANSI.  Detected by Paul Dietz' ANSI test suite.
      
      	* src/tools/worldcom.lisp: Set
      	conditions::*make-condition-accessor-methods* to nil.
      
      	* src/tools/pclcom.lisp: Convert condition accessor gfs back
      	to normal functions.
      
      	* src/code/error.lisp (*make-condition-accessor-methods*)
      	(*early-condition-accessors*): New variables.
      	(make-early-condition-accessors-generic)
      	(make-condition-accessor): New functions.
      	(%define-condition): Use make-condition-accessor.
      	(define-condition): Define methods if
      	*make-condition-accessor-methods*.
      
      	* src/pcl/fixup.lisp (toplevel): Call
      	conditions::make-early-condition-accessors-generic.
      897b08d2
  4. Apr 17, 2003
  5. Apr 16, 2003
    • gerd's avatar
      Fix test cases CONTINUE.2, STORE-VALUE.2, USE-VALUE.2 from Paul · 5eaefe41
      gerd authored
      	Dietz' test suite.  From SBCL.
      
      	* src/code/error.lisp (define-nil-returning-restart): Invoke
      	the restart returned from find-restart.
      5eaefe41
    • gerd's avatar
      ANSI fixes. · 3c3b64ad
      gerd authored
      	* src/code/symbol.lisp (get-properties, getf): Signal type-error
      	instead of program-error.
      3c3b64ad
    • toy's avatar
      Back out the debug return changes. It causes errors in some of the · 38d0404a
      toy authored
      ansi-tests.
      38d0404a
    • gerd's avatar
      Further speed-up of the type system. Avoid compiler notes. · aebfebbd
      gerd authored
      	The type system is now as fast as it were before.
      
      	* src/code/type.lisp: Collect type-class and structure definitions
      	at the beginning of the file to avoid compiler notes and get
      	slot accessor inlining.
      	(with-types-array, *ctype-arrays*): Removed.
      	(simplify-unions): Rewritten simplify-union-types.
      	(simplify-intersections): Rewritten simplify-intersection-types.
      	(%type-union2): Removed, inlined in type-union2.
      	(%type-intersection2): Removed, inlined in type-intersection2.
      aebfebbd
  6. Apr 15, 2003
    • gerd's avatar
      Speed up the type system. · 4898b8c2
      gerd authored
      	* src/code/type.lisp (*ctype-arrays*): New variable.
      	(with-types-array): New macro.
      	(simplify-union-types, simplify-intersection-types): Use it,
      	return lists.
      	(%type-union, %type-intersection): Handle lists instead of
      	vectors returned by the simplification functionts.
      4898b8c2
  7. Apr 14, 2003
  8. Apr 13, 2003
    • gerd's avatar
      * src-head/code/type.lisp (type-might-contain-other-types-p): · e5551afd
      gerd authored
      	Declaim inline.
      e5551afd
    • emarsden's avatar
    • gerd's avatar
      Fix CONDITION-x-SLOTS* ANSI test failures. · cdb3a46f
      gerd authored
      	* src-types/code/error.lisp (condition-reader-function): Loop over
      	actual initargs first because these determine how slots are
      	initialized.
      	(compute-effective-slots): Don't duplicate slots of the class
      	whose effective slots are computed.
      cdb3a46f
    • gerd's avatar
      Don't export a class DIRECTORY from CL. Fixes ANSI test case · 81978758
      gerd authored
      	ALL-EXPORTED-CL-CLASS-NAMES-ARE-VALID.
      
      	* src-types/code/unix.lisp (%directory): Struct renamed from
      	directory, give it a :conc-name and :constructor for compatibility.
      
      	* src-types/code/unix-glibc2.lisp: Likewise.
      81978758
    • gerd's avatar
      The SEQUENCE-COUNT type was previously used in c:fndb, but since · c1effa7a
      gerd authored
      	C::SEQUENCE-COUNT /= KERNEL::SEQUENCE-COUNT, it was an unknown
      	type.  Please read boot4.lisp.
      
      	* src/code/exports.lisp ("KERNEL"): Export sequence-count.
      
      	* src-types/bootfiles/18e/boot4.lisp: New file.
      
      
      	Make compute-effective-slot-definition AMOP compliant.
      	Patch from Kevin Rosenberg.
      
      	* src/pcl/std-class.lisp (compute-slots): Pass slot name
      	to compute-effective-slot-definition.
      	(compute-slots): Likewise.
      	(compute-effective-slot-definition): Add parameter slot-name.
      
      	* src/pcl/generic-functions.lisp (compute-effective-slot-definition):
      	Add second parameter slot-name.
      
      
      	Allow non-keyword keyword names in lambda lists.  This fixes test
      	cases STRUCTURE-BOA-TEST-15/[1-8], and FLET.30.
      
      	* src/compiler/node.lisp (arg-info): Accept non-keyword
      	keyword names.
      
      	* src/code/type.lisp (key-info): Likewise.
      
      
      	Fix type system bugs detected by Paul Dietz' test suite
      	This is to a large extent a port from SBCL.
      
      	* src/code/type.lisp: Mostly rewritten with code ported from
      	SBCL.
      
      	* src/compiler/typetran.lisp (ir1-transform-type-predicate):
      	Return nil if type is *empty-type*.
      	(source-transform-negation-typep)
      	(source-transform-intersection-typep): New functions.
      	(source-transform-array-typep): Handle unknown array element types.
      	(typep): Add handling of negation and intersection types.
      
      	* src/compiler/srctran.lisp (make-canonical-union-type):
      	Simplify, now that #'type-union is smarter.
      	(ir1-transform-<-helper): Give up on non-numeric, non-member
      	types.
      
      	* src/compiler/checkgen.lisp (type-test-cost): Add a case
      	for intersection-type.
      	(values-types-asserted): Don't use coerce-to-values, see
      	the comment there.
      
      	* src/compiler/array-tran.lisp (array-dimension): Accept
      	:maybe as array-type-complexp.
      
      	* src/code/pred.lisp (%%typep): Add handling of
      	negation-types and intersection-types.  Change cases of
      	hairy-types, union-types, and arrays with unknown element type.
      
      	* src/code/exports.lisp ("KERNEL"): Export negation-type,
      	negation-type-type, intersection-type, intersection-type-types.
      
      	* src/code/class.lisp (sealed-class-intersection):
      	Return one value.
      	(class :simple-intersection): Return one value, return nil in
      	the default case.
      	(class :complex-subtypep-arg2): New type method.
      c1effa7a
  9. Apr 11, 2003
  10. Apr 01, 2003
  11. Mar 31, 2003
    • gerd's avatar
      Name local functions (FLET ...) or (LABELS ...). · cf3f726a
      gerd authored
      	* compiler/ir1tran.lisp (*current-function-names*): New variable.
      	(find-lexically-apparent-function): Use lexenv-find-function.
      	(ir1-convert): Likewise.
      	(ir1-convert-lambda): Bind *current-function-names*.
      	(do-macrolet-stuff): Likewise.
      	(extract-flet-variables): Determine function name from
      	(%cleanup-function): Use lexenv-find-function.
      
      	* compiler/main.lisp (compile): Bind *current-function-names*.
      
      	* compiler/macros.lisp (lexenv-find-function): New function.
      
      	* code/fdefinition.lisp (flet, labels): Define function names.
      
      	* pcl/walk.lisp (environment-function): Activate code for
      	handling flet/labels function names.
      cf3f726a
  12. Mar 30, 2003
    • gerd's avatar
      Update CLOS STRUCTURE-CLASSes on structure changes. · 3279c041
      gerd authored
      	* pcl/braid.lisp (ensure-non-standard-class): Add optional
      	parameter existing-class.
      	(reinitialize-structure-class): New function.
      	(toplevel): Push it on kernel::*defstruct-hooks*.
      
      	* code/defstruct.lisp (*defstruct-hooks*): New variable.
      	(%defstruct): Call these hooks.
      
      	* tools/pclcom.lisp (find-package): Remove
      	pcl::reinitialize-structure-class from kernel::*defstruct-hooks*.
      3279c041
  13. Mar 27, 2003
    • toy's avatar
      Clean up code. Remove the bootstrap-conc-name reader conditional · 36c19961
      toy authored
      stuff that was introduced to fix the conc-name inheritance bugs.  We
      keep the #-bootstrap-conc-name stuff.
      36c19961
    • gerd's avatar
      * code/hash-new.lisp (make-hash-table): Put warning about · 9e89e4e5
      gerd authored
      	creating weak tables in #-gencgc.
      
      	* lisp/gencgc.c (gc_assert): Ensure macro expansion is always a C
      	statement.
      	(struct hash_table): New struct.
      	(HASH_TABLE_SIZE, EQ_HASH): New macros.
      	(weak_hash_tables): New variable.
      	(survives_gc, u32_vector, free_hash_entry, record_for_rehashing)
      	(scav_hash_entries, scav_weak_entries, scan_weak_tables)
      	(scav_hash_vector): New functions.
      	(scav_vector): Removed.
      	(scav_weak_pointer, trans_weak_pointer, scan_weak_pointers):
      	Cleaned up.
      	(gc_init_tables): Use scav_hash_vector instead of scav_vector.
      	(garbage_collect_generation): Call scan_weak_tables.
      	(everywhere): Add casts, change format strings, etc. to placate
      	the compiler.
      
      	* lisp/FreeBSD-os.h: Fix a function prototype.
      9e89e4e5
  14. Mar 26, 2003
    • gerd's avatar
      * pcl/boot.lisp (parse-defmethod): Rewritten for clarity. Signal · 1e88e890
      gerd authored
      	an error for most cases of null qualifiers.
      
      
      	Improve DESCRIBE on generic functions.
      
      	* pcl/env.lisp (method-specialized-lambda-list): New function.
      	(describe-object): Use it, and use generic-function-lambda-list.
      
      	* pcl/methods.lisp (generic-function-pretty-arglist)
      	(method-pretty-arglist): Remove.
      
      	* pcl/generic-functions.lisp (generic-function-pretty-arglist)
      	(method-pretty-arglist): Remove.
      
      
      	AMOP compliance fixes: Reintroduce class METAOBJECT, make
      	GENERIC-FUNCTION a subclass of STANDARD-OBJECT, remove STD-OBJECT.
      	This basically reverts a change of dtc from 1998.
      
      	* code/describe.lisp (describe-instance): Check for
      	standard-object, not pcl::std-object.
      
      	* pcl/pkg.lisp ("PCL", "CLOS-MOP"): Export more stuff.
      
      	* pcl/generic-functions.lisp: Remove some of the useless comments.
      
      	* pcl/slots.lisp (slot-value-using-class, setf slot-value-using-class)
      	(slot-boundp-using-class, slot-makunbound-using-class): Specialize
      	on standard-object.
      
      	* pcl/slots-boot.lisp (get-optimized-std-accessor-method-function):
      	Remove an std-class-p case.
      
      	* pcl/methods.lisp (update-std-or-str-methods): Use
      	standard-object instead of std-object.
      	(mec-all-classes-internal): Use *the-class-standard-object*
      	instead of *the-class-std-object*.
      	(class-test): Don't consider *the-class-std-object*.
      
      	* pcl/low.lisp (pcl-instance-p) [deftransform]: Use
      	standard-object instead of std-object.
      
      	* pcl/init.lisp (update-instance-for-different-class)
      	(update-instance-for-redefined-class): Specialize on
      	standard-object instead of std-object.
      
      	* pcl/dfun.lisp (accessor-values-internal, make-accessor-table)
      	(make-accessor-table): Use *the-class-standard-object* instead of
      	*the-class-std-object*.
      
      	* pcl/defs.lisp (toplevel): Don't declare *the-class-std-object*
      	special.
      	(standard-object): Single superclass slot-object.
      	(metaobject): New class.
      	(std-object): Class removed.
      	(specializer): Superclass metaobject.
      	(definition-source-mixin, plist-mixin): Superclass
      	standard-object, no metaclass.
      	(documentation-mixin, dependent-update-mixin): No metaclass.
      	(slot-definition, method, generic-function, method-combination):
      	Superclass metaobject.
      
      	* pcl/cache.lisp (raise-metatype): Don't consider std-class.
      
      	* pcl/braid.lisp (bootstrap-meta-braid): Don't braid std-class.
      	(bootstrap-initialize-class): Don't consider std-class.
      1e88e890
    • gerd's avatar
      dcb6a044
  15. Mar 23, 2003
    • gerd's avatar
      Optional control stack checking. This is controlled by the · 670d643f
      gerd authored
      	feature :stack-checking because it's not implemented for other
      	systems/architectures yet.  It is currently known to work on
      	FreeBSD 4.8-RC/x86 and Debian 2.2.20/x86.
      
      	* bootfiles/18e/boot3.lisp: New boot file, well, only a
      	description of the boot procedure since no boot file is needed.
      
      	* lisp/x86-validate.h (SIGNAL_STACK_START, SIGNAL_STACK_SIZE)
      	[__FreeBSD__, __linux__]: New defines.
      	(CONTROL_STACK_SIZE) {__FreeBSD__, __linux__]:
      	Adjust for signal stack.
      
      	* lisp/validate.c (validate) [RED_ZONE_HIT]: Call
      	os_guard_control_stack.  Some cleanup.
      
      	* lisp/os.h (BOTH_ZONES, YELLOW_ZONE, RED_ZONE): New enums.
      	Add function prototypes.
      
      	* lisp/interrupt.c (interrupt_install_low_level_handler)
      	[RED_ZONE_HIT]: Deliver protection violations on a dedicated
      	signal stack.
      
      	* lisp/os-common.c (os_stack_grows_down_1, os_stack_grows_down):
      	New functions.
      	(guard_zones, control_stack_zone, os_guard_control_stack)
      	(os_control_stack_overflow) [RED_ZONE_HIT]: New functions.
      	(os_control_stack_overflow) [!RED_ZONE_HIT]: Dummy function.
      
      	* lisp/Linux-os.c (sigsegv_handler) [RED_ZONE_HIT]: Handle control
      	stack overflows.
      
      	* lisp/FreeBSD-os.c: General cleansing.
      	(sigbus_handler) [RED_ZONE_HIT]: Handle control stack overflows.
      
      	* lisp/FreeBSD-os.h (PROTECTION_VIOLATION_SIGNAL): New define.
      
      	* lisp/Linux-os.h (PROTECTION_VIOLATION_SIGNAL): New define.
      
      	* compiler/x86/system.lisp (lisp::%scrub-control-stack): Change
      	defknown from sys:scrub-control-stack.
      	(%scrub-control-stack): Rename VOP.
      
      	* code/lispinit.lisp (os-guard-control-stack) [#+stack-checking]:
      	Define alien os_guard_control_stack.
      	(%scrub-control-stack) [#+x86]: New function.
      	(scrub-control-stack) [#+x86]: Call %scrub-control-stack,
      	call os-guard-control-stack if #+stack-checking.
      
      	* code/interr.lisp (yellow-zone-hit,
      	red-zone-hit) [#+stack-checking]: New functions.
      
      	* code/error.lisp (stack-overflow) [#+stack-checking]: New
      	condition.
      
      	* compiler/generic/new-genesis.lisp (finish-symbols)
      	[#+stack-checking]: Add symbols for control stack checking.
      
      	* compiler/x86/parms.lisp (static-symbols): Likewise.
      670d643f
  16. 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
    • pmai's avatar
      Merged back important fix from 18e release branch. · b812530b
      pmai authored
      b812530b
  17. Mar 21, 2003
  18. Mar 19, 2003
  19. Mar 18, 2003
  20. Mar 17, 2003
Loading