/[cmucl]/src/compiler/checkgen.lisp
ViewVC logotype

Log of /src/compiler/checkgen.lisp

Parent Directory Parent Directory | Revision Log Revision Log


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

Revision 1.24.2.5 - (view) (annotate) - [select for diffs]
Sun Jul 9 14:03:12 2000 UTC (13 years, 9 months ago) by dtc
Branch: RELENG_18
CVS Tags: RELEASE_18c, RELEASE_18d
Changes since 1.24.2.4: +43 -2 lines
Diff to previous 1.24.2.4 , to branch point 1.24 , to next main 1.36
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.24.2.4 - (view) (annotate) - [select for diffs]
Sun Jul 9 14:00:18 2000 UTC (13 years, 9 months ago) by dtc
Branch: RELENG_18
Changes since 1.24.2.3: +8 -2 lines
Diff to previous 1.24.2.3 , to branch point 1.24
Enhancement to continuation-check-types: even when the proven type
represents an unknown number of values, if Cont's destination receives
only a single value, generate a :hairy type check for the
single-values-type of the asserted type.

Revision 1.24.2.3 - (view) (annotate) - [select for diffs]
Thu Jul 6 12:56:58 2000 UTC (13 years, 9 months ago) by dtc
Branch: RELENG_18
Changes since 1.24.2.2: +38 -37 lines
Diff to previous 1.24.2.2 , to branch point 1.24
o Recheck the asserted against the proven type for each type in a
  values-type, because the continuation is flagged for a type check
  if any of the types needs to be checked and some may not need checking.

o Split the function no-function-values-types out into a call to values-type
  followed by the new function no-function-types as this later functionality
  is useful on its own.

Revision 1.24.2.2 - (view) (annotate) - [select for diffs]
Tue May 23 16:37:01 2000 UTC (13 years, 11 months ago) by pw
Branch: RELENG_18
Changes since 1.24.2.1: +7 -1 lines
Diff to previous 1.24.2.1 , to branch point 1.24
This set of revisions brings the RELENG_18 branch up to HEAD in preparation
for an 18c release.

Revision 1.24.2.1 - (view) (annotate) - [select for diffs]
Tue Jun 23 11:22:47 1998 UTC (15 years, 10 months ago) by pw
Branch: RELENG_18
CVS Tags: RELEASE_18b
Changes since 1.24: +45 -36 lines
Diff to previous 1.24
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.24 - (view) (annotate) - [select for diffs]
Mon Oct 31 04:27:28 1994 UTC (19 years, 5 months ago) by ram
Branch: MAIN
CVS Tags: RELEASE_18a
Branch point for: RELENG_18
Changes since 1.23: +1 -3 lines
Diff to previous 1.23
Fix headed boilerplate.

Revision 1.23 - (view) (annotate) - [select for diffs]
Wed Aug 25 00:14:48 1993 UTC (20 years, 8 months ago) by ram
Branch: MAIN
Changes since 1.22: +2 -2 lines
Diff to previous 1.22
Fix compiler warnings.

Revision 1.22 - (view) (annotate) - [select for diffs]
Mon Sep 7 15:34:20 1992 UTC (21 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.21: +9 -8 lines
Diff to previous 1.21
Changed erroneous calls to be :ERROR kind, not :FULL

Revision 1.21 - (view) (annotate) - [select for diffs]
Sat Aug 1 17:34:14 1992 UTC (21 years, 8 months ago) by ram
Branch: MAIN
Changes since 1.20: +3 -2 lines
Diff to previous 1.20
If *byte-compiling*, only do compile-type type error checking.  No check
conversion is done, since this violates stack discipline.  All type checks are
done on the fly during byte conversion.

Revision 1.20 - (view) (annotate) - [select for diffs]
Tue Jul 21 18:41:26 1992 UTC (21 years, 9 months ago) by ram
Branch: MAIN
Changes since 1.19: +17 -20 lines
Diff to previous 1.19
Don't call CONTINUATION-CHECK-TYPES if PROBABLE-TYPE-CHECK-P returns NIL.
This lets type checking assume that the continuation does have a DEST,
and also avoids some unnecessary work.

Revision 1.19 - (view) (annotate) - [select for diffs]
Sat Mar 21 19:41:14 1992 UTC (22 years, 1 month ago) by wlott
Branch: MAIN
Changes since 1.18: +4 -3 lines
Diff to previous 1.18
Moved *type-predicate* and *predicate-type* into the backend structure.

Revision 1.18 - (view) (annotate) - [select for diffs]
Mon Mar 18 20:54:43 1991 UTC (23 years, 1 month ago) by ram
Branch: MAIN
Changes since 1.17: +7 -2 lines
Diff to previous 1.17
Added a switch the disable the complementing optimization of type checks
(for testing its effectiveness.)

Revision 1.17 - (view) (annotate) - [select for diffs]
Wed Feb 20 14:56:43 1991 UTC (23 years, 2 months ago) by ram
Branch: MAIN
Changes since 1.16: +8 -4 lines
Diff to previous 1.16
New file header with RCS stuff.

Revision 1.16 - (view) (annotate) - [select for diffs]
Fri Dec 28 16:49:09 1990 UTC (23 years, 4 months ago) by ram
Branch: MAIN
Changes since 1.15: +18 -8 lines
Diff to previous 1.15
Changed MAYBE-NEGATE-CHECK to allow weakened checks to be simple when
debug-info is not important, so that we can use CHECK-STRUCTURE, etc.
Changed TYPE-TEST-COST to penalize predicates as opposed to check templates
so that we will use a check template in favor of a "same cost" predicate.

Revision 1.15 - (view) (annotate) - [select for diffs]
Tue Nov 13 22:48:18 1990 UTC (23 years, 5 months ago) by wlott
Branch: MAIN
Changes since 1.14: +2 -2 lines
Diff to previous 1.14
Pass *backend* to sc-or-lose and friends to assure we extract the info
from the correct backend for runtime.

Revision 1.14 - (view) (annotate) - [select for diffs]
Wed Oct 17 03:52:02 1990 UTC (23 years, 6 months ago) by ram
Branch: MAIN
Changes since 1.13: +9 -14 lines
Diff to previous 1.13
Changed DO-TYPE-WARNING to ignore uses whose type is NIL, and also
tweaked output format a bit.

Revision 1.13 - (view) (annotate) - [select for diffs]
Thu Oct 11 17:22:17 1990 UTC (23 years, 6 months ago) by ram
Branch: MAIN
Changes since 1.12: +107 -33 lines
Diff to previous 1.12
Force type check conversion of continuations that may be forced to
unknown values even though they are really fixed-values (and people
might be depending on the check, like non-local RETURN-FROM.)
Don't do an inline type check for the argument of a full call, even when
we are "sure" that there is an error, since the user might want to
fix the problem by redefining the callee, and not by changing the 
caller (or callers.)
Spiffed up type error warnings to use the variable we are binding to
as context when doing a local call.  Also, instead of saying we
"got NIL", we say we got an expression that didn't return.
Changed type error checking to consistently flame about all losing
uses of a continuation, instead of maybe only flaming about the
first one, or even totally missing it if the first use we see is
non-erroneous but hairy.
Also, don't do type warnings on continuations with :DELETE TYPE-CHECK,
since those are the result of hairy type checks.

Revision 1.12 - (view) (annotate) - [select for diffs]
Wed Sep 5 15:33:31 1990 UTC (23 years, 7 months ago) by ram
Branch: MAIN
Changes since 1.11: +40 -39 lines
Diff to previous 1.11
Fixed GENERATE-TYPE-CHECKS to always give a warning when any use of
the continuation is incorrect, instead of only warning when the first
use happened to be incorrect.

Revision 1.11 - (view) (annotate) - [select for diffs]
Mon Jul 23 14:09:49 1990 UTC (23 years, 9 months ago) by ram
Branch: MAIN
Changes since 1.10: +0 -4 lines
Diff to previous 1.10
Flushed cleanup hackery, since the lexenv changes make this unnecessary.

Revision 1.10 - (view) (annotate) - [select for diffs]
Wed Jun 6 13:49:57 1990 UTC (23 years, 10 months ago) by ram
Branch: MAIN
Branch point for: eval_debug
Changes since 1.9: +3 -2 lines
Diff to previous 1.9
Added use of *unparse-function-type-simplify* to prevent complex function
types from being checked, even when they are buried in other types 
(like OR.)

Revision 1.9 - (view) (annotate) - [select for diffs]
Fri Jun 1 13:43:03 1990 UTC (23 years, 10 months ago) by ram
Branch: MAIN
Changes since 1.8: +20 -3 lines
Diff to previous 1.8
Added NO-FUNCTION-VALUES-TYPES and made people use it so that they aren't
confused by complex function types.

Revision 1.8 - (view) (annotate) - [select for diffs]
Tue May 22 13:14:58 1990 UTC (23 years, 11 months ago) by ram
Branch: MAIN
Changes since 1.7: +2 -1 lines
Diff to previous 1.7
Changed MAYBE-WEAKEN-CHECK to accept a type if there is a predicate for that
exact type, rather than possibly blowing off the check entirely.

Revision 1.7 - (view) (annotate) - [select for diffs]
Tue May 22 13:10:20 1990 UTC (23 years, 11 months ago) by ram
Branch: MAIN
Changes since 1.6: +8 -4 lines
Diff to previous 1.6
Oops...  We can't negate a check and weaken it too.  Choose whichever is
cheaper.

Revision 1.6 - (view) (annotate) - [select for diffs]
Mon May 21 17:03:06 1990 UTC (23 years, 11 months ago) by ram
Branch: MAIN
Changes since 1.5: +5 -4 lines
Diff to previous 1.5
Changed PROBABLE-TYPE-CHECK-P to return T when we are unable to determine when
VALID-FUNCTION-USE is unable to determine the whether the template applies.  If
the VOP operand is unrestrictive, but we know it is of an unknown type, then
the type-operation will fail but the template can still be selected, since
PRIMITIVE-TYPE isn't fooled.

Revision 1.5 - (view) (annotate) - [select for diffs]
Thu May 17 13:41:54 1990 UTC (23 years, 11 months ago) by ram
Branch: MAIN
Changes since 1.4: +3 -2 lines
Diff to previous 1.4
Changed type check weakening not to choose supertypes that are union types
(i.e. COMMON).  Also, we don't preserve the original check just because there
was some supertype predicate.

Revision 1.4 - (view) (annotate) - [select for diffs]
Wed May 16 10:56:25 1990 UTC (23 years, 11 months ago) by ram
Branch: MAIN
Changes since 1.3: +1 -1 lines
Diff to previous 1.3
Type warnings only inhibited when brevity = 3.

Revision 1.3 - (view) (annotate) - [select for diffs]
Sat May 12 20:13:16 1990 UTC (23 years, 11 months ago) by ram
Branch: MAIN
Changes since 1.2: +47 -8 lines
Diff to previous 1.2
Added type check weakening (conditional on policy), and made type checks
be totally flushed only when safety = 0.
Also, when printing a type warning, check to see if the losing value is
a constant, and if so, print it instead of its type.

Revision 1.2 - (view) (annotate) - [select for diffs]
Tue Mar 27 11:39:36 1990 UTC (24 years, 1 month ago) by ram
Branch: MAIN
Changes since 1.1: +10 -0 lines
Diff to previous 1.1
Added code to make known calls unknown if there is an argument with
a type error.

Revision 1.1 - (view) (annotate) - [select for diffs]
Tue Feb 6 11:27:36 1990 UTC (24 years, 2 months ago) by wlott
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