Skip to content
Snippets Groups Projects
  1. 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
    • dtc's avatar
      Correct single-value-type to return the union with the null type for · 8d82b3ca
      dtc authored
      an optional or rest argument, and enhance it to return the *null-type*
      if there are no values. Also no longer inline this function as it is
      becoming more complex.
      8d82b3ca
  2. Jun 27, 2000
  3. May 02, 2000
    • dtc's avatar
      Implement a specializing CONS class as per issue CONS-TYPE-SPECIFIER:ADD. · 764ec478
      dtc authored
      The new cons-type which maintains the specialised CAR and CDR types:
      
      o Typep recurses, checking the respective car and cdr specialisations;
        two cons-types are type= if both their car and cdr types are type=.
      
      o Subtypep recurses, applying subtypep to the respective car and
        cdr types. If both sub-tests return true then the cons test returns
        true with a win only when both sub-tests win. If either sub-test
        returns false then the cons tests returns false with a win if either
        of sub-tests win.
      
      o Type-intersection is applied to the respective car and cdr types,
        and wins if both win.
      
      o The type-union of two cons-types handles cases for which either the
        respective car or cdr types are type=, in which case type-union is
        applied to the other type. This avoid returning an overly general result.
      
      o Ctype-of a cons object simply returns (cons * *); and does not attempt
        to recurse.
      
      o The compiler recursively checks the specialised type of the cons-type,
        which allows it to also use this type information to derive the result
        type car and cdr. Inline code is currently only generated when
        natively compiling.
      764ec478
  4. Jan 10, 2000
  5. Aug 19, 1998
  6. May 19, 1998
  7. May 13, 1998
  8. Apr 17, 1998
  9. Feb 02, 1998
    • dtc's avatar
      Patch from Raymond Toy for the :negative-zero-is-not-zero feature: · b6137f53
      dtc authored
      have make-numeric-type canonicalize the bounds so that a lower bound
      of (-0.0) becomes 0.0 and an upper bound of (0.0) becomes -0.0.  Also
      fixes the problem of (subtypep '(float (-0.0)) (float 0.0)), returning
      nil when it should be T.  This is because (float (-0.0)) is
      canonicalized to the identical (float 0.0).
      b6137f53
  10. Jan 21, 1998
  11. Jan 08, 1998
  12. Jan 05, 1998
    • dtc's avatar
      Change to the handling of floating point zeros within numeric type · 3fe8030e
      dtc authored
      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.
      3fe8030e
  13. Dec 18, 1997
  14. Sep 05, 1997
  15. Oct 31, 1994
  16. Feb 11, 1994
  17. Sep 03, 1993
  18. Sep 01, 1993
  19. Aug 31, 1993
  20. Aug 25, 1993
  21. Aug 23, 1993
    • ram's avatar
      Fixed semantics of various type-classes (CL arrays, numbers, functions & · 47739842
      ram authored
      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.)
      47739842
  22. Aug 21, 1993
  23. Aug 06, 1993
  24. Jul 30, 1993
  25. Mar 14, 1993
  26. Mar 13, 1993
  27. Mar 01, 1993
  28. Feb 25, 1993
  29. Feb 23, 1993
  30. Feb 14, 1993
  31. Feb 10, 1993
  32. Feb 08, 1993
  33. Feb 04, 1993
Loading