- Nov 05, 2007
-
-
rtoy authored
simple-streams buffers) into LISP and removes them from simple-streams (and from EXT). Use boot-2007-11-1.lisp to bootstrap the necessary symbol changes. Patch from Paul Foley.
-
- Jul 18, 2006
-
-
rtoy authored
causes a crash somewhere. Don't know why this doesn't work, but I thought it was working a short time ago.
-
- Jul 07, 2006
-
-
rtoy authored
a FLOAT type. (We were silently dropping the bounds before.)
-
- Jun 30, 2006
-
-
rtoy authored
The merge is from the tag "double-double-irrat-end". The double-double branch is now obsolete. The code should build without double-double support (tested on sparc) as well as build with double-double support (tested also on sparc).
-
- May 09, 2005
-
-
rtoy authored
can intersect any array, Fixes ansi-test misc.537.
-
- Apr 24, 2005
-
-
rtoy authored
Fixes misc.60 ansi-test.
-
- Feb 21, 2005
-
-
rtoy authored
computing the union of a bunch of disjoint integer types, usually from some DO loop. This fix implements a hack to short-circuit that case by checking to see if the union is long enough and instead of returning the precise union, we return the smallest interval that contains all of the integer types in the union. The max length of the union is set by *union-length-threshold*, defaulting to 50. This is a gross hack. We should do something better than this.
-
- Nov 10, 2004
-
-
rtoy authored
low or high were double-floats outside the range of single-floats. We now silently treat them as if they were * (unbounded). Fixes ansi-test real.1 and real.2 failures.
-
- Sep 09, 2004
-
-
rtoy authored
(Bug from Bruno Haible, cmucl-imp 2004-09-08.)
-
- Sep 08, 2004
-
-
rtoy authored
the compiler about what COMPLEX and (COMPLEX REAL) are. They should be the same. - Make (COMPLEX *) be the same as (COMPLEX REAL), because we were creating a plain COMPLEX, which isn't what we want. - If the typespec is a subtype of RATIONAL, return (COMPLEX RATIONAL). o Make (COMPLEX REAL) print out as COMPLEX instead of as a union of specialized complex types. o Modify CTYPE-OF-NUMBER so that it no longer creates (COMPLEX (INTEGER low high)) types; these are now (COMPLEX RATIONAL). This fixes a bug where (type-of #c(0 1/2)) was giving an error. (This is fixes the bug by removing the offending code. But do we really want and need to support (COMPLEX INTEGER) types in the compiler? Shouldn't (COMPLEX RATIONAL) be good enough?)
-
- Oct 09, 2003
-
-
gerd authored
SUBTYPE.CONS.23, for example. From Christophe Rhodes, port from SBCL.
-
- 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.
-