Skip to content
Snippets Groups Projects
  1. Nov 05, 2007
  2. Jul 18, 2006
  3. Jul 07, 2006
  4. Jun 30, 2006
  5. May 09, 2005
  6. Apr 24, 2005
  7. Feb 21, 2005
    • rtoy's avatar
      In some situations, the compiler spends an enormous amount of time · ae65549e
      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.
      ae65549e
  8. Nov 10, 2004
  9. Sep 09, 2004
  10. Sep 08, 2004
    • rtoy's avatar
      o Change the def-type-translator for COMPLEX to fix some confusion in · d321a141
      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?)
      d321a141
  11. Oct 09, 2003
  12. Aug 04, 2003
  13. Jul 03, 2003
  14. May 08, 2003
    • gerd's avatar
      Fix problems with THE detected by Paul Dietz' tests. This also · 2e8488e0
      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.
      2e8488e0
  15. Apr 27, 2003
    • toy's avatar
      Remove all stuff relating to :negative-zero-is-not-zero which enabled · a26fba41
      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?
      a26fba41
  16. Apr 26, 2003
    • gerd's avatar
      CLASS-04.[2345], CONDITION-27-READER-IS-GENERIC, compiled. Avoid · ce55ee05
      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 * *).
      ce55ee05
  17. Apr 24, 2003
  18. Apr 23, 2003
    • gerd's avatar
      Final fix for -0d0/0d0 and member types from Christophe · f6fdc008
      gerd authored
      	Rhodes.
      
      	* src/code/type.lisp (member-type): Add :constructor.
      	(make-member-type): New function.
      	(not) <type translator>: Treat member types specially.
      f6fdc008
    • gerd's avatar
      Make the type system more forgiving wrt to unknown types. · 23f8e9ce
      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.
      23f8e9ce
  19. Apr 17, 2003
  20. Apr 16, 2003
    • gerd's avatar
      Further speed-up of the type system. Avoid compiler notes. · aebfebbd
      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.
      aebfebbd
  21. Apr 15, 2003
    • gerd's avatar
      Speed up the type system. · 4898b8c2
      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.
      4898b8c2
  22. Apr 13, 2003
    • gerd's avatar
      * src-head/code/type.lisp (type-might-contain-other-types-p): · e5551afd
      gerd authored
      	Declaim inline.
      e5551afd
    • gerd's avatar
      The SEQUENCE-COUNT type was previously used in c:fndb, but since · c1effa7a
      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.
      c1effa7a
  23. Mar 22, 2003
    • gerd's avatar
      * bootfiles/18e/boot[12].lisp: Bootstrap files for the lisp:class · a1e3ed93
      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.
      a1e3ed93
  24. Mar 18, 2003
  25. Feb 03, 2003
  26. Dec 07, 2002
  27. Dec 04, 2002
  28. Nov 13, 2002
  29. Oct 23, 2002
    • toy's avatar
      Fix entomotomy bug · e6655d2c
      toy authored
      subtypep-too-certain-about-satisfies-undefined-function
      
      Port over the SBCL fix.
      e6655d2c
  30. Oct 22, 2002
    • toy's avatar
      Fix for the Entomotomy bug · f50481e9
      toy authored
      numeric-types-with-empty-ranges-cause-errors
      
      We silently accept numeric types with empty ranges and treat that as
      the empty type.
      f50481e9
  31. Oct 16, 2002
    • toy's avatar
      Fix for the Entomotomy bug · dac93106
      toy authored
      atom-type-not-completely-understood-by-subtypep
      
      This is ported from the fix used by SBCL.
      dac93106
  32. Aug 23, 2002
  33. Aug 12, 2002
  34. Feb 23, 2002
  35. Nov 22, 2001
  36. Mar 04, 2001
  37. Jul 07, 2000
  38. Jul 06, 2000
    • dtc's avatar
      Reworking of the values-type system to overcome a number of inconsistencies · daf333f4
      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.
      daf333f4
Loading