Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
|Links to amd64-merge-start:||(view) (annotate)|
From Juan Jose Garcia Ripoll: but the following gives wrong results: (macroexpand '(multiple-value-bind (&rest x) (foo y) d)) (MULTIPLE-VALUE-CALL #'(LAMBDA (&OPTIONAL &REST X &REST #:G858) (DECLARE (IGNORE #:G858)) D) (FOO Y)) Fix from Juan Jose Garcia Ripoll.
Merge in the 19a changes containing Helmut Eller's implementation for source location for defvar and friends.
Signal an error if a CASE uses T or OTHERWISE as key designators. (Basically if T or OTHERWISE are keys not in the last clause.)
Add a function EXT:UNLOCK-ALL-PACKAGES, that disables both the structural and the definition locks for all existing packages. Add an additional restart to the PACKAGE-LOCKED-ERROR signaling points that allows the user to disable all packages then continue. Package locks are initialized upon startup, so the unlocking only takes effect during the current session. However, this function doesn't suffer from the problem that affects LISP::*ENABLE-PACKAGE-LOCKED-ERRORS* (which is bound by LOAD so can't be set from an initialization file).
* src/code/macros.lisp (with-output-to-string): Add and ignore element-type.
* src/code/macros.lisp (c::%defun): Save inline-expansion in the info database.
Remove package nicknames USER from COMMON-LISP-USER. Add a new package COMMON-LISP which LISP uses, so that COMMON-LISP no longer has the non-ANSI nickname LISP. To bootstrap, use boot13.lisp as target:bootstrap.lisp with pmai's build scripts, and do a full compile. * src/bootfiles/18e/boot13.lisp: Change for all the package changes. * src/code/exports.lisp: New package common-lisp, which lisp uses. * src/tools/worldload.lisp: * src/tools/setup.lisp: Use cl-user instead of user. Use lisp:: instead of cl::. * src/tools/worldcom.lisp: * src/tools/snapshot-update.lisp: * src/tools/pclcom.lisp: * src/tools/mk-lisp: * src/tools/hemcom.lisp: * src/tools/config.lisp: * src/tools/comcom.lisp: * src/tools/clxcom.lisp: * src/tools/clmcom.lisp: * src/pcl/defsys.lisp: * src/motif/lisp/initial.lisp: * src/interface/initial.lisp: * src/hemlock/lispmode.lisp (setup-lisp-mode): Use cl-user instead of user. * src/code/save.lisp (assert-user-package): * src/code/print.lisp (%with-standard-io-syntax): Find cl-user package instead of user. * src/code/package.lisp (package-locks-init): Add lisp. (package-init): Don't add user nickname to cl-user. * src/code/ntrace.lisp (*trace-encapsulate-package-names*): Add common-lisp. * src/code/hash.lisp (toplevel): * src/code/hash-new.lisp (toplevel): Use in-package :lisp instead of :common-lisp. * src/code/float-trap.lisp (sigfpe-handler): Don't qualify floating-point-inexact with ext:. * src/pcl/simple-streams/strategy.lisp (sc): * src/pcl/simple-streams/null.lisp (null-read-char): * src/pcl/simple-streams/internal.lisp (allocate-buffer) (free-buffer): * src/pcl/simple-streams/impl.lisp (%check, %read-line) (%peek-char, %read-byte): * src/pcl/simple-streams/file.lisp (open-file-stream) (device-close): * src/pcl/simple-streams/classes.lisp (simple-stream) (device-close): * src/pcl/macros.lisp (toplevel): * src/pcl/braid.lisp (lisp::sxhash-instance): * src/pcl/env.lisp (toplevel): * src/compiler/generic/objdef.lisp (symbol-hash): * src/code/stream.lisp (read-sequence, write-sequence): * src/code/macros.lisp (defmacro, deftype): * src/code/eval.lisp (interpreted-function): * src/code/defstruct.lisp (defstruct): * src/code/debug.lisp (debug-eval-print): Use lisp:: instead of cl::.
Add package locks. Bootfile boot8.lisp allows this to build without a cross-compile (or just select the CLOBBER-IT restart). - two extra PACKAGE-LOCK and PACKAGE-DEFINITION-LOCK slots added to the package structure. These can be modified using the EXT:PACKAGE-LOCK and EXT:PACKAGE-DEFINITION-LOCK accessors. - macro EXT:WITHOUT-PACKAGE-LOCKS that evaluates forms with all package locks disabled (this is done by binding the global variable CL::*ENABLE-PACKAGE-LOCKED-ERRORS*) - new PACKAGE-LOCKED-ERROR condition - in SETF-FDEFINITION-HOOK and in the DEFMACRO, DEFSTRUCT, DEFTYPE and DEFCLASS defining forms, check whether the definition would modify a package whose definition-lock is enabled, and signal a package-locked-error condition with restarts that allow you to unlock the package or ignore the lock - in EXPORT, UNEXPORT etc check whether the target package is guarded by a package-lock, and signal an error - disable package locks when loading a subsystem - disable package locks in certain areas of PCL and in the MAKE-LOAD-FORM support of the compiler, where code is generated inside system packages at runtime
Add destructuring support to &REST, &BODY, &WHOLE. Detected 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.
* bootfiles/18e/boot.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 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.
Get rid of a compiler warning about an unused variable.
* src/code/macros.lisp (dolist): Add original declaration to the form evaluating the result form, for the case where VAR is declared special.
For CASE and friends, the OTHERWISE clause is an OTHERWISE clause only if it's the last clause. Otherwise, it's just a normal clause.
Generalized function names. * code/macros.lisp (evaluate-declaration-context): Use valid-function-name-p.
Generalized function names. * code/fdefinition.lisp (*valid-function-names*): New variable. (%define-function-name-syntax, valid-function-name-p): New functions. (define-function-name-syntax): New macro. (toplevel): Define the syntax of setf function names. (fdefinition-object): Use valid-function-name-p. * compiler/proclaim.lisp (check-function-name): Use valid-function-name-p. * compiler/ir1tran.lisp (function): Use valid-function-name-p. * code/profile.lisp (%report-times): Use valid-function-name-p. * code/macros.lisp (defun): Use valid-function-name-p. * code/eval.lisp (eval): Use valid-function-name-p. * code/describe.lisp (describe-aux, describe-function-name): Use valid-function-name-p. * code/exports.lisp ("EXTENSIONS"): Add define-function-name-syntax and valid-function-name-p.
From Eric Marsden: fix typos in comments, signal more specific error types, remove some stale code, fix a few compiler warnings in the runtime.
PSETQ was not handling symbol macros. Use PSETF to implement PSETQ. (From SBCL.)
Fix typo in MULTIPLE-VALUE-SETQ. Noted by Eric Marsden.
Reinstate the check for properly formed vars list.
MULTIPLE-VALUE-SETQ was mishandling variables that were symbol macros. Use the version from SBCL.
DOLIST was not properly establishing a tagbody for the body, as shown by the gcl ANSI test suite. Use the version from SBCL.
The previous checkin adding multiple-values support to push and pushnew screwed up the evaluation order. Fix that, and get the evaluation order correct for multiple-values too.
PUSH and PUSHNEW support multiple values as places.
Reinstate the special case handling when PLACE is a symbol (and not a macro or symbol-macro). This allows use of push/pushnew in kernel.core again. Solution suggested by Christophe Rhodes.
o Fix pushnew evaluation order. (Fix provided by Gerd Moellman.) o For push, pushnew, and pop, we can't shortcut get-setf-method because even though place might be a symbol, it might be from a symbol-macrolet. Always use get-setf-method.
CTYPECASE and ETYPECASE also accept T and OTHERWISE as keys, just like CCASE and ECASE.
ECASE and CCASE are allowed to use T and OTHERWISE as regular keys instead of as the otherwise-clause. Print a simple warning about this being bad style.
SHIFTF supports multiple-values, as required by ANSI CL.
Changed compile-time behavior of DEFCONSTANT to work like DEFMACRO and DEFINE-COMPILER-MACRO. This fixes buggy behavior when DEFCONSTANT is not at top level.
dotimes fix to enable optimization in cases of nested dotimes with compile-time-known upper bound. Too bad the compiler can't figure this out itself. (From Martin Cracauer.)
From Pekka P. Pirinen via c.l.l Allow only one doc-string in system:parse-body.
From Tim Moore: Arrange for ANSI behaviour regarding DEFMACRO processing. It has compile-time effect only at top level now.
Change calls to obsolete define-setf-method to define-setf-expander.
First step in removing some CLtL1/CLtL2 exports from COMMON-LISP package.
Fixes to make proclaim and declaim work as in ANSI spec.
Really remove the macro for LOCALLY, which is now a special form.
Remove the macro for LOCALLY, which is now a special form; from Raymond Toy.
Add support for define-symbol-macro.
Reworking of the values-type system to overcome a number of inconsistencies causing problems: o Redefine coerce-to-values to convert a single value type into (values type), rather than the former definition (values type &rest t). A single value type such as fixnum is now equivalent to (values fixnum). Values-type-union and values-type-intersection will canonicalise values types with a single value such as (values fixnum) back to a single value type such as fixnum. o Now when the compiler makes assertions for the first value of continuations that may be generating multiple values it asserts the type as (values type &rest t), or as (value &optional type &rest t) if it is not sure that the continuation does generate a value. o Enhance the type check generation to better handle the now common values types with optional and rest arguments. Add the new function Values-types-asserted which converts asserted optional and rest arguments to required arguments that have been proven to be delivered, Thus an assertion such as (values &optional fixnum &rest t) will generate a fixnum type check if the proven type if (values t). o The compiler is now far more likely to pickup attempts to use an assertion to select a subset of values. For example (the (values fixnum) (values x y)) will generated a compiler warning. o Update single values type assertions where appropriate to clarify that the received values may be optional or that multiple values may be received. For example, a macro argument which had been asserted to be a list via (the list ,...) would now be asserted to be (the (values &optional list &rest t)) etc. o Have the IR1 translator for THE convert single value types into (values &optional type &rest t) so that code such as (the fixnum (values x y)) will still work acceptably. This does not restrict the possible type assertions as the values types may be used and are not modified.
For the various case macros, do not generate an error during macro-expansion when there are no cases as this appears unnecessary according to the ANSI CL spec; from Raymond Toy.
Define SAP-ref-64 setf function macros on all ports.
Fix PSETQ to return Nil; from Peter Van Eynde.
Define a VALUES setf expander. Update references to the obsolete define-setf-method to define-setf-expander
Fixes and improvements to July-14 commit dealing with condition types in calls to error. From Douglas.
This revision merges in many of the fixes for ANSI condition types in various calls to ERROR. Those easily handled by using new condition types simple-file-error and simple-program-error are included. The only functional change here is that the function CHARACTER no longer accepts an integer argument so as to be ANSI compliant. This may break some code.
PSETQ should return nil. Fix from Peter VanEynde.
Fix doc. typos "the the" -> "the".
Minor change to inhibit compiler notes about dead code removal when WITH-INPUT-FROM-STRING was called with an END argument.
Change %set-documentation to (setf documentation) to help operation with PCL loaded.
New shiftf from Bruno Haible fixes problem with duplicated places.
Prevent warnings from eg (case key (t))
Add ANSI lambda macro
initial post 1.3.7 merge
Werkowskis source kit 1.03.7
Fix headed boilerplate.
Added: (defsetf sap-ref-64 %set-sap-ref-64) and (defsetf signed-sap-ref-64 %set-signed-sap-ref-64) for the Alpha.
changed %deftype to use interface functions instead of (info type class ...)
Changed uses of RESTART-CASE to be detectable calls to error.
format-string -> format-control
Changed renamed get-setf-method-multiple-value to get-setf-expansion and define-setf-method to define-setf-expander. The old names are also defined for backward compatibility.
Really really fixed get-setf-method-multiple-value for local macros. Also, in the recursive calls, people were not propagating the environment through, and in some places were not recursing with the multiple-value version.
Rip out NS-BOOT conditionals.
new structure branch & tuning, see new_struct
Changed DOLIST not to introduce the spurious let around the result form when there is no result form. Also, just read the var in the spurious let, instead of using IGNORABLE, since the var might be special.
In %defsetf, don't bother creating temp vars for constants. This is necessary so that keywords stay keywords, and are not changed to gensyms.
Changed GET-SETF-METHOD-MULTIPLE-VALUE to try to macroexpand-1 the form when it's an atom in case it's a symbol-macro as per the X3J13 cleanup SYMBOL-MACROLET-SEMANTICS:SPECIAL-FORM. Now you can safely INCF, etc. symbol macros where the macroexpansion has side effects.
Fixed SETF of GETF to evaluate the various parts in the correct order as per X3J13 cleanup SETF-SUB-METHODS:DELAYED-ACCESS-STORES.
Fixed bug in NTH-VALUE where it expanded into bogus code unless ``n'' was a constant integer.
X3J13 cleanup SETF-MULTIPLE-STORE-VARIABLES: Extend the semantics of the macros SETF, PSETF, SHIFTF, ROTATEF, and ASSERT to allow "places" whose SETF methods have more than one "store variable". In such cases, the macros accept as many values from the newvalue form as there are store variables. As usual, extra values are ignored and missing values default to NIL. Extend the long form of DEFSETF to allow the specification of more than one "store variable", with the obvious semantics. Clarify that GET-SETF-METHOD signals an error if there would be more than one store-variable.
Changed the DEFSETF for SYMBOL-FUNCTION and SYMBOL-PLIST to FSET and %SET-SYMBOL-PLIST.
Changed all SAP-REF-mumble functions to take the offset in bytes.
Merged Lange's enhancement to NTH-VALUE; it now doesn't cons for non-constant N less than 3.
Fixed get-setf-method to only inhibit for local functions, not local macros too. Removed some bootstrapping code.
Added :PACKAGE constext declaration.
Frobbed SETF a bit more. We still always call GET-SETF-METHOD to let it do its thing, but if the result is just a call to the inverse, then directly call the inverse w/o any let binding. This makes setf inverses usable without the full interpreter.
Changed DEFSETF and DEFINE-SETF-METHOD to call a common subfunction, %DEFINE-SETF-MACRO, which checks for any existing definition as a slot accessor or other setf function. Changed GET-SETF-METHOD to ignore setf macros (always global) when there is a local macro or function. Changed SETF to always call GET-SETF-METHOD, instead of special-casing setf inverses. I was tired to keeping the duplicated code consistent. Generalized the special casing in SETF of APPLY. We now go for the SETF function when called on any symbol in the Lisp package. Now SETF of APPLY will work on all Common Lisp functions, instead of just two.
Fixed WITH-COMPILATION-UNIT keyword to be :OVERRIDE instead of :FORCE. Also, added :OPTIMIZE and :OPTIMIZE-INTERFACE for changing the "global" compilation policy within the dynamic extent. Added :CONTEXT-DECLARATIONS, which provides a way to insert declarations conditional on pattern mathcing of the context in which the definition appears. So you can compiler all external functions safe, or whatever.
New file header with RCS header FILE-COMMENT.
ignore => ignore
Added Dan's NTH-VALUE macro.
In destructuring-bind, pass NIL to parse-defmacro as the name, 'cause there is no name.
Ack. Maybe this time I got defsetter correct.
Changed a use of analyze1 to parse-defmacro.
Changed to use Blaine's parse-defmacro. Stripped out lots of bootstrapping code. Ripped out loop, 'cause the full blown loop macro now exists in it's own file.
Made DEFTYPE warn if redefining a structure and flame if a primitive type. Fixed it to test FBOUNDP on the right symbol so that %NOTE-TYPE-DEFINED can get called. Changed %%DEFUN to use DEFINE-FUNCTION-NAME and also to blow away any assumed type info.
Random stuff to get define-setf-method to cross compile.
Moved MIPS branch onto trunk; no merge necessary.
Flushed commented-out PUTF macro. Changed %PRIMITIVE PUTF to be %PUTF so that we can interpret SETF GETF.
Added UNSIGNED-BYTE declarations in DOTIMES to help type inference.
Changed DEFTYPE to expand into %DEFTYPE, and made %DEFTYPE call %NOTE-TYPE-DEFINED.
Merged non-descriptor changes: revision 126.96.36.199 date: 90/04/09 00:00:09; author: ram; state: Exp; lines added/del: 1/1 Fixed typo. ---------------------------- revision 188.8.131.52 date: 90/03/27 13:18:14; author: ram; state: Exp; lines added/del: 11/6 Changed WITH-COMPILATION-UNIT to hack delayed unknown type warnings. We define a handler for PARSE-UNKNOWN-TYPE.
.../systems-work/code/macros.lisp, 10-Feb-90 13:06:45, Edit by MBB. WITH-OUTPUT-TO-STRING-APPEND-STYLE: Changed the doc-string to exploit the new standard that was already there. WITH-OPEN-FILE-DOES-NOT-EXIST: Modified WITH-OPEN-FILE to not execute the body when OPEN fails. This is the new standard.
Added some missing commas in DEFTYPE.
Made %DEFMACRO set the interpreted function name to "DEFMACRO <name>" rather than just <name>. Also, changed %DEFUN to set the function name.
Changed DEFTYPE to use INFO instead of plist hackery.
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.
|Powered by ViewVC 1.1.5|