- Aug 04, 2003
-
-
gerd authored
unknown types. From SBCL.
-
- Jul 03, 2003
-
-
gerd authored
(function :simple-intersaction): If type1 = type2 return type1. (type-intersection2): If type1 and type2 are function-types, let the intersection method run.
-
- May 08, 2003
-
-
gerd authored
fixes the problem that CMUCL generated RETURN-MULTIPLE without a good reason. * src/compiler/checkgen.lisp (values-types-asserted): Use coerce-to-values again. Add fixme comments and #+nil code for known problems; these aren't new problem, though. * src/code/type.lisp (coerce-to-values): Don't add &rest t, which is the business of THE. (values) <type translator>: Disallow &key and &allow-other-keys. * src/compiler/ir1tran.lisp (the) <IR1 translator>: Add &rest t where appropriate, or-in null type into required types, for missing values.
-
- Apr 27, 2003
-
-
toy authored
the non-ANSI feature of making -0 and +0 different in type-specifiers. Internal code still assumes this in various places, however. Since our type system is much smarter now than when this was written (and handles type unions and member types much better), perhaps we should clean this up?
-
- Apr 26, 2003
-
-
gerd authored
constant-folding tests for generic-functionness. Fix intersection of function types and generic-function. * src/code/type.lisp (type-intersection2): Handle intersection of FUNCTION-TYPEs with non-FUNCTION-TYPEs, like generic-function. * src/compiler/typetran.lisp (ir1-transform-type-predicate) (typep): Handle generic-function type tests differently. * src/code/class.lisp (class) <:complex-subtypep-arg1>: New type method for function = (function * *).
-
- Apr 24, 2003
-
-
gerd authored
to compare bounds with = instead of eql. From Christophe Rhodes.
-
- Apr 23, 2003
-
-
gerd authored
Rhodes. * src/code/type.lisp (member-type): Add :constructor. (make-member-type): New function. (not) <type translator>: Treat member types specially.
-
gerd authored
Temporary fix for -0d0/0d0 and member types. * src/code/type.lisp (reparse-unknown-type): New function. (type-union2, type-intersection2): Use it. (hierarchical-intersection2, hierarchical-union2): Moved to typedef.lisp. (member): Temporary fix for -0d0/0d0 problem; Christophe Rhodes is working on the real fix. * src/code/typedefs.lisp (type-class): Use hierachical-union2 and hierachical-intersection2 as inits for slots simple-union and simple-intersection, like SBCL does. (hierarchical-intersection2, hierarchical-union2): Moved here from type.lisp.
-
- Apr 17, 2003
-
-
toy authored
-
- Apr 16, 2003
-
-
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.
-
- Apr 15, 2003
-
-
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.
-
- Apr 13, 2003
-
-
gerd authored
Declaim inline.
-
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.
-
- Mar 22, 2003
-
-
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.
-
- Mar 18, 2003
-
-
toy authored
bug cons-union-method-inaccurate.
-
- Feb 03, 2003
-
-
toy authored
into (cons t). o The type (cons nil *) and (cons * nil) are both of type nil. Check for this and make it so.
-
- Dec 07, 2002
-
-
toy authored
by explicitly checking for this case. o In member :complex-subtypep-arg2, handle the case of the second being of type NULL. This makes (subtypep 'atom 'list) work. All the type stuff needs more work. May use some ideas from SBCL?
-
- Dec 04, 2002
-
-
toy authored
is the type T. (This still needs more work.) o Put back the original hairy :complex-subtypep-arg1 case to handle AND specifiers. This still needs more work too.
-
- Nov 13, 2002
-
-
toy authored
Bug noted by Paul Dietz, fix by Gerd Moellmann.
-
- Oct 23, 2002
-
-
toy authored
subtypep-too-certain-about-satisfies-undefined-function Port over the SBCL fix.
-
- Oct 22, 2002
-
-
toy authored
numeric-types-with-empty-ranges-cause-errors We silently accept numeric types with empty ranges and treat that as the empty type.
-
- Oct 16, 2002
-
-
toy authored
atom-type-not-completely-understood-by-subtypep This is ported from the fix used by SBCL.
-
- Aug 23, 2002
-
-
pmai authored
reporting in several places to be more specific and/or ANSI compliant. The patches have been modified to make use of the new common simple-programm-error function where applicable.
-
- Aug 12, 2002
-
-
toy authored
needs work, but should handle most common cases.
-
- Feb 23, 2002
-
-
pmai authored
report meaningful subtype information for types like ratio, which are internally expanded to hairy and types, but where the standard requires us to return valid subtype relationships with other built-in types, like e.g. rational.
-
- Nov 22, 2001
-
-
pw authored
-
- Mar 04, 2001
-
-
pw authored
-
- Jul 07, 2000
-
-
dtc authored
return values, and replace them with function argument declarations which the compiler move carefully checks.
-
- 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.
-