Changeset 15394


Ignore:
Timestamp:
May 28, 2012, 5:53:03 PM (7 years ago)
Author:
gb
Message:

Play whack-a-mole with OPTIMIZE-TYPEP (in the case where the type
names a standard class): we need to check in both directions (that the
class is neither a subclass or a superclass of a class whose instances
aren't STANDARD-INSTANCEs.) More accurately, we care about whether
STD-INSTANCE-CLASS-CELL-TYPEP - which also handles BASIC-STREAMs - can
be used for TYPEP, and this whole thing would go away if we made
CLASS-CELL-TYPEP a little smarter about finding the object's class
wrapper when it's easy to do so - when the object's a
STANDARD-INSTANCE or BASIC-STREAM, for ... uh ... instance.

Fixes ticket:974 .

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/optimizers.lisp

    r15381 r15394  
    15611561                                                 (subtypep class 'standard-object)
    15621562                                                 (not (subtypep 'foreign-standard-object class))
    1563                                                  (not (subtypep 'funcallable-standard-object class)))
     1563                                                 (not (subtypep 'funcallable-standard-object class))
     1564                                                 (not (subtypep class 'foreign-standard-object))
     1565                                                 (not (subtypep class 'funcallable-standard-object)))
    15641566                                          'std-instance-class-cell-typep
    15651567                                          'class-cell-typep)))
Note: See TracChangeset for help on using the changeset viewer.