Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
|Links to RELEASE_18c:||(view) (annotate)|
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). 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.
This set of revisions brings the RELENG_18 branch up to HEAD in preparation for an 18c release.
This (huge) revision brings the RELENG_18 branch up to the current HEAD. Note code/unix-glib2.lisp not yet included -- not sure it is ready to go.
Merge from 1.20: array-header-p transform.
Support for some specialised signed array types: (signed-byte 8), (signed-byte 16), (signed-byte 30), (signed-byte 32). These patches include the general support and the x86 backend support; more to follow. The important changes are conditional on the :signed-array feature so shouldn't affect the source without this feature. This work has been driven by Raymond Toy.
Fix headed boilerplate.
Fix compiler warnings.
Changed *byte-compiling* to (byte-compiling), since during IR1 conversion we're not sure yet.
Update transforms to inhibit ones which pessimize byte code.
Quoted arg/result types in :EVAL-NAME DEFTRANSFORMs.
When converting MAKE-STRING into a MAKE-ARRAY, wrap the length with (the index ...) so that MAKE-ARRAY can tell that it's a vector.
Changed BASE-CHARACTER to BASE-CHAR
Fixed the make-array derive type optimizer to only spec the dimensions if the created array is known to be simple. Otherwise, someone might adjust it, which would cause the type to be wrong.
Added derive-type method for %WITH-ARRAY-DATA
New file header with RCS stuff.
Fixed bit-array canonicalizing for the T case to have the right type.
Added transforms to canonicalize the result arg to bit-vector ops. Added transform for VECTOR-LENGTH that returns the constant result when the type has specified dimensions.
Changed the make-array transform to simplify the nwords computation as much as possible instead of relying on (nonexistent) optimizers to simpilfy it later down the line. Also fixed a spelling error.
The make-string source transform was quoting the initial element, even if it wasn't a constant. Ooops.
Forgot to call length on the indices &rest arg in the aref derive-type optimizer.
Ack, more typos.
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|