From: Nikodemus S. <nik...@ra...> - 2009-11-19 09:55:38
|
What follows is a list of all test functions encountered during SBCL compilation that constraint propagation doesn't know about. (Test function in this context meaning one appearing as the first argument to an IF.) Though constraint propagation is already an unholy timesink, some of these look potentially interesting: eg. propagating BOUNDP would make for nicer special variable access code, and ARRAY-HEADER-P is also almost certainly worth looking at. EQUAL seems like a good candidate too... For those new to SBCL: note that the existence of a name in this list does not mean that we didn't know eg. the type of its argument or result! It just means that we could not deduce anything new about its arguments based on it returning either true or false -- constraints which we could then propagate to the legs of the IF. Cheers, -- Nikodemus (SB-PCL::SLOT-ACCESSOR :GLOBAL ASDF::COMPONENTS COMMON-LISP:BOUNDP) (SB-PCL::SLOT-ACCESSOR :GLOBAL ASDF::RELATIVE-PATHNAME COMMON-LISP:BOUNDP) (SB-PCL::SLOT-ACCESSOR :GLOBAL ASDF:VERSION COMMON-LISP:BOUNDP) (SB-PCL::SLOT-ACCESSOR :GLOBAL COMMON-LISP:STREAM COMMON-LISP:BOUNDP) (SB-PCL::SLOT-ACCESSOR :GLOBAL SB-BSD-SOCKETS::FILE-DESCRIPTOR (SB-PCL::SLOT-ACCESSOR :GLOBAL SB-KERNEL::NAME COMMON-LISP:BOUNDP) (SB-PCL::SLOT-ACCESSOR :GLOBAL SB-PCL::%GENERIC-FUNCTION COMMON-LISP:BOUNDP) (SB-PCL::SLOT-ACCESSOR :GLOBAL SB-PCL::METHOD-CLASS COMMON-LISP:BOUNDP) (SB-PCL::SLOT-ACCESSOR :GLOBAL SB-PCL::METHODS COMMON-LISP:BOUNDP) (SB-PCL::SLOT-ACCESSOR :GLOBAL SB-SIMPLE-STREAMS::MELDED-STREAM COMMON-LISP:BOUNDP) COMMON-LISP:<= COMMON-LISP:= COMMON-LISP:>= COMMON-LISP:ALPHANUMERICP COMMON-LISP:ARITHMETIC-ERROR-OPERATION COMMON-LISP:ARRAY-HAS-FILL-POINTER-P COMMON-LISP:ARRAY-IN-BOUNDS-P COMMON-LISP:BOUNDP COMMON-LISP:CAR COMMON-LISP:CDR COMMON-LISP:CHAR< COMMON-LISP:CHAR= COMMON-LISP:CHAR> COMMON-LISP:CLASS-NAME COMMON-LISP:COMPILER-MACRO-FUNCTION COMMON-LISP:CONSTANTP COMMON-LISP:DIGIT-CHAR-P COMMON-LISP:EQUAL COMMON-LISP:EQUALP COMMON-LISP:EVAL COMMON-LISP:EVERY COMMON-LISP:FBOUNDP COMMON-LISP:FILE-POSITION COMMON-LISP:FIND COMMON-LISP:FIND-CLASS COMMON-LISP:FIND-IF COMMON-LISP:FIND-IF-NOT COMMON-LISP:FIND-PACKAGE COMMON-LISP:FIND-RESTART COMMON-LISP:FIND-SYMBOL COMMON-LISP:FORMAT COMMON-LISP:GET-MACRO-CHARACTER COMMON-LISP:GET-PROPERTIES COMMON-LISP:GETF COMMON-LISP:INPUT-STREAM-P COMMON-LISP:INTERACTIVE-STREAM-P COMMON-LISP:INTERSECTION COMMON-LISP:LIST-LENGTH COMMON-LISP:LOAD COMMON-LISP:LOGBITP COMMON-LISP:MACRO-FUNCTION COMMON-LISP:MISMATCH COMMON-LISP:NIL COMMON-LISP:OPEN-STREAM-P COMMON-LISP:OUTPUT-STREAM-P COMMON-LISP:PACKAGE-NAME COMMON-LISP:PATHNAME-DEVICE COMMON-LISP:PATHNAME-HOST COMMON-LISP:PATHNAME-MATCH-P COMMON-LISP:PATHNAME-NAME COMMON-LISP:PATHNAME-TYPE COMMON-LISP:POSITION COMMON-LISP:PROBE-FILE COMMON-LISP:READ-CHAR-NO-HANG COMMON-LISP:REMOVE-IF COMMON-LISP:SEARCH COMMON-LISP:SET-DIFFERENCE COMMON-LISP:SLOT-BOUNDP COMMON-LISP:SLOT-MISSING COMMON-LISP:SPECIAL-OPERATOR-P COMMON-LISP:STRING-EQUAL COMMON-LISP:SUBSETP COMMON-LISP:SUBTYPEP COMMON-LISP:SYMBOL-PACKAGE COMMON-LISP:SYMBOL-VALUE COMMON-LISP:TREE-EQUAL COMMON-LISP:TYPEP COMMON-LISP:UNINTERN COMMON-LISP:VECTOR-POP COMMON-LISP:WILD-PATHNAME-P COMMON-LISP:Y-OR-N-P SB!ALIEN-INTERNALS:ALIEN-TYPE-= SB!ALIEN-INTERNALS:ALIEN-VOID-TYPE-P SB!ALIEN::C-STRING-NEEDS-CONVERSION-P SB!ASSEM:SSET-ADJOIN SB!ASSEM:SSET-EMPTY SB!BIGNUM:%DIGIT-0-OR-PLUSP SB!BIGNUM:BIGNUM-PLUS-P SB!C::%ADD-LAMBDA-VARS-TO-CLOSURES SB!C::%CONSTANT-FORM-VALUE SB!C::%CONSTANTP SB!C::%WEAK-POINTER-BROKEN SB!C::%WEAK-POINTER-VALUE SB!C::ADD-LAMBDA-VARS-AND-LET-VARS-TO-CLOSURES SB!C::ALMOST-IMMEDIATELY-USED-P SB!C::CALL-FULL-LIKE-P SB!C::CAST-EXTERNALLY-CHECKABLE-P SB!C::CAST-TYPE-CHECK SB!C::CHECK-ARG-TYPE SB!C::CHECK-KEY-ARGS-CONSTANT SB!C::CHECK-TRANSFORM-KEYS SB!C::CLOSURE-VAR-P SB!C::COMPONENT-TOPLEVELISH-P SB!C::CONFLICTS-IN-SC SB!C::CONSERVATIVE-ARRAY-TYPE-COMPLEXP SB!C::CONSET-ADJOIN SB!C::CONSET-EMPTY SB!C::CONSET-MEMBER SB!C::CONSET= SB!C::CONSTANT-LVAR-P SB!C::CONSTANT-REFERENCE-P SB!C::CONVERT-MV-BIND-TO-LET SB!C::COPY-FLOW-ANALYSIS SB!C::CTRAN-DELETED-P SB!C::DECLARATIONS-SUPPRESS-LET-CONVERSION-P SB!C::DOMAIN-SUBTYPEP SB!C::DOMINATES-P SB!C::DROP-THRU-P SB!C::DX-COMBINATION-P SB!C::EMIT-MAKE-LOAD-FORM SB!C::EMIT-STEP-P SB!C::EQ-COMPARABLE-TYPE-P SB!C::FIND-KEYWORD-LVAR SB!C::FIND-LOCAL-REFERENCES SB!C::FIND-MOVE-VOP SB!C::FIND-RESULT-TYPE SB!C::FIND-STRANGE-LOOP-BLOCKS SB!C::FIND-USES SB!C::FLOAT-TYPE-P SB!C::FLUSHABLE-COMBINATION-P SB!C::FOPCOMPILABLE-P SB!C::FUN-LEXICALLY-NOTINLINE-P SB!C::FUN-LOCALLY-DEFINED-P SB!C::FUNCTIONAL-LETLIKE-P SB!C::FUNCTIONAL-SOMEWHAT-LETLIKE-P SB!C::GET-SOURCE-PATH SB!C::HAS-FULL-CALL-USE SB!C::IMMEDIATELY-USED-P SB!C::INLINE-EXPANSION-OK SB!C::INTEGER-TYPE-P SB!C::INTERNAL-NAME-P SB!C::INTERVAL-/= SB!C::INTERVAL-< SB!C::INTERVAL-= SB!C::INTERVAL->= SB!C::INTERVAL-ADJACENT-P SB!C::INTERVAL-BOUNDED-P SB!C::INTERVAL-CONTAINS-P SB!C::INTERVAL-INTERSECT-P SB!C::INTERVAL-INTERSECTION/DIFFERENCE SB!C::INTERVAL-LOW SB!C::IR1-TRANSFORM SB!C::IR1-TRANSFORM-SPECIFIER-TYPE SB!C::IS-OK-TEMPLATE-USE SB!C::JOIN-SUCCESSOR-IF-POSSIBLE SB!C::KNOWN-DX-COMBINATION-P SB!C::LABEL-ELSEWHERE-P SB!C::LAMBDA-ANCESTOR-P SB!C::LAMBDA-FORM-P SB!C::LAMBDA-TOPLEVELISH-P SB!C::LEAF-HAS-SOURCE-NAME-P SB!C::LOAD-TN-CONFLICTS-IN-SC SB!C::LOOKS-LIKE-AN-MV-BIND SB!C::LTN-POLICY-SAFE-P SB!C::LVAR-DELAYED-LEAF SB!C::LVAR-FUN-IS SB!C::LVAR-GOOD-FOR-DX-P SB!C::LVAR-MATCHES SB!C::LVAR-VALUE SB!C::MAYBE-DELETE-EXIT SB!C::MAYBE-FLOAT-LVAR-P SB!C::MAYBE-LET-CONVERT SB!C::META-SC-ALLOWED-BY-PRIMITIVE-TYPE SB!C::NAME-RESERVED-BY-ANSI-P SB!C::NODE-DELETED SB!C::NOT-MORE-CONTAGIOUS SB!C::NOTE-LOOP-HEAD SB!C::NULL-LEXENV-P SB!C::NUMERIC-TYPE-REAL-P SB!C::OFFSET-CONFLICTS-IN-SB SB!C::OK-COPY-REF SB!C::OK-INITIAL-CONVERT-P SB!C::ONLY-HARMLESS-CLEANUPS SB!C::OPERAND-RESTRICTION-OK SB!C::POLICY-QUALITY-NAME-P SB!C::PRESENT-IN-FORM SB!C::PROBABLE-TYPE-CHECK-P SB!C::PRODUCING-FASL-FILE SB!C::PROPAGATE-LIVE-TNS SB!C::RETRY-DELAYED-IR1-TRANSFORMS SB!C::SAFE-CTYPE-FOR-SINGLE-COERCION-P SB!C::SAFE-DOUBLE-COERCION-P SB!C::SAFE-SINGLE-COERCION-P SB!C::SAME-LEAF-REF-P SB!C::SAVE-SINGLE-WRITER-TN SB!C::SAVED-AFTER-READ SB!C::SC-ALLOWED-BY-PRIMITIVE-TYPE SB!C::SIGNED-ZERO-< SB!C::SIGNED-ZERO-<= SB!C::SIGNED-ZERO-= SB!C::SIGNED-ZERO-> SB!C::SIGNED-ZERO->= SB!C::SSET-INTERSECTION SB!C::SSET-MEMBER SB!C::STEP-FORM-P SB!C::SUBSTITUTE-SINGLE-USE-LVAR SB!C::TEMPLATE-ARGS-OK SB!C::TEMPLATE-CONDITIONAL-P SB!C::TEMPLATE-RESULTS-OK SB!C::TIME-SPEC-ORDER SB!C::TN-IS-COPY-OF SB!C::TRIVIAL-LAMBDA-VAR-REF-P SB!C::TYPE-NEEDS-CONSERVATION-P SB!C::UNLINK-NODE SB!C::UNSUPPLIED-OR-NIL SB!C::UPDATE-BLOCK-IN SB!C::UPDATE-UVL-LIVE-SETS SB!C::USE-GOOD-FOR-DX-P SB!C::VALID-FUN-USE SB!C::VALIDATE-CALL-TYPE SB!C::XEP-P SB!C::XEP-TAIL-COMBINATION-P SB!C:IMMEDIATE-TN-P SB!C:LOCATION= SB!DEBUG::FIND-BINDING-STACK-POINTER SB!DEBUG:FRAME-HAS-DEBUG-TAG-P SB!DI::COMPILED-FRAME-ESCAPED SB!DI::COMPILED-FRAME-P SB!DI::DEBUG-FUN-DEBUG-VARS SB!DI::FILL-IN-CODE-LOCATION SB!DI::INDIRECT-VALUE-CELL-P SB!DI::SUB-COMPILED-CODE-LOCATION= SB!DI:CODE-LOCATION-UNKNOWN-P SB!DI:CODE-LOCATION= SB!DI:DEBUG-VAR-INFO-AVAILABLE SB!DISASSEM::ALIGNED-P SB!DISASSEM::ALL-ARG-REFS-RELEVANT-P SB!DISASSEM::CACHE-VALID SB!DISASSEM::DOESNT-NEED-WRAPPING-P SB!DISASSEM::FUNSTATE-COMPATIBLE-P SB!DISASSEM::INST-SPECIALIZES-P SB!DISASSEM::STRING-OR-QSYM-P SB!DISASSEM:DSTATE-GET-INST-PROP SB!EVAL::%EVAL SB!EVAL::IP-ERROR SB!EVAL::LAMBDAP SB!EVAL::SPECIALP SB!EVAL::SUPPLIED-P-PARAMETER SB!EVAL:INTERPRETED-FUNCTION-P SB!EXT:FLOAT-DENORMALIZED-P SB!EXT:FLOAT-INFINITY-P SB!EXT:FLOAT-NAN-P SB!EXT:FLOAT-TRAPPING-NAN-P SB!FASL::CHECK-FASL-HEADER SB!FASL::EQUAL-CHECK-TABLE SB!FASL::FASL-HEADER-P SB!FASL::LOAD-FASL-GROUP SB!FASL::STRING-CHECK-TABLE SB!FASL:FASL-CONSTANT-ALREADY-DUMPED-P SB!FORMAT::CHAR-PRINTING-P SB!FORMAT::FORMAT-FIXED-AUX SB!IMPL::%ARRAY-ROW-MAJOR-INDEX SB!IMPL::BIT-ARRAY-SAME-DIMENSIONS-P SB!IMPL::COMPARE-COMPONENT SB!IMPL::COMPONENTS-MATCH SB!IMPL::DIRECTORY-COMPONENTS-MATCH SB!IMPL::EXPANDABLE-BACKQ-EXPRESSION-P SB!IMPL::FD-STREAM-OUTPUT-FINISHED-P SB!IMPL::FIND-LOGICAL-HOST SB!IMPL::GET-EXTERNAL-FORMAT SB!IMPL::GETHASH3 SB!IMPL::HUFFMAN-MATCH SB!IMPL::INFINITE-ERROR-PROTECTOR SB!IMPL::INLINE-FUN-NAME-P SB!IMPL::LIST-OF-SYMBOLS-P SB!IMPL::PACKAGE-LOCK-VIOLATION-P SB!IMPL::PARSEABLE-LOGICAL-NAMESTRING-P SB!IMPL::PATTERN-MATCHES SB!IMPL::PATTERN= SB!IMPL::READ-MAYBE-NOTHING SB!IMPL::REFILL-INPUT-BUFFER SB!IMPL::STEP-FORM SB!IMPL::STREAM-ASSOCIATED-WITH-FILE-P SB!IMPL::STREAM-DECODING-ERROR-AND-HANDLE SB!IMPL::STRING-OUTPUT-STREAM-NEXT-BUFFER SB!IMPL::STRING-OUTPUT-STREAM-PREV-BUFFER SB!IMPL::SYMBOL-QUOTEP SB!IMPL::SYNONYM-STREAM-P SB!IMPL::SYSREAD-MAY-BLOCK-P SB!IMPL::TREE-EQUAL-TEST SB!IMPL::TREE-EQUAL-TEST-NOT SB!IMPL::TWO-ARG-CHAR-EQUAL SB!IMPL::TWO-ARG-CHAR-GREATERP SB!IMPL::TWO-ARG-CHAR-LESSP SB!IMPL::TWO-ARG-CHAR-NOT-GREATERP SB!IMPL::TWO-ARG-CHAR-NOT-LESSP SB!IMPL::UNDER-SCHEDULER-LOCK-P SB!IMPL::UNIQUELY-IDENTIFIED-BY-PRINT-P SB!IMPL::VALID-DESTINATION-P SB!IMPL::VARIABLE-WIDTH-EXTERNAL-FORMAT-P SB!IMPL::WHITESPACE[1]P SB!INT:ARRAY-READABLY-PRINTABLE-P SB!INT:ASSQ SB!INT:COMPOUND-OBJECT-P SB!INT:CONSTANT-TYPEP SB!INT:EQUAL-BUT-NO-CAR-RECURSION SB!INT:EVAL-IN-LEXENV SB!INT:FAST-READ-CHAR-REFILL SB!INT:FEATUREP SB!INT:FP-ZERO-P SB!INT:INFO SB!INT:INVALID-ARRAY-P SB!INT:LEGAL-FUN-NAME-P SB!INT:LIST-OF-LENGTH-AT-LEAST-P SB!INT:LIST-WITH-LENGTH-P SB!INT:LISTEN-SKIP-WHITESPACE SB!INT:LOOKS-LIKE-NAME-OF-SPECIAL-VAR-P SB!INT:MAYBE-CYCLIC-P SB!INT:MEMQ SB!INT:POSITIVE-PRIMEP SB!INT:PRINT-PRETTY-ON-STREAM-P SB!INT:PROMISE-READY-P SB!INT:PROPER-LIST-OF-LENGTH-P SB!INT:SELF-EVALUATING-P SB!INT:VALID-FUNCTION-NAME-P SB!INT:XSET-MEMBER-P SB!INT:XSET-SUBSET-P SB!KERNEL:%ARRAY-DISPLACED-P SB!KERNEL:%ARRAY-FILL-POINTER-P SB!KERNEL:%ASSOC SB!KERNEL:%ASSOC-EQ SB!KERNEL:%INSTANCE-REF SB!KERNEL:%MEMBER SB!KERNEL:%MEMBER-EQ SB!KERNEL:%MEMBER-KEY SB!KERNEL:%MEMBER-KEY-EQ SB!KERNEL:%MEMBER-KEY-TEST SB!KERNEL:%MEMBER-KEY-TEST-NOT SB!KERNEL:%MEMBER-TEST SB!KERNEL:%OTHER-POINTER-P SB!KERNEL:%RASSOC SB!KERNEL:%RASSOC-EQ SB!KERNEL:%RPLACD SB!KERNEL:%SP-STRING-COMPARE SB!KERNEL::%%TYPEP SB!KERNEL::%INTERSECTION-COMPLEX-SUBTYPEP-ARG1 SB!KERNEL::%INTERSECTION-COMPLEX-SUBTYPEP-ARG2 SB!KERNEL::%INTERSECTION-SIMPLE-SUBTYPEP SB!KERNEL::ACCESSOR-INHERITED-DATA SB!KERNEL::ARG-COUNT-ERROR-MAXIMUM SB!KERNEL::ARRAY-TYPES-INTERSECT SB!KERNEL::COMPILER-LAYOUT-READY-P SB!KERNEL::CONS-TYPE-MIGHT-BE-EMPTY-TYPE SB!KERNEL::CTYPE-IS-COMMON-TYPECHECKFUN-TYPE-P SB!KERNEL::CTYPE-NEEDS-TO-BE-INTERPRETED-P SB!KERNEL::DD-CLASS-P SB!KERNEL::KEYWORD-SUPPLIED-P SB!KERNEL::LOOKUP-KEYWORD SB!KERNEL::MEMBER-TYPE-MEMBER-P SB!KERNEL::MUFFLE-WARNING-P SB!KERNEL::NUMERIC-TYPES-ADJACENT SB!KERNEL::NUMERIC-TYPES-INTERSECT SB!KERNEL::PARSE-DEFMACRO-LAMBDA-LIST SB!KERNEL::PUSH-LET-BINDING SB!KERNEL::REDEFINE-STRUCTURE-WARNING SB!KERNEL::TYPEP-TO-LAYOUT SB!KERNEL::UNION-COMPLEX-SUBTYPEP-ARG1 SB!KERNEL::UNION-COMPLEX-SUBTYPEP-ARG2 SB!KERNEL::UNION-SIMPLE-SUBTYPEP SB!KERNEL:ARRAY-HEADER-P SB!KERNEL:ARRAY-TYPE-P SB!KERNEL:CHECK-FOR-CIRCULARITY SB!KERNEL:CLASSOID-CELL-TYPEP SB!KERNEL:CLOSUREP SB!KERNEL:COMPLEX-VECTOR-P SB!KERNEL:CONS-TYPE-P SB!KERNEL:CSUBTYPEP SB!KERNEL:CTYPEP SB!KERNEL:DATA-VECTOR-REF-WITH-OFFSET SB!KERNEL:DEFINED-FTYPE-MATCHES-DECLARED-FTYPE-P SB!KERNEL:FDEFN-FUN SB!KERNEL:FIND-CLASSOID SB!KERNEL:HANDLE-CIRCULARITY SB!KERNEL:REDEFINE-LAYOUT-WARNING SB!KERNEL:SIMPLE-FUN-P SB!KERNEL:STRING/=* SB!KERNEL:STRING=* SB!KERNEL:SUB-GC SB!KERNEL:TYPE-SINGLE-VALUE-P SB!KERNEL:TYPE/= SB!KERNEL:TYPE= SB!KERNEL:TYPES-EQUAL-OR-INTERSECT SB!KERNEL:VALUES-SUBTYPEP SB!KERNEL:VALUES-TYPE-MAY-BE-SINGLE-VALUE-P SB!KERNEL:VALUES-TYPES-EQUAL-OR-INTERSECT SB!LOOP::LOOP-TEQUAL SB!LOOP::LOOP-TMEMBER SB!LOOP::LOOP-VAR-P SB!MOP:CLASS-FINALIZED-P SB!PCL::CLASS-HAS-A-FORWARD-REFERENCED-SUPERCLASS-P SB!PRETTY::CONS-TYPE-SPECIFIER-P SB!PRETTY::ENTRY< SB!PRETTY::MAYBE-OUTPUT SB!PRETTY::MBOUNDP SB!PRETTY::MISERING-P SB!PRETTY:PRETTY-STREAM-P SB!SYS:FD-STREAM-P SB!SYS:FIND-FOREIGN-SYMBOL-IN-TABLE SB!SYS:UNDEFINED-FOREIGN-SYMBOLS-P SB!SYS:WAIT-UNTIL-FD-USABLE SB!THREAD::THREAD-P SB!THREAD:THREAD-ALIVE-P SB!UNIX:UNIX-ACCESS SB!UNIX:UNIX-FSTAT SB!VM::ACCUMULATOR-P SB!VM::DWORD-REG-P SB!VM::FOLDABLE-CONSTANT-OFFSET-P SB!VM::QWORD-REG-P SB!VM::REGISTER-P SB!VM::VALID-OBJ SB!VM::XMM-REGISTER-P SB!VM:STATIC-SYMBOL-P SB!VM:VALID-BIT-BASH-SAETP-P SB!WALKER::%VAR-DECLARATION SB!WALKER::GET-WALKER-TEMPLATE SB!WALKER::VARIABLE-SYMBOL-MACRO-P SB!WALKER::WALKED-VAR-DECLARATION-P SB!WALKER:VAR-GLOBALLY-SPECIAL-P SB-ACLREPL::ARRAY-LABEL-P SB-ACLREPL::FIRST-ELEMENT-ELLIPSES-P SB-ACLREPL::HEX-LABEL-P SB-ACLREPL::NAMED-OR-ARRAY-LABEL-P SB-ACLREPL::NEWER-FILE-P SB-ACLREPL::PARTS-COUNT SB-ACLREPL::PROCESS-CMD SB-ACLREPL::SIMPLE-CONS-PAIR-P SB-ACLREPL::STACK SB-ACLREPL::USER-CMD= SB-ACLREPL::WHITESPACE-CHAR-NOT-NEWLINE-P SB-ACLREPL::WHITESPACE-CHAR-P SB-ALIEN::C-STRING-TO-STRING SB-BSD-SOCKETS:SOCKET-OPEN-P SB-C::%CONSTANT-FORM-VALUE SB-C::%CONSTANTP SB-C::CODE-COVERAGE-RECORD-MARKED SB-C::NULL-LEXENV-P SB-DI:FRAME-DOWN SB-DI:FUN-END-COOKIE-VALID-P SB-EVAL:INTERPRETED-FUNCTION-P SB-EXT:PACKAGE-LOCKED-P SB-EXT:RUN-PROGRAM SB-GRAY:STREAM-START-LINE-P SB-GROVEL::CHILDREN SB-GROVEL::DO-NOT-GROVEL SB-GROVEL::OVERLAP-P SB-IMPL::GETHASH3 SB-IMPL::STEPPING-ENABLED-P SB-INT:ASSQ SB-INT:LEGAL-FUN-NAME-P SB-INT:LIST-OF-LENGTH-AT-LEAST-P SB-INT:MEMQ SB-INT:PROPER-LIST-OF-LENGTH-P SB-INT:REFERENCE-CONDITION-REFERENCES SB-INT:VALID-FUNCTION-NAME-P SB-INTROSPECT::STRUCT-ACCESSOR-P SB-INTROSPECT::STRUCT-PREDICATE-P SB-INTROSPECT:VALID-FUNCTION-NAME-P SB-KERNEL:%ARRAY-DISPLACED-P SB-KERNEL:%ARRAY-FILL-POINTER-P SB-KERNEL:%ASSOC-EQ SB-KERNEL:%ASSOC-TEST SB-KERNEL:%FUNCALLABLE-INSTANCE-INFO SB-KERNEL:%INSTANCE-REF SB-KERNEL:%MEMBER SB-KERNEL:%MEMBER-EQ SB-KERNEL:%MEMBER-KEY-EQ SB-KERNEL:%MEMBER-KEY-TEST SB-KERNEL:%MEMBER-TEST SB-KERNEL:%RPLACA SB-KERNEL:%RPLACD SB-KERNEL::KEYWORD-SUPPLIED-P SB-KERNEL:ARRAY-HEADER-P SB-KERNEL:CHECK-FOR-CIRCULARITY SB-KERNEL:CLASSOID-CELL-TYPEP SB-KERNEL:CLOSUREP SB-KERNEL:CSUBTYPEP SB-KERNEL:DATA-VECTOR-REF-WITH-OFFSET SB-KERNEL:HANDLE-CIRCULARITY SB-KERNEL:SIMPLE-FUN-P SB-KERNEL:STRING/=* SB-KERNEL:STRING<* SB-KERNEL:STRING=* SB-KERNEL:TYPES-EQUAL-OR-INTERSECT SB-MOP:CLASS-FINALIZED-P SB-MOP:GENERIC-FUNCTION-METHODS SB-MOP:METHOD-GENERIC-FUNCTION SB-MOP:SLOT-BOUNDP-USING-CLASS SB-MOP:VALIDATE-SUPERCLASS SB-PCL::*SUBTYPEP SB-PCL::ACCESSOR-METHOD-P SB-PCL::ARG-INFO-VALID-P SB-PCL::AROUND-OR-NONSTANDARD-PRIMARY-METHOD-P SB-PCL::BODY-METHOD-NAME SB-PCL::CACHE-HAS-INVALID-ENTRIES-P SB-PCL::CLASS-HAS-A-FORWARD-REFERENCED-SUPERCLASS-P SB-PCL::CLASS-MIGHT-PRECEDE-P SB-PCL::CLASSP SB-PCL::COMPUTE-APPLICABLE-METHODS-EMF-STD-P SB-PCL::CONDITION-CLASS-P SB-PCL::CONDITION-TYPE-P SB-PCL::CONSTANT-CLASS-ARG-P SB-PCL::CONSTANT-SYMBOL-P SB-PCL::CPL-AVAILABLE-P SB-PCL::DEFAULT-CONSTANTP SB-PCL::DNET-METHODS-P SB-PCL::EARLY-GF-P SB-PCL::EARLY-METHOD-QUALIFIERS SB-PCL::EARLY-METHOD-STANDARD-ACCESSOR-P SB-PCL::EQL-SPECIALIZER-P SB-PCL::FINALIZE-SPECIALIZERS SB-PCL::FIND-SLOT-DEFINITION SB-PCL::FORWARD-REFERENCED-CLASS-P SB-PCL::FSC-INSTANCE-P SB-PCL::FUNCALLABLE-STANDARD-CLASS-P SB-PCL::GENERATE-FAST-CLASS-SLOT-ACCESS-P SB-PCL::GENERIC-FUNCTION-P SB-PCL::GF-FAST-METHOD-FUNCTION-P SB-PCL::GF-HAS-METHOD-WITH-NONSTANDARD-SPECIALIZER-P SB-PCL::GF-INFO-NEEDS-UPDATE SB-PCL::GF-REQUIRES-EMF-KEYWORD-CHECKS SB-PCL::GLOBAL-WRITER-METHOD-P SB-PCL::INTERNED-SYMBOL-P SB-PCL::LONG-METHOD-COMBINATION-P SB-PCL::METHOD-COMBINATION-P SB-PCL::METHOD-P SB-PCL::METHODS-CONTAIN-EQL-SPECIALIZER-P SB-PCL::OPTIMIZE-SLOT-VALUE-BY-CLASS-P SB-PCL::PARAMETER-MODIFIED-P SB-PCL::PROBE-CACHE SB-PCL::QUALIFIER-CHECK-RUNTIME SB-PCL::SAFE-CODE-P SB-PCL::SAFE-METHOD-QUALIFIERS SB-PCL::SAFE-P SB-PCL::SHORT-COMBINATION-IDENTITY-WITH-ONE-ARGUMENT SB-PCL::SHORT-METHOD-COMBINATION-P SB-PCL::SKIP-FAST-SLOT-ACCESS-P SB-PCL::SLOT-ACCESSOR-STD-P SB-PCL::SLOT-DEFINITION-CLASS SB-PCL::SPECIAL-CASE-FOR-COMPUTE-DISCRIMINATING-FUNCTION-P SB-PCL::SPECIALIZERP SB-PCL::STANDARD-CLASS-P SB-PCL::STANDARD-SLOT-VALUE/METHOD SB-PCL::STANDARD-SPECIALIZER-P SB-PCL::STANDARD-SVUC-METHOD SB-PCL::STANDARD-WRITER-METHOD-P SB-PCL::STD-CLASS-P SB-PCL::STD-INSTANCE-P SB-PCL::STRUCTURE-CLASS-P SB-PCL::STRUCTURE-SVUC-METHOD SB-PCL::STRUCTURE-TYPE-P SB-PCL::TRY-PUT-CTOR SB-PCL::TRY-UPDATE-CACHE SB-PCL::TRY-UPDATE-CACHE-LINE SB-PCL::USE-CACHING-DFUN-P SB-PCL::USE-CONSTANT-VALUE-DFUN-P SB-PCL::USE-DISPATCH-DFUN-P SB-QUEUE:QUEUE-EMPTY-P SB-RT::EQUALP-WITH-CASE SB-SIMPLE-STREAMS::DO-SOME-OUTPUT SB-SIMPLE-STREAMS::OPEN-FILE-STREAM SB-SIMPLE-STREAMS::SC-DIRTY-P SB-SIMPLE-STREAMS:DEVICE-OPEN SB-SPROF::PROFILED-THREAD-P SB-SPROF::SELF-CYCLE-P SB-SYS:FIND-FOREIGN-SYMBOL-ADDRESS SB-THREAD:THREAD-ALIVE-P SB-UNIX:UNIX-ACCESS SB-UNIX:UNIX-ISATTY SB-UNIX:UNIX-UNLINK SB-WALKER::%VAR-DECLARATION SB-WALKER:VAR-SPECIAL-P SB-XC:COMPILER-MACRO-FUNCTION SB-XC:CONSTANTP SB-XC:MACRO-FUNCTION SB-XC:SUBTYPEP SB-XC:TYPEP |
From: Christophe R. <cs...@ca...> - 2009-11-19 11:08:27
|
Nikodemus Siivola <nik...@ra...> writes: > Though constraint propagation is already an unholy timesink, some of > these look potentially interesting: eg. propagating BOUNDP would make > for nicer special variable access code, and ARRAY-HEADER-P is also > almost certainly worth looking at. EQUAL seems like a good candidate > too... > COMMON-LISP:ARRAY-HAS-FILL-POINTER-P > COMMON-LISP:ARRAY-IN-BOUNDS-P > SB!KERNEL:%ARRAY-DISPLACED-P Based on extensive user and developer feedback (read: a conversation with Juho and Paul on IRC), it seems that there is demand for a little bit of type system and compiler hackery, to teach the system about particular kinds of non-simple arrays. The comment that motivates this is "adjustable arrays are total crap in sbcl in general; vector-push-extend is particularly crap". I think I can do the type system modifications; a preliminary, which is to teach the type system that (and <array-type> (not simple-array)) means that the array is definitely complex, seems to be working, and incidentally fixes #309129. The full modifications will have to wait until after sbcl-1.0.33; this is just a heads-up to say that it might soon become possible to exploit specific bits of array properties rather more than at present. Cheers, Christophe |