- Jul 06, 2000
-
-
dtc authored
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.
-
dtc authored
an optional or rest argument, and enhance it to return the *null-type* if there are no values. Also no longer inline this function as it is becoming more complex.
-
- Jun 27, 2000
-
-
dtc authored
returning nil when both types had a rest type even if these were type=; from Robert Maclachlan.
-
- May 02, 2000
-
-
dtc authored
The new cons-type which maintains the specialised CAR and CDR types: o Typep recurses, checking the respective car and cdr specialisations; two cons-types are type= if both their car and cdr types are type=. o Subtypep recurses, applying subtypep to the respective car and cdr types. If both sub-tests return true then the cons test returns true with a win only when both sub-tests win. If either sub-test returns false then the cons tests returns false with a win if either of sub-tests win. o Type-intersection is applied to the respective car and cdr types, and wins if both win. o The type-union of two cons-types handles cases for which either the respective car or cdr types are type=, in which case type-union is applied to the other type. This avoid returning an overly general result. o Ctype-of a cons object simply returns (cons * *); and does not attempt to recurse. o The compiler recursively checks the specialised type of the cons-type, which allows it to also use this type information to derive the result type car and cdr. Inline code is currently only generated when natively compiling.
-
- Jan 10, 2000
-
-
dtc authored
bignum type.
-
- Aug 19, 1998
-
-
dtc authored
without the long-float feature, and the numeric-contagion of a real with a long-float is a long-float with the long-float feature; from Raymond Toy.
-
- May 19, 1998
-
-
dtc authored
hairy subtype methods.
-
- May 13, 1998
-
-
dtc authored
some problems with the 'atom type which is defined as (not cons).
-
- Apr 17, 1998
-
-
dtc authored
which is a little better than Nil which is a subtype of everything.
-
- Feb 02, 1998
-
-
dtc authored
have make-numeric-type canonicalize the bounds so that a lower bound of (-0.0) becomes 0.0 and an upper bound of (0.0) becomes -0.0. Also fixes the problem of (subtypep '(float (-0.0)) (float 0.0)), returning nil when it should be T. This is because (float (-0.0)) is canonicalized to the identical (float 0.0).
-
- Jan 21, 1998
-
-
dtc authored
:negative-zero-is-not-zero feature; from Raymond Toy.
-
- Jan 08, 1998
-
-
dtc authored
zero-not-zero feature the sign of the float zeros should not matter; and with this feature -0.0 and 0.0 are adjacent.
-
- Jan 05, 1998
-
-
dtc authored
specifiers by Raymond Toy. With these changes -0.0 and 0.0 and considered separate on the float type intervals which is more natural for many arithmetic function derive type optimizers. These changes are dependent upon the :negative-zero-is-not-zero feature.
-
- Dec 18, 1997
-
-
dtc authored
type union and intersection which were all doing the opposition of what they should have. E.g. The intersection of (double-float 0d0) and (double-float (0d0)) was returning a bound of 0d0 whereas (0d0) is more restrictive.
-
- Sep 05, 1997
-
-
dtc authored
-
- Oct 31, 1994
-
-
ram authored
-
- Feb 11, 1994
-
-
cvs2git authored
-
- Sep 03, 1993
-
-
ram authored
-
- Sep 01, 1993
-
-
ram authored
-
- Aug 31, 1993
- Aug 25, 1993
-
-
ram authored
-
- Aug 23, 1993
-
-
ram authored
alien-types) that have superclasses. This was especially problematic with the Dylan collection heterarchy, but some problems could arise with e.g. (subtypep `(member ,#'cons) '(function (t t) cons)) (not technically legal in CL, but used by the compiler on legal programs.)
-
- Aug 21, 1993
-
-
ram authored
-
- Aug 06, 1993
-
-
ram authored
Block-compile type/= with type=.
-
- Jul 30, 1993
-
-
ram authored
-
- Mar 14, 1993
-
-
ram authored
CTYPE-OF use it.
-
- Mar 13, 1993
-
-
ram authored
-
- Mar 01, 1993
-
-
ram authored
-
- Feb 25, 1993
-
-
ram authored
a member type.
-
- Feb 23, 1993
-
-
ram authored
-
- Feb 14, 1993
-
-
ram authored
-
- Feb 10, 1993
-
-
ram authored
non-base strings in array unparsing. Delete base-char deftype now that it is a class
-
- Feb 08, 1993
-
-
ram authored
random things can be subtypes of T. Change TYPE-SPECIFIER to include CLASS. Fix some stuff to work.
-
- Feb 04, 1993
-
-
ram authored
-