/[cmucl]/src/code/type.lisp
ViewVC logotype

Log of /src/code/type.lisp

Parent Directory Parent Directory | Revision Log Revision Log


Links to HEAD: (view) (annotate)
Sticky Tag:

Revision 1.84 - (view) (annotate) - [select for diffs]
Tue Apr 20 17:57:45 2010 UTC (3 years, 11 months ago) by rtoy
Branch: MAIN
CVS Tags: GIT-CONVERSION, HEAD, RELEASE_20b, cross-sol-x86-2010-12-20, cross-sol-x86-base, cross-sol-x86-merged, cross-sparc-branch-base, release-20b-pre1, release-20b-pre2, snapshot-2010-05, snapshot-2010-06, snapshot-2010-07, snapshot-2010-08, snapshot-2010-11, snapshot-2010-12, snapshot-2011-01, snapshot-2011-02, snapshot-2011-03, snapshot-2011-04, snapshot-2011-06, snapshot-2011-07, snapshot-2011-09, sparc-tramp-assem-2010-07-19, sparc-tramp-assem-base
Branch point for: RELEASE-20B-BRANCH, cross-sol-x86-branch, cross-sparc-branch, sparc-tramp-assem-branch
Changes since 1.83: +27 -27 lines
Diff to previous 1.83
Change uses of _"foo" to (intl:gettext "foo").  This is because slime
may get confused with source locations if the reader macros are
installed.

Revision 1.83 - (view) (annotate) - [select for diffs]
Mon Apr 19 02:18:04 2010 UTC (3 years, 11 months ago) by rtoy
Branch: MAIN
Changes since 1.82: +6 -6 lines
Diff to previous 1.82
Remove _N"" reader macro from docstrings when possible.

Revision 1.82 - (view) (annotate) - [select for diffs]
Fri Mar 19 15:19:00 2010 UTC (4 years ago) by rtoy
Branch: MAIN
CVS Tags: post-merge-intl-branch, snapshot-2010-04
Changes since 1.81: +32 -30 lines
Diff to previous 1.81
Merge intl-branch 2010-03-18 to HEAD.  To build, you need to use
boot-2010-02-1 as the bootstrap file.  You should probably also use
the new -P option for build.sh to generate and update the po files
while building.

Revision 1.81.14.1 - (view) (annotate) - [select for diffs]
Thu Feb 25 20:34:52 2010 UTC (4 years, 1 month ago) by rtoy
Branch: intl-2-branch
Changes since 1.81: +32 -30 lines
Diff to previous 1.81 , to next main 1.84
Restart internalization work.  This new branch starts with code from
the intl-branch on date 2010-02-12 18:00:00+0500.  This version works
and

LANG=en@piglatin bin/lisp

works (once the piglatin translation is added).

Revision 1.81.12.2 - (view) (annotate) - [select for diffs]
Wed Feb 10 04:01:27 2010 UTC (4 years, 2 months ago) by rtoy
Branch: intl-branch
CVS Tags: intl-branch-2010-03-18-1300, intl-branch-working-2010-02-11-1000, intl-branch-working-2010-02-19-1000
Changes since 1.81.12.1: +30 -30 lines
Diff to previous 1.81.12.1 , to branch point 1.81 , to next main 1.84
Mark translatable strings; update cmucl.pot and ko/cmucl.po
accordingly.

Revision 1.81.12.1 - (view) (annotate) - [select for diffs]
Mon Feb 8 17:15:49 2010 UTC (4 years, 2 months ago) by rtoy
Branch: intl-branch
Changes since 1.81: +3 -1 lines
Diff to previous 1.81
Add (intl:textdomain "cmucl") to the files to set the textdomain.

Revision 1.76.2.1.2.2 - (view) (annotate) - [select for diffs]
Wed Mar 25 21:51:34 2009 UTC (5 years ago) by rtoy
Branch: unicode-utf16-extfmt-branch
CVS Tags: unicode-snapshot-2009-05, unicode-snapshot-2009-06, unicode-utf16-extfmt-2009-03-27, unicode-utf16-extfmt-2009-06-11
Changes since 1.76.2.1.2.1: +19 -7 lines
Diff to previous 1.76.2.1.2.1 , to branch point 1.76.2.1 , to next main 1.76.2.3
Merge from unicode-utf16 branch, label
unicode-utf16-char-support-2009-03-25 to get character support.

Revision 1.76.2.3 - (view) (annotate) - [select for diffs]
Wed Mar 25 15:49:51 2009 UTC (5 years ago) by rtoy
Branch: unicode-utf16-branch
CVS Tags: unicode-utf16-char-support-2009-03-25, unicode-utf16-char-support-2009-03-26
Changes since 1.76.2.2: +19 -7 lines
Diff to previous 1.76.2.2 , to branch point 1.76 , to next main 1.84
Merge from HEAD, tag label-2009-03-25.

Still left Config.FreeBSD_gencgc (obsolete), Config.x86_freebsd,
FreeBSD-os.c and FreeBSD-os.h for Alex to merge.

Revision 1.81 - (view) (annotate) - [select for diffs]
Fri Mar 20 14:54:28 2009 UTC (5 years ago) by rtoy
Branch: MAIN
CVS Tags: RELEASE_20a, amd64-dd-start, intl-2-branch-base, intl-branch-base, label-2009-03-25, merged-unicode-utf16-extfmt-2009-06-11, portable-clx-base, portable-clx-import-2009-06-16, pre-merge-intl-branch, release-20a-base, release-20a-pre1, snapshot-2009-04, snapshot-2009-05, snapshot-2009-07, snapshot-2009-08, snapshot-2009-11, snapshot-2009-12, snapshot-2010-01, snapshot-2010-02, snapshot-2010-03, unicode-string-buffer-base, unicode-string-buffer-impl-base
Branch point for: RELEASE-20A-BRANCH, amd64-dd-branch, intl-2-branch, intl-branch, portable-clx-branch, unicode-string-buffer-branch, unicode-string-buffer-impl-branch
Changes since 1.80: +19 -7 lines
Diff to previous 1.80
This big of code causes CMUCL to spend huge amounts of time trying to
simplify the union of disjoint double-float types:

(defun foo (arg)
  (declare (type double-double-float arg)
	   (optimize (speed 3) (space 0)))
  (let* ((x arg)
	 (xx 0w0)
	 (k 0)
	 (px (coerce k 'double-double-float))
	 (qx 0w0))
    (declare (type double-double-float x xx px qx)
	     (notinline poly-eval poly-eval-1))
    (setf x (- (- x (* px log2-c1)) (* px log2-c2)))
    (+ x 0d0)
    ))

Fix it:

code/type.lisp:
o Rename SIMPLIFY-BIG-INTEGER-UNION to SIMPLIFY-BIG-UNION
o SIMPLIFY-BIG-UNION takes an extra arg to specify the resulting type.
o Modify SIMPLIFY-UNIONS to handle float unions as well as integer
  unions.

general-info/release-20a.txt:
o Update

Revision 1.76.2.1.2.1 - (view) (annotate) - [select for diffs]
Wed Mar 18 15:37:28 2009 UTC (5 years, 1 month ago) by rtoy
Branch: unicode-utf16-extfmt-branch
Changes since 1.76.2.1: +7 -6 lines
Diff to previous 1.76.2.1
Sync to utf16 branch, tag unicode-utf16-sync-label-2009-03-16.

Revision 1.76.2.2 - (view) (annotate) - [select for diffs]
Mon Mar 16 21:10:55 2009 UTC (5 years, 1 month ago) by rtoy
Branch: unicode-utf16-branch
CVS Tags: unicode-utf16-sync-label-2009-03-16
Changes since 1.76.2.1: +7 -6 lines
Diff to previous 1.76.2.1 , to branch point 1.76
Sync to CVS HEAD, tag label-2009-03-16.

But don't sync Config.FreeBSD_gencgc, Config.x86_freebsd,
FreeBSD-os.c, and FreeBSD-os.h.  Let Alex sync those later.

The result seems to work as expected on Solaris and x86/linux.
Darwin (ppc or x86) untested.

Revision 1.80 - (view) (annotate) - [select for diffs]
Tue Dec 23 14:36:58 2008 UTC (5 years, 3 months ago) by rtoy
Branch: MAIN
CVS Tags: RELEASE_19f, label-2009-03-16, merge-with-19f, release-19f-base, release-19f-pre1, snapshot-2009-01, snapshot-2009-02
Branch point for: RELEASE-19F-BRANCH
Changes since 1.79: +3 -5 lines
Diff to previous 1.79
Coercing the double-double-float bounds now works on ppc for the FLOAT
type translator.

Revision 1.79 - (view) (annotate) - [select for diffs]
Tue Dec 23 00:44:04 2008 UTC (5 years, 3 months ago) by rtoy
Branch: MAIN
Changes since 1.78: +3 -1 lines
Diff to previous 1.78
CLHS says the interval designator should have the same type as the
type.  Make it so for FLOAT.  Previously, we allowed any integers to
be used.  This makes the behavior of FLOAT match SINGLE-FLOAT and
DOUBLE-FLOAT which signaled errors if the bound wasn't a float of the
specified type.

Revision 1.78 - (view) (annotate) - [select for diffs]
Mon Dec 22 22:10:36 2008 UTC (5 years, 3 months ago) by rtoy
Branch: MAIN
Changes since 1.77: +3 -2 lines
Diff to previous 1.77
INNER-COERCE-REAL-BOUND needs to coerce to DOUBLE-DOUBLE-FLOAT, when
available.  Without this, we get things like

(c::specifier-type '(real 1d0 100/9)) ->
#<UNION-TYPE (OR (SINGLE-FLOAT 1.0 11.111111)
                 (DOUBLE-FLOAT 1.0d0 11.11111111111111d0)
                 (DOUBLE-DOUBLE-FLOAT 1.0w0
                  11.1111111111111107163651467999443w0)
                 (RATIONAL 1 100/9))>

instead of

#<UNION-TYPE (OR (SINGLE-FLOAT 1.0 11.111111)
                 (DOUBLE-FLOAT 1.0d0 11.11111111111111d0)
                 (DOUBLE-DOUBLE-FLOAT 1.0w0
                  11.1111111111111111111111111111111w0)
                 (RATIONAL 1 100/9))>

The bound for double-double-float is not quite correct in the former
result, and is correct in the latter.

Revision 1.76.2.1 - (view) (annotate) - [select for diffs]
Fri May 23 18:29:16 2008 UTC (5 years, 10 months ago) by rtoy
Branch: unicode-utf16-branch
CVS Tags: unicode-utf16-extfmts-pre-sync-2008-11, unicode-utf16-extfmts-sync-2008-12, unicode-utf16-sync-2008-07, unicode-utf16-sync-2008-09, unicode-utf16-sync-2008-11, unicode-utf16-sync-2008-12
Branch point for: unicode-utf16-extfmt-branch
Changes since 1.76: +6 -3 lines
Diff to previous 1.76
Merge PPC changes from HEAD branch.

Revision 1.77 - (view) (annotate) - [select for diffs]
Fri May 23 03:51:23 2008 UTC (5 years, 10 months ago) by rtoy
Branch: MAIN
CVS Tags: merge-sse2-packed, snapshot-2008-06, snapshot-2008-07, snapshot-2008-08, snapshot-2008-09, snapshot-2008-10, snapshot-2008-11, snapshot-2008-12, sse2-base, sse2-checkpoint-2008-10-01, sse2-merge-with-2008-10, sse2-merge-with-2008-11, sse2-packed-2008-11-12, sse2-packed-base
Branch point for: sse2-branch, sse2-packed-branch
Changes since 1.76: +6 -3 lines
Diff to previous 1.76
Double-double float bounds don't work on ppc/darwin for some reason.
Disable them.  (This causes the build to either exit silently, or to
hang loading fndb.  Did not investigate why.)

Revision 1.76 - (view) (annotate) - [select for diffs]
Thu Apr 3 18:10:29 2008 UTC (6 years ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2008-05, unicode-utf16-base, unicode-utf16-string-support
Branch point for: unicode-utf16-branch
Changes since 1.75: +3 -4 lines
Diff to previous 1.75
Enable double-double-float bounds for the FLOAT type translator.
That's working now.  (But general type derivation for
double-double-float's isn't working as expected.  Many things are
derived as unbounded double-double-float instead of something much
smaller.)

Revision 1.75 - (view) (annotate) - [select for diffs]
Mon Nov 5 15:25:03 2007 UTC (6 years, 5 months ago) by rtoy
Branch: MAIN
CVS Tags: release-19e, release-19e-base, release-19e-pre1, release-19e-pre2, snapshot-2007-12, snapshot-2008-01, snapshot-2008-02, snapshot-2008-03, snapshot-2008-04
Branch point for: release-19e-branch
Changes since 1.74: +5 -1 lines
Diff to previous 1.74
This removes some code duplication by moving bref, etc. (accessors for
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.

Revision 1.74 - (view) (annotate) - [select for diffs]
Tue Jul 18 18:31:38 2006 UTC (7 years, 9 months ago) by rtoy
Branch: MAIN
CVS Tags: pre-telent-clx, release-19d, release-19d-base, release-19d-pre1, release-19d-pre2, snapshot-2006-08, snapshot-2006-09, snapshot-2006-10, snapshot-2006-11, snapshot-2006-12, snapshot-2007-01, snapshot-2007-02, snapshot-2007-03, snapshot-2007-04, snapshot-2007-05, snapshot-2007-06, snapshot-2007-07, snapshot-2007-08, snapshot-2007-09, snapshot-2007-10, snapshot-2007-11
Branch point for: release-19d-branch
Changes since 1.73: +4 -3 lines
Diff to previous 1.73
Don't add bounds for double-double-float component of float.  This
causes a crash somewhere.  Don't know why this doesn't work, but I
thought it was working a short time ago.

Revision 1.73 - (view) (annotate) - [select for diffs]
Fri Jul 7 14:04:01 2006 UTC (7 years, 9 months ago) by rtoy
Branch: MAIN
Changes since 1.72: +4 -3 lines
Diff to previous 1.72
Include the bounds for double-double-float when we specify bounds for
a FLOAT type.  (We were silently dropping the bounds before.)

Revision 1.72 - (view) (annotate) - [select for diffs]
Fri Jun 30 18:41:22 2006 UTC (7 years, 9 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2006-07
Changes since 1.71: +16 -6 lines
Diff to previous 1.71
This large checkin merges the double-double float support to HEAD.
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).

Revision 1.71.6.1.4.2 - (view) (annotate) - [select for diffs]
Tue Jun 27 20:02:32 2006 UTC (7 years, 9 months ago) by rtoy
Branch: double-double-array-branch
CVS Tags: double-double-array-checkpoint, double-double-irrat-end, double-double-irrat-start
Changes since 1.71.6.1.4.1: +4 -2 lines
Diff to previous 1.71.6.1.4.1 , to branch point 1.71.6.1
Update files so we can build this double-double code with
double-double feature disabled.  Basically, add some missing reader
conditionalization, and put back the dylan-function-header type as
needed.

Revision 1.71.6.1.4.1 - (view) (annotate) - [select for diffs]
Sat Jun 17 02:59:42 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-array-branch
CVS Tags: double-double-sparc-checkpoint-1
Changes since 1.71.6.1: +3 -1 lines
Diff to previous 1.71.6.1
Initial support for (complex double-double-float).

Use boot-2006-06-2-cross-dd* to cross compile this change (along with
the simple-array double-double-float change).

Revision 1.71.6.1 - (view) (annotate) - [select for diffs]
Fri Jun 9 16:04:58 2006 UTC (7 years, 10 months ago) by rtoy
Branch: double-double-branch
CVS Tags: double-double-array-base, double-double-init-%make-sparc, double-double-init-checkpoint-1, double-double-init-ppc, double-double-init-sparc, double-double-init-sparc-2, double-double-init-x86, double-double-reader-base, double-double-reader-checkpoint-1
Branch point for: double-double-array-branch, double-double-reader-branch
Changes since 1.71: +12 -6 lines
Diff to previous 1.71 , to next main 1.84
Add basic support for kernel:double-double-float type.  The primitive
type is there, and basic arithmetic operations work as well as PRINT.
But many things do not work: No reader, formatted output, many mixed
type arithmetic operations, special functions are just double-float
values, coerced to double-double-float.

compiler/generic/interr.lisp:
o Add new error

compiler/generic/new-genesis.lisp:
o Dump double-double-float objects (barely tested)

compiler/generic/primtype.lisp:
o Tell compiler about the new primitive type double-double-float.

compiler/generic/vm-fndb.lisp:
o Make double-double-float-p a known function.

compiler/generic/vm-type.lisp:
o Update FLOAT-FORMAT-NAME to include double-double-float

compiler/generic/vm-typetran.lisp:
o Tell compiler about double-double-float type predicate.

compiler/sparc/float.lisp:
o Add necessary vops to move double-double-float args, store and load
  double-double-floats to/from the double-double-stack,
  double-double-reg moves, box and unbox double-double-floats, move
  double-double-floats to and from args
o Add necessary vops to create a double-double-float and to extract
  the high and low parts out of a double-double-float.

compiler/sparc/parms.lisp:
o Define double-double-float-digits

compiler/sparc/type-vops.lisp:
o Define double-double-float type vop
o Adjust number hierarchy to include double-double-float

compiler/sparc/vm.lisp:
o Define the necessary storage class and storage base for the
  double-double-reg and double-double-stack.

lisp/gencgc.c:
o Tell GC about double-double-float objects.

lisp/purify.c:
o Tell purify about double-double-float objects.

code/class.lisp:
o Add the new double-double-float class.

code/exports.lisp:
o Add the necessary symbols to the various packages.  (This is
  important to get right otherwise there's confusion on what symbol
  really represents double-double-float stuff.)

code/float.lisp:
o Implement some of the necessary functions to support
  double-double-float.

code/hash-new.lisp:
o Hash double-double-floats by xor'ing the hashes of each double-float
  part.  (Is that good enough?)

code/irrat.lisp:
o Implement the special functions by calling the double-float versions
  and coercing the result to a double-double-float.  This is needed to
  get type-derivation working, but the precise value isn't that
  important right now.  We'll have to implement them later.

code/kernel.lisp:
o Make make-double-double-float, double-double-hi, and
  double-double-lo known functions.

code/lispinit.lisp:
o Register the :double-double float feature.

code/load.lisp:
o Add FOP for reading double-double-float values from fasls.  (Barely
  tested, if at all.)

code/numbers.lisp:
o Implement basic arithmetic operations for double-double-floats.
  This needs quite a bit of work to clean up, but most things work.

code/pred.lisp:
o Tell the type system about double-double-float type.

code/print.lisp:
o Add very rudimentary printing for double-double-float.  Basically
  copied from code written by Richard Fateman, with permission.

code/seq.lisp:
o Tell coerce how to coerce things to a double-double-float.

code/type.lisp:
o Tell type system about the new float format double-double-float and
  how numeric contagion works with double-double-float.

code/dump.lisp:
o Tell dumper how to dump double-double-float values to a fasl.

compiler/float-tran.lisp:
o Add appropriate deftransforms to handle conversion of things to
  double-double-float and from from double-double-float to other float
  types.
o The basic implmentation of double-double-float arithmetic is also
  here.
o Add deftransforms to tell the compiler how to do basic arithmetic
  and comparisions on double-double-float numbers.

compiler/srctran.lisp:
o Fix a bug in interval-range-info when :low is 0dd0 and :high is 0.
  We weren't returning the right value, which confuses interval-div,
  which caused an infinite loop because we couldn't split the
  numerator into positive and negative parts.
o Tell other parts about double-double-float.

Revision 1.68.2.2 - (view) (annotate) - [select for diffs]
Mon Dec 19 01:09:53 2005 UTC (8 years, 3 months ago) by rtoy
Branch: ppc_gencgc_branch
CVS Tags: ppc_gencgc_snap_2005-12-17, ppc_gencgc_snap_2006-01-06
Changes since 1.68.2.1: +3 -3 lines
Diff to previous 1.68.2.1 , to branch point 1.68 , to next main 1.84
Merge code from main branch of 2005-12-17 to ppc gencgc branch.  Still
doesn't work of course.

Revision 1.68.2.1 - (view) (annotate) - [select for diffs]
Sun May 15 20:01:22 2005 UTC (8 years, 11 months ago) by rtoy
Branch: ppc_gencgc_branch
Changes since 1.68: +39 -5 lines
Diff to previous 1.68
Merge snapshot-2005-05 to this branch.

Revision 1.71 - (view) (annotate) - [select for diffs]
Mon May 9 15:56:03 2005 UTC (8 years, 11 months ago) by rtoy
Branch: MAIN
CVS Tags: double-double-base, release-19b-base, release-19b-pre1, release-19b-pre2, release-19c, release-19c-base, release-19c-pre1, snapshot-2005-06, snapshot-2005-07, snapshot-2005-08, snapshot-2005-09, snapshot-2005-10, snapshot-2005-11, snapshot-2005-12, snapshot-2006-01, snapshot-2006-02, snapshot-2006-03, snapshot-2006-04, snapshot-2006-05, snapshot-2006-06
Branch point for: double-double-branch, release-19b-branch, release-19c-branch
Changes since 1.70: +3 -3 lines
Diff to previous 1.70
Complex arrays of any type, not just complex arrays of type :maybe,
can intersect any array,

Fixes ansi-test misc.537.

Revision 1.70 - (view) (annotate) - [select for diffs]
Sun Apr 24 02:38:34 2005 UTC (8 years, 11 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2005-05
Changes since 1.69: +2 -2 lines
Diff to previous 1.69
Oops.  Fix typo.  It's '*, not just *!

Fixes misc.60 ansi-test.

Revision 1.69 - (view) (annotate) - [select for diffs]
Mon Feb 21 14:52:38 2005 UTC (9 years, 1 month ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2005-03, snapshot-2005-04
Changes since 1.68: +39 -5 lines
Diff to previous 1.68
In some situations, the compiler spends an enormous amount of time
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.

Revision 1.68 - (view) (annotate) - [select for diffs]
Wed Nov 10 16:00:00 2004 UTC (9 years, 5 months ago) by rtoy
Branch: MAIN
CVS Tags: ppc_gencgc_snap_2005-05-14, snapshot-2004-12, snapshot-2005-01, snapshot-2005-02
Branch point for: ppc_gencgc_branch
Changes since 1.67: +17 -2 lines
Diff to previous 1.67
Compiler was not accepting type specifiers like (float low high) where
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.

Revision 1.67 - (view) (annotate) - [select for diffs]
Thu Sep 9 14:52:31 2004 UTC (9 years, 7 months ago) by rtoy
Branch: MAIN
CVS Tags: snapshot-2004-10, snapshot-2004-11
Changes since 1.66: +11 -6 lines
Diff to previous 1.66
(COMPLEX NIL) is the empty type, so handle that.

(Bug from Bruno Haible, cmucl-imp 2004-09-08.)

Revision 1.66 - (view) (annotate) - [select for diffs]
Wed Sep 8 15:01:47 2004 UTC (9 years, 7 months ago) by rtoy
Branch: MAIN
Changes since 1.65: +92 -77 lines
Diff to previous 1.65
o Change the def-type-translator for COMPLEX to fix some confusion in
  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?)

Revision 1.65 - (view) (annotate) - [select for diffs]
Thu Oct 9 15:50:01 2003 UTC (10 years, 6 months ago) by gerd
Branch: MAIN
CVS Tags: amd64-merge-start, mod-arith-base, prm-before-macosx-merge-tag, release-19a, release-19a-base, release-19a-pre1, release-19a-pre2, release-19a-pre3, snapshot-2003-11, snapshot-2003-12, snapshot-2004-04, snapshot-2004-05, snapshot-2004-06, snapshot-2004-07, snapshot-2004-08, snapshot-2004-09
Branch point for: mod-arith-branch, release-19a-branch
Changes since 1.64: +15 -8 lines
Diff to previous 1.64
	* src/code/type.lisp (cons) <simple-intersection>: Fix for
	SUBTYPE.CONS.23, for example.  From Christophe Rhodes, port from
	SBCL.

Revision 1.64 - (view) (annotate) - [select for diffs]
Mon Aug 4 17:30:03 2003 UTC (10 years, 8 months ago) by gerd
Branch: MAIN
CVS Tags: dynamic-extent-base, lisp-executable-base, snapshot-2003-10, sparc_gencgc, sparc_gencgc_merge
Branch point for: dynamic-extent, lisp-executable, sparc_gencgc_branch
Changes since 1.63: +12 -3 lines
Diff to previous 1.63
	* src/code/type.lisp (hairy complex-=): Do some more work for
	unknown types.  From SBCL.

Revision 1.63 - (view) (annotate) - [select for diffs]
Thu Jul 3 12:14:03 2003 UTC (10 years, 9 months ago) by gerd
Branch: MAIN
Changes since 1.62: +11 -6 lines
Diff to previous 1.62
	* src/code/type.lisp (function :simple-union)
	(function :simple-intersaction): If type1 = type2 return type1.
	(type-intersection2): If type1 and type2 are function-types,
	let the intersection method run.

Revision 1.62 - (view) (annotate) - [select for diffs]
Thu May 8 14:52:04 2003 UTC (10 years, 11 months ago) by gerd
Branch: MAIN
Changes since 1.61: +10 -3 lines
Diff to previous 1.61
	Fix problems with THE detected by Paul Dietz' tests.  This also
	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.

Revision 1.61 - (view) (annotate) - [select for diffs]
Sun Apr 27 14:52:27 2003 UTC (10 years, 11 months ago) by toy
Branch: MAIN
Changes since 1.60: +3 -64 lines
Diff to previous 1.60
Remove all stuff relating to :negative-zero-is-not-zero which enabled
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?

Revision 1.60 - (view) (annotate) - [select for diffs]
Sat Apr 26 18:24:46 2003 UTC (10 years, 11 months ago) by gerd
Branch: MAIN
CVS Tags: remove_negative_zero_not_zero
Changes since 1.59: +11 -1 lines
Diff to previous 1.59
	CLASS-04.[2345], CONDITION-27-READER-IS-GENERIC, compiled.  Avoid
	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 * *).

Revision 1.59 - (view) (annotate) - [select for diffs]
Thu Apr 24 10:32:23 2003 UTC (10 years, 11 months ago) by gerd
Branch: MAIN
Changes since 1.58: +3 -3 lines
Diff to previous 1.58
	* src/code/type.lisp (number): Use equalp instead of equal
	to compare bounds with = instead of eql.  From Christophe Rhodes.

Revision 1.58 - (view) (annotate) - [select for diffs]
Wed Apr 23 17:36:57 2003 UTC (10 years, 11 months ago) by gerd
Branch: MAIN
Changes since 1.57: +67 -1 lines
Diff to previous 1.57
	Final fix for -0d0/0d0 and member types from Christophe
	Rhodes.

	* src/code/type.lisp (member-type): Add :constructor.
	(make-member-type): New function.
	(not) <type translator>: Treat member types specially.

Revision 1.57 - (view) (annotate) - [select for diffs]
Wed Apr 23 15:19:41 2003 UTC (10 years, 11 months ago) by gerd
Branch: MAIN
Changes since 1.56: +19 -21 lines
Diff to previous 1.56
	Make the type system more forgiving wrt to unknown types.
	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.

Revision 1.56 - (view) (annotate) - [select for diffs]
Thu Apr 17 21:19:04 2003 UTC (11 years ago) by toy
Branch: MAIN
Changes since 1.55: +2 -2 lines
Diff to previous 1.55
One is a valid length for a signed-byte length.

Revision 1.55 - (view) (annotate) - [select for diffs]
Wed Apr 16 13:07:50 2003 UTC (11 years ago) by gerd
Branch: MAIN
Changes since 1.54: +378 -460 lines
Diff to previous 1.54
	Further speed-up of the type system.  Avoid compiler notes.
	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.

Revision 1.54 - (view) (annotate) - [select for diffs]
Tue Apr 15 23:07:10 2003 UTC (11 years ago) by gerd
Branch: MAIN
Changes since 1.53: +33 -24 lines
Diff to previous 1.53
	Speed up the type system.

	* 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.

Revision 1.53 - (view) (annotate) - [select for diffs]
Sun Apr 13 21:20:40 2003 UTC (11 years ago) by gerd
Branch: MAIN
Changes since 1.52: +2 -1 lines
Diff to previous 1.52
	* src-head/code/type.lisp (type-might-contain-other-types-p):
	Declaim inline.

Revision 1.52 - (view) (annotate) - [select for diffs]
Sun Apr 13 11:57:17 2003 UTC (11 years ago) by gerd
Branch: MAIN
Changes since 1.51: +1485 -723 lines
Diff to previous 1.51
  	The SEQUENCE-COUNT type was previously used in c:fndb, but since
	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.

Revision 1.51 - (view) (annotate) - [select for diffs]
Sat Mar 22 16:15:20 2003 UTC (11 years ago) by gerd
Branch: MAIN
Changes since 1.50: +21 -16 lines
Diff to previous 1.50
* bootfiles/18e/boot[12].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.

Revision 1.49.2.2 - (view) (annotate) - [select for diffs]
Fri Mar 21 00:03:43 2003 UTC (11 years ago) by gerd
Branch: cold-pcl
Changes since 1.49.2.1: +2 -2 lines
Diff to previous 1.49.2.1 , to branch point 1.49 , to next main 1.84
Merge with HEAD.

Revision 1.49.2.1 - (view) (annotate) - [select for diffs]
Wed Mar 19 16:45:31 2003 UTC (11 years, 1 month ago) by gerd
Branch: cold-pcl
Changes since 1.49: +21 -16 lines
Diff to previous 1.49
* 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:
Changes for lisp:class = pcl:class.

* compiler/dump.lisp, compiler/fndb.lisp, compiler/globaldb.lisp:
* compiler/ir1tran.lisp, compiler/ir1util.lisp:
* compiler/node.lisp, compiler/proclaim.lisp, compiler/typetran.lisp:
* compiler/xref.lisp, compiler/generic/primtype.lisp:
* compiler/generic/vm-type.lisp:
Likewise.

* code/class.lisp (toplevel): Shadow class, built-in-class etc.
(class): Give it conc-name %class-.
(toplevel) [#-lisp-class-is-pcl-class]: Define old accessors.
(everywhere): Use new class accessors.

* code/byte-interp.lisp (load-type-predicate):
Use kernel::structure-class instead of structure-class.

Revision 1.50 - (view) (annotate) - [select for diffs]
Tue Mar 18 05:35:28 2003 UTC (11 years, 1 month ago) by toy
Branch: MAIN
CVS Tags: release-18e, release-18e-base, release-18e-pre1, release-18e-pre2
Branch point for: release-18e-branch
Changes since 1.49: +2 -2 lines
Diff to previous 1.49
Correct the typos in the cons simple-union method.  Fixes Entomotomy
bug cons-union-method-inaccurate.

Revision 1.49 - (view) (annotate) - [select for diffs]
Mon Feb 3 15:19:38 2003 UTC (11 years, 2 months ago) by toy
Branch: MAIN
CVS Tags: cold-pcl-base
Branch point for: cold-pcl
Changes since 1.48: +16 -6 lines
Diff to previous 1.48
o Make type (cons *) the same as type (cons t) by smashing (cons *)
  into (cons t).
o The type (cons nil *) and (cons * nil) are both of type nil.  Check
  for this and make it so.

Revision 1.48 - (view) (annotate) - [select for diffs]
Sat Dec 7 16:54:54 2002 UTC (11 years, 4 months ago) by toy
Branch: MAIN
Changes since 1.47: +12 -1 lines
Diff to previous 1.47
o A hack to make (subtypep 'keyword 'symbol) produce the right answer,
  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?

Revision 1.47 - (view) (annotate) - [select for diffs]
Wed Dec 4 17:25:55 2002 UTC (11 years, 4 months ago) by toy
Branch: MAIN
Changes since 1.46: +16 -5 lines
Diff to previous 1.46
o Make named :complex-subtypep-arg2 return T, T when the second type
  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.

Revision 1.46 - (view) (annotate) - [select for diffs]
Wed Nov 13 19:47:19 2002 UTC (11 years, 5 months ago) by toy
Branch: MAIN
Changes since 1.45: +4 -1 lines
Diff to previous 1.45
Make REMOVE and friends handle negative or bignum :count arguments.
Bug noted by Paul Dietz, fix by Gerd Moellmann.

Revision 1.45 - (view) (annotate) - [select for diffs]
Wed Oct 23 00:47:38 2002 UTC (11 years, 5 months ago) by toy
Branch: MAIN
Changes since 1.44: +2 -3 lines
Diff to previous 1.44
Fix entomotomy bug

subtypep-too-certain-about-satisfies-undefined-function

Port over the SBCL fix.

Revision 1.44 - (view) (annotate) - [select for diffs]
Tue Oct 22 13:09:02 2002 UTC (11 years, 5 months ago) by toy
Branch: MAIN
Changes since 1.43: +16 -12 lines
Diff to previous 1.43
Fix for the Entomotomy bug

numeric-types-with-empty-ranges-cause-errors

We silently accept numeric types with empty ranges and treat that as
the empty type.

Revision 1.43 - (view) (annotate) - [select for diffs]
Wed Oct 16 18:35:14 2002 UTC (11 years, 6 months ago) by toy
Branch: MAIN
Changes since 1.42: +86 -1 lines
Diff to previous 1.42
Fix for the Entomotomy bug

atom-type-not-completely-understood-by-subtypep

This is ported from the fix used by SBCL.

Revision 1.42.2.1 - (view) (annotate) - [select for diffs]
Fri Oct 4 23:13:36 2002 UTC (11 years, 6 months ago) by pmai
Branch: UNICODE-BRANCH
Changes since 1.42: +70 -4 lines
Diff to previous 1.42 , to next main 1.84
Checked in Brian Spilsbury's experimental Unicode, locales, and dialect
support patchset.  This lives on its own branch, so that people can
play with it and tweak it, without disturbing 18e release engineering
on the main branch.  Bootstrapping has only been tried on LINKAGE_TABLE
x86/Linux builds.  A working cross-compile script is checked in under
bootfiles/19a/boot1-cross-unicode.lisp.  The script still leaves you
with some interactive errors, on the cross compile, which you should
answer with 2.  See the mailing list for more information.

Revision 1.42 - (view) (annotate) - [select for diffs]
Fri Aug 23 18:31:05 2002 UTC (11 years, 7 months ago) by pmai
Branch: MAIN
CVS Tags: LINKAGE_TABLE, PRE_LINKAGE_TABLE, UNICODE-BASE
Branch point for: UNICODE-BRANCH
Changes since 1.41: +30 -19 lines
Diff to previous 1.41
Merged patches by Eric Marsden and Gerd Moellmann to improve error
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.

Revision 1.41 - (view) (annotate) - [select for diffs]
Mon Aug 12 21:13:54 2002 UTC (11 years, 8 months ago) by toy
Branch: MAIN
Changes since 1.40: +37 -12 lines
Diff to previous 1.40
Try to handle more component type specifiers for type COMPLEX.  Still
needs work, but should handle most common cases.

Revision 1.21.2.8 - (view) (annotate) - [select for diffs]
Sat Mar 23 18:50:13 2002 UTC (12 years ago) by pw
Branch: RELENG_18
CVS Tags: RELEASE_18d
Changes since 1.21.2.7: +55 -29 lines
Diff to previous 1.21.2.7 , to branch point 1.21 , to next main 1.84
Mega commit to bring RELENG_18 branch in sync with HEAD in preparation
for release tagging 18d.

Revision 1.40 - (view) (annotate) - [select for diffs]
Sat Feb 23 01:48:57 2002 UTC (12 years, 1 month ago) by pmai
Branch: MAIN
Changes since 1.39: +29 -10 lines
Diff to previous 1.39
Added limited handling of subtypep for hairy and types, so that we can
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.

Revision 1.39 - (view) (annotate) - [select for diffs]
Thu Nov 22 13:39:15 2001 UTC (12 years, 4 months ago) by pw
Branch: MAIN
Changes since 1.38: +26 -19 lines
Diff to previous 1.38
dtc's fix for (describe #c(1 1/2)).

Revision 1.38 - (view) (annotate) - [select for diffs]
Sun Mar 4 20:12:44 2001 UTC (13 years, 1 month ago) by pw
Branch: MAIN
Changes since 1.37: +2 -2 lines
Diff to previous 1.37
Change most PROCLAIMs to DECLAIMs.

Revision 1.21.2.7 - (view) (annotate) - [select for diffs]
Sun Jul 9 14:03:03 2000 UTC (13 years, 9 months ago) by dtc
Branch: RELENG_18
CVS Tags: RELEASE_18c
Changes since 1.21.2.6: +20 -9 lines
Diff to previous 1.21.2.6 , to branch point 1.21
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.

Revision 1.21.2.6 - (view) (annotate) - [select for diffs]
Fri Jul 7 09:34:12 2000 UTC (13 years, 9 months ago) by dtc
Branch: RELENG_18
Changes since 1.21.2.5: +5 -5 lines
Diff to previous 1.21.2.5 , to branch point 1.21
Flush unnecessary function proclaim's some of which had incorrect
return values, and replace them with function argument declarations
which the compiler move carefully checks.

Revision 1.37 - (view) (annotate) - [select for diffs]
Fri Jul 7 09:32:51 2000 UTC (13 years, 9 months ago) by dtc
Branch: MAIN
Changes since 1.36: +5 -5 lines
Diff to previous 1.36
Flush unnecessary function proclaim's some of which had incorrect
return values, and replace them with function argument declarations
which the compiler move carefully checks.

Revision 1.36 - (view) (annotate) - [select for diffs]
Thu Jul 6 18:36:40 2000 UTC (13 years, 9 months ago) by dtc
Branch: MAIN
Changes since 1.35: +20 -9 lines
Diff to previous 1.35
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.

Revision 1.21.2.5 - (view) (annotate) - [select for diffs]
Thu Jul 6 07:01:47 2000 UTC (13 years, 9 months ago) by dtc
Branch: RELENG_18
Changes since 1.21.2.4: +20 -7 lines
Diff to previous 1.21.2.4 , to branch point 1.21
Correct single-value-type to return the union with the null type for
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.

Revision 1.35 - (view) (annotate) - [select for diffs]
Thu Jul 6 04:35:35 2000 UTC (13 years, 9 months ago) by dtc
Branch: MAIN
Changes since 1.34: +20 -7 lines
Diff to previous 1.34
Correct single-value-type to return the union with the null type for
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.

Revision 1.21.2.4 - (view) (annotate) - [select for diffs]
Tue Jun 27 16:32:14 2000 UTC (13 years, 9 months ago) by dtc
Branch: RELENG_18
Changes since 1.21.2.3: +2 -2 lines
Diff to previous 1.21.2.3 , to branch point 1.21
Fix for the values type :simple-= method which was incorrectly always
returning nil when both types had a rest type even if these were type=;
from Robert Maclachlan.

Revision 1.34 - (view) (annotate) - [select for diffs]
Tue Jun 27 16:31:52 2000 UTC (13 years, 9 months ago) by dtc
Branch: MAIN
Changes since 1.33: +2 -2 lines
Diff to previous 1.33
Fix for the values type :simple-= method which was incorrectly always
returning nil when both types had a rest type even if these were type=;
from Robert Maclachlan.

Revision 1.21.2.3 - (view) (annotate) - [select for diffs]
Tue May 23 16:36:52 2000 UTC (13 years, 10 months ago) by pw
Branch: RELENG_18
Changes since 1.21.2.2: +89 -7 lines
Diff to previous 1.21.2.2 , to branch point 1.21
This set of revisions brings the RELENG_18 branch up to HEAD in preparation
for an 18c release.

Revision 1.33 - (view) (annotate) - [select for diffs]
Tue May 2 04:44:06 2000 UTC (13 years, 11 months ago) by dtc
Branch: MAIN
Changes since 1.32: +75 -2 lines
Diff to previous 1.32
Implement a specializing CONS class as per issue CONS-TYPE-SPECIFIER:ADD.
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.

Revision 1.32 - (view) (annotate) - [select for diffs]
Mon Jan 10 14:47:02 2000 UTC (14 years, 3 months ago) by dtc
Branch: MAIN
Changes since 1.31: +6 -5 lines
Diff to previous 1.31
Extend the union type :unparse method to recognise the new translated
bignum type.

Revision 1.31 - (view) (annotate) - [select for diffs]
Wed Aug 19 15:19:35 1998 UTC (15 years, 8 months ago) by dtc
Branch: MAIN
Changes since 1.30: +10 -2 lines
Diff to previous 1.30
The numeric-contagion of a real with a double-float is a double-float
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.

Revision 1.21.2.2 - (view) (annotate) - [select for diffs]
Tue Jun 23 11:22:35 1998 UTC (15 years, 9 months ago) by pw
Branch: RELENG_18
CVS Tags: RELEASE_18b
Changes since 1.21.2.1: +110 -13 lines
Diff to previous 1.21.2.1 , to branch point 1.21
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.

Revision 1.30 - (view) (annotate) - [select for diffs]
Tue May 19 02:07:29 1998 UTC (15 years, 11 months ago) by dtc
Branch: MAIN
Changes since 1.29: +4 -3 lines
Diff to previous 1.29
Fix for recent changes to the handling of the 'not type specifier in
hairy subtype methods.

Revision 1.29 - (view) (annotate) - [select for diffs]
Wed May 13 04:03:40 1998 UTC (15 years, 11 months ago) by dtc
Branch: MAIN
Changes since 1.28: +25 -5 lines
Diff to previous 1.28
Handle a few 'not hairy type specifier subtypep cases, which overcomes
some problems with the 'atom type which is defined as (not cons).

Revision 1.28 - (view) (annotate) - [select for diffs]
Fri Apr 17 00:44:53 1998 UTC (16 years ago) by dtc
Branch: MAIN
Changes since 1.27: +2 -2 lines
Diff to previous 1.27
Redefine the extended-char type from Nil to (and character (not base-char))
which is a little better than Nil which is a subtype of everything.

Revision 1.27 - (view) (annotate) - [select for diffs]
Mon Feb 2 17:52:36 1998 UTC (16 years, 2 months ago) by dtc
Branch: MAIN
Changes since 1.26: +26 -3 lines
Diff to previous 1.26
Patch from Raymond Toy for the :negative-zero-is-not-zero feature:
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).

Revision 1.26 - (view) (annotate) - [select for diffs]
Wed Jan 21 00:55:14 1998 UTC (16 years, 2 months ago) by dtc
Branch: MAIN
Changes since 1.25: +3 -3 lines
Diff to previous 1.25
Fix typos in numeric-types-adjacent when compiled with the
:negative-zero-is-not-zero feature; from Raymond Toy.

Revision 1.25 - (view) (annotate) - [select for diffs]
Thu Jan 8 23:47:25 1998 UTC (16 years, 3 months ago) by dtc
Branch: MAIN
Changes since 1.24: +24 -4 lines
Diff to previous 1.24
Fix problems with float zeros in numeric-types-adjacent. Without the
zero-not-zero feature the sign of the float zeros should not matter;
and with this feature -0.0 and 0.0 are adjacent.

Revision 1.24 - (view) (annotate) - [select for diffs]
Mon Jan 5 22:34:56 1998 UTC (16 years, 3 months ago) by dtc
Branch: MAIN
Changes since 1.23: +34 -1 lines
Diff to previous 1.23
Change to the handling of floating point zeros within numeric type
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.

Revision 1.23 - (view) (annotate) - [select for diffs]
Thu Dec 18 16:49:10 1997 UTC (16 years, 4 months ago) by dtc
Branch: MAIN
Changes since 1.22: +5 -5 lines
Diff to previous 1.22
Fix the handling of mixed inclusive and exclusive bounds for number
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.

Revision 1.21.2.1 - (view) (annotate) - [select for diffs]
Fri Sep 5 19:17:11 1997 UTC (16 years, 7 months ago) by dtc
Branch: RELENG_18
CVS Tags: RELEASE_18a
Changes since 1.21: +3 -1 lines
Diff to previous 1.21
Add a deftype for EQL.

Revision 1.22 - (view) (annotate) - [select for diffs]
Fri Sep 5 19:12:10 1997 UTC (16 years, 7 months ago) by dtc
Branch: MAIN
Changes since 1.21: +3 -1 lines
Diff to previous 1.21
Add a deftype for EQL.

Revision 1.21 - (view) (annotate) - [select for diffs]
Mon Oct 31 04:11:27 1994 UTC (19 years, 5 months ago) by ram
Branch: MAIN
Branch point for: RELENG_18
Changes since 1.20: +1 -3 lines
Diff to previous 1.20
Fix headed boilerplate.

Revision 1.20 - (view) (annotate) - [select for diffs]
Fri Sep 3 13:44:19 1993 UTC (20 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.19: +4 -4 lines
Diff to previous 1.19
Tweaked the define-superclasses for ARRAY for Dylan semantics.

Revision 1.19 - (view) (annotate) - [select for diffs]
Wed Sep 1 00:09:19 1993 UTC (20 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.18: +2 -2 lines
Diff to previous 1.18
Hack to prevent type-intersection from delegating infinitely.

Revision 1.18 - (view) (annotate) - [select for diffs]
Tue Aug 31 21:33:16 1993 UTC (20 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.17: +2 -2 lines
Diff to previous 1.17
Type.

Revision 1.17 - (view) (annotate) - [select for diffs]
Tue Aug 31 20:21:15 1993 UTC (20 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.16: +18 -10 lines
Diff to previous 1.16
DEFINE-SUPERCLASSES complex intersection method needs to delegate too.

Revision 1.16 - (view) (annotate) - [select for diffs]
Tue Aug 31 13:26:00 1993 UTC (20 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.15: +5 -3 lines
Diff to previous 1.15
Don't use define-type-method in define-superclasses, since nested
cold-load-init's don't work.

Revision 1.15 - (view) (annotate) - [select for diffs]
Tue Aug 31 09:01:07 1993 UTC (20 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.14: +3 -2 lines
Diff to previous 1.14
Only signal *parse-unknown-type* when *type-system-initialized*

Revision 1.14 - (view) (annotate) - [select for diffs]
Wed Aug 25 01:15:35 1993 UTC (20 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.13: +2 -2 lines
Diff to previous 1.13
Fix compiler warnings.

Revision 1.13 - (view) (annotate) - [select for diffs]
Mon Aug 23 12:02:52 1993 UTC (20 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.12: +77 -29 lines
Diff to previous 1.12
Fixed semantics of various type-classes (CL arrays, numbers, functions &
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.)

Revision 1.12 - (view) (annotate) - [select for diffs]
Sat Aug 21 00:21:46 1993 UTC (20 years, 8 months ago) by ram
Branch: MAIN
Changes since 1.11: +6 -2 lines
Diff to previous 1.11
Spiffed up extract-function-type to hack byte functions.

Revision 1.11 - (view) (annotate) - [select for diffs]
Fri Aug 6 13:04:42 1993 UTC (20 years, 8 months ago) by ram
Branch: MAIN
Changes since 1.10: +8 -8 lines
Diff to previous 1.10
Made SINGLE-VALUE-TYPE inline, since it's not that long, and highly used.
Block-compile type/= with type=.

Revision 1.10 - (view) (annotate) - [select for diffs]
Fri Jul 30 11:00:19 1993 UTC (20 years, 8 months ago) by ram
Branch: MAIN
Changes since 1.9: +5 -4 lines
Diff to previous 1.9
(numeric-contagion single-float real) => float, not single-float

Revision 1.9 - (view) (annotate) - [select for diffs]
Sun Mar 14 17:16:15 1993 UTC (21 years, 1 month ago) by ram
Branch: MAIN
Changes since 1.8: +19 -7 lines
Diff to previous 1.8
Simplified CTYPE-OF to use CLASS-OF more.  Added EXTRACT-FUNCTION-TYPE and made
CTYPE-OF use it.

Revision 1.8 - (view) (annotate) - [select for diffs]
Sat Mar 13 17:07:45 1993 UTC (21 years, 1 month ago) by ram
Branch: MAIN
Changes since 1.7: +2 -2 lines
Diff to previous 1.7
generic-function -> funcallable-instance

Revision 1.7 - (view) (annotate) - [select for diffs]
Mon Mar 1 20:09:44 1993 UTC (21 years, 1 month ago) by ram
Branch: MAIN
Changes since 1.6: +4 -12 lines
Diff to previous 1.6
Rip out NS-BOOT conditionals.

Revision 1.6 - (view) (annotate) - [select for diffs]
Thu Feb 25 02:24:32 1993 UTC (21 years, 1 month ago) by ram
Branch: MAIN
Changes since 1.5: +3 -7 lines
Diff to previous 1.5
In CTYPE-OF, don't return standard-char anymore, since it is just
a member type.

Revision 1.5 - (view) (annotate) - [select for diffs]
Tue Feb 23 14:44:56 1993 UTC (21 years, 1 month ago) by ram
Branch: MAIN
Changes since 1.4: +6 -4 lines
Diff to previous 1.4
Member & hairy types aren't pure, but key-info's are.

Revision 1.4 - (view) (annotate) - [select for diffs]
Sun Feb 14 12:27:15 1993 UTC (21 years, 2 months ago) by ram
Branch: MAIN
Changes since 1.3: +2 -2 lines
Diff to previous 1.3
Oops... gotta return second value T in named-type =.

Revision 1.3 - (view) (annotate) - [select for diffs]
Wed Feb 10 23:41:49 1993 UTC (21 years, 2 months ago) by ram
Branch: MAIN
Changes since 1.2: +6 -6 lines
Diff to previous 1.2
*unparse-function-type-simplify* is NIL by default.  Add support for
non-base strings in array unparsing.  Delete base-char deftype now
that it is a class

Revision 1.2 - (view) (annotate) - [select for diffs]
Mon Feb 8 22:22:18 1993 UTC (21 years, 2 months ago) by ram
Branch: MAIN
Changes since 1.1: +54 -82 lines
Diff to previous 1.1
Bring back a pseudo-general named type-class & make T one so that
random things can be subtypes of T.  Change TYPE-SPECIFIER to include
CLASS.  Fix some stuff to work.

Revision 1.1 - (view) (annotate) - [select for diffs]
Thu Feb 4 22:37:05 1993 UTC (21 years, 2 months ago) by ram
Branch: MAIN
Initial revision

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.

  Diffs between and
  Type of Diff should be a

Sort log by:

  ViewVC Help
Powered by ViewVC 1.1.5