Permalink
Commits on Jul 24, 2016
  1. @scymtym

    Allow OR method combination for early generic functions

    This will be needed for the generic function
    MAKE-SPECIALIZER-FORM-USING-CLASS.
    
    * *!GENERIC-FUNCTION-FIXUPS* now declares method combinations
    
    * !FIX-EARLY-GENERIC-FUNCTIONS can now handle STANDARD and OR method
      combinations
    
    * !BOOTSTRAP-META-BRAID "manually" creates the OR method combination
      object in addition to the STANDARD one
    
    * The method on COMPUTE-EFFECTIVE-METHOD for SHORT-METHOD-COMBINATION is
      now implemented by a new ordinary function
      SHORT-COMPUTE-EFFECTIVE-METHOD and created
      via *!GENERIC-FUNCTION-FIXUPS*
    
    This change is part of an effort to integrate the necessary extensions
    to support generalizer metaobjects [1] into SBCL's PCL.
    
    [1] https://github.com/sbcl/specializable
    scymtym committed Mar 20, 2016
Commits on Jul 20, 2016
  1. Tweak CANONICALIZE-WIDETAGS (formerly -HEADERS)

    Recognize range plus a singleton as possibly a range minus one widetag,
    as in the slightly contrived example:
    (typep x '(or (simple-array (unsigned-byte 32) (*))
                  (simple-array (unsigned-byte 62) (*))
                  (simple-array (unsigned-byte 64) (*)))
    which reduces to:
      simple-array-unsigned-byte-32-widetag through
      simple-array-unsigned-byte-64-widetag inclusive,
      EXCEPT simple-array-unsigned-byte-63-widetag
    Douglas Katzman committed Jul 19, 2016
Commits on Jul 18, 2016
  1. @stassats

    sb-posix: Fix getresuid() and getresgid().

    The functions actually accept three arguments, not zero.
    Pass pointers to uid-t/gid-t to them, return three values.
    
    Fixes lp#1603806
    stassats committed Jul 18, 2016
Commits on Jul 17, 2016
  1. @scymtym

    New helper function CHECK-METHOD-LAMBDA

    Also fix a few typos in comments.
    scymtym committed Mar 15, 2016
  2. @scymtym
  3. @scymtym
  4. @scymtym
  5. @scymtym

    Use STABLE-SORT instead of SORT when sorting slot name lists

    Sorting slot name lists is intended to reduce the number of interned
    permutation vectors. After 93b0a4e, the sort predicate no longer takes
    symbol packages into account. Thus, SORT may produce any permutation for
    identically named symbols with different home packages. Using
    STABLE-SORT improves this a bit by at least keeping the original order.
    
    Suggested-by: Douglas Katzman <dougk@google.com>
    scymtym committed Jul 17, 2016
  6. @scymtym

    Remove leading NIL from slot name lists

    A FIXME comment said:
    
      NIL at the head of the list is a remnant from old purged code, that
      hasn't been quite cleaned up yet.
    
    Changed producers of such lists:
    
    * SLOT-NAME-LISTS-FROM-SLOTS
    * MAKE-STD-{WRITER,READER,BOUNDP}-METHOD-FUNCTION
    
    Changed consumers:
    
    * INTERN-PV-TABLE
    * COMPUTE-PV
    scymtym committed Jul 16, 2016
Commits on Jul 14, 2016
Commits on Jul 13, 2016
  1. Change :SMALL-OTHER to :TINY-OTHER.

    "tiny" means that the header can encode at most 255 payload words.
    "small" has to do with size relative to a GC card.
    Douglas Katzman committed Jul 13, 2016
  2. Remove influence of non-interleaved raw slot code.

    Instance types which get headers in src/runtime/genesis should have the proper
    size returned by sizeof() in C. This change undoes part of change ba8910d that
    caused genesis to add trailing padding. The former change pre-dated a change
    that allowed %INSTANCE-LENGTH in Lisp to be even or odd.
    Now we're consistent with all other primitive objects whose C definition
    is not padded - e.g. "struct complex" has exactly 3 Lisp words, not 4.
    Douglas Katzman committed Jul 13, 2016
  3. Silence compiler noise.

    Douglas Katzman committed Jul 13, 2016
Commits on Jul 10, 2016
  1. @stassats

    Optimize CHANGE-CLASS.

    Reduce unnecessary consing.
    Don't perform initarg checks if there are no initargs.
    stassats committed Jul 10, 2016
  2. @stassats

    Fix allocate-instance working on symbols.

    A recent regression.
    stassats committed Jul 10, 2016
  3. @stassats
  4. @stassats

    Optimize ALLOCATE-INSTANCE.

    Apply the same optimization as for MAKE-INSTANCE.
    stassats committed Jul 10, 2016
  5. @scymtym

    Simplify SLOT-NAME-LISTS-FROM-SLOTS and friends

    * Removed SYMBOL-LESSP and its helper SYMBOL-PKG-NAME
    
    * SYMBOL-OR-CONS-LESSP compares symbol hashes instead of calling
      SYMBOL-LESSP
    
    A FIXME comment suggested this change, giving the following rationale:
    
      Because of the existence of UNINTERN and RENAME-PACKAGE, the part of
      this ordering which is based on SYMBOL-PKG-NAME is not stable. This
      ordering is only used in to SLOT-NAME-LISTS-FROM-SLOTS, where it serves
      to "canonicalize the PV-TABLE's a bit and will hopefully lead to having
      fewer PV's floating around", so it sounds as though the instability
      won't actually lead to bugs, just small inefficiency. But still, it
      would be better to reimplement this function as a comparison based on
      SYMBOL-HASH:
    
      * stable comparison
      * smaller code (here, and in being able to discard SYMBOL-PKG-NAME)
      * faster code.
    scymtym committed Mar 15, 2016
  6. @scymtym
  7. @phmarek @scymtym

    Fix typo in doc-string

    phmarek committed with scymtym Jul 7, 2016
  8. @scymtym

    Declare argument types in condition report function

    In combination with previous improvements of the type system (240bb95,
    49d3089), this allows detecting the following common error (happens to
    me frequently, at least):
    
      (define-condition my-condition ()
        ()
        (:report (lambda (stream condition)
                   (format stream "~A" condition))))
    scymtym committed Jul 2, 2016
Commits on Jul 9, 2016
  1. @scymtym

    Simplify some type methods of NAMED type class

    * New helper functions CLASSOID-INHERITS-FROM and
      CLASSOID-NON-INSTANCE-P
    
    * Use them in :COMPLEX-{SUBTYPEP-ARG2,INTERSECTION2,UNION2} type methods
    scymtym committed Jul 4, 2016
  2. @scymtym

    CONDITION classes are instances but disjoint from other kinds of classes

    * Intersecting CLASSOID with CLASSOID yields the empty type if exactly
      one type is a CONDITION-CLASSOID
    
    * Every CONDITION-CLASSOID is a subtype of the named
      type *INSTANCE-TYPE* (same as for STRUCTURE-CLASSOID)
    
    * Intersecting the named type *EXTENDED-SEQUENCE-TYPE* with a
      CONDITION-CLASSOID yields the empty type (same as for
      STRUCTURE-CLASSOID)
    
    * Intersecting the named type *INSTANCE-TYPE* with a CONDITION-CLASSOID
      yields the CONDITION-CLASSOID (same as for STRUCTURE-CLASSOID)
    
    * Intersecting the named type *FUNCALLABLE-INSTANCE-TYPE* with a
      CONDITION-CLASSOID yields the empty type (same as for
      STRUCTURE-CLASSOID)
    scymtym committed Jul 4, 2016
  3. Remove extraneous #defines

    Douglas Katzman committed Jul 9, 2016
Commits on Jul 8, 2016
  1. Remove redundant type checks from sequence function entry points.

    - check for EXTENDED-SEQUENCE in the final case of SEQ-DISPATCH-CHECKING
      rather than SEQUENCE, since list and vector were already ruled out.
    
    - extend EXPLICIT-CHECK attribute to allow specifying that a subset of
      lambda variables will be checked by code in the function body, and
      use it to specify that sequence arguments will be explicitly checked.
    Douglas Katzman committed Jul 8, 2016
  2. @scymtym

    Fix return value of SB-INTERPRETER::SPECIFIER-FROM-CHECKFUN

    When looking up the type for a predicate via
    SB-C::*BACKEND-PREDICATE-TYPES*, the result has to be unparsed.
    scymtym committed Jul 8, 2016
  3. @scymtym
  4. Remove unnecessary undefined-fun whitelist entry

    Douglas Katzman committed Jul 8, 2016
  5. @scymtym
Commits on Jul 7, 2016
  1. @stassats
  2. @stassats
  3. @stassats

    Unparse (STRING 10) ctype as (STRING 10) not a union.

    Was (OR (VECTOR CHARACTER 10) (VECTOR NIL 10) (BASE-STRING 10))
    stassats committed Jul 7, 2016
  4. @stassats

    Bring (ctype-of #\character) in line with (type-of #\character)

    Distinguish between standard/extended/base-char.
    stassats committed Jul 7, 2016
  5. @stassats
  6. @stassats

    derive-type for vector-pop.

    Just use derive-aref-type.
    stassats committed Jul 7, 2016