Changeset 14490
- Timestamp:
- 05/02/13 09:14:27 (10 years ago)
- Location:
- trunk/abcl/src/org/armedbear/lisp
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/Autoload.java
r14485 r14490 553 553 autoload(PACKAGE_SYS, "%%string=", "StringFunctions"); 554 554 autoload(PACKAGE_SYS, "%adjust-array", "adjust_array"); 555 autoload(PACKAGE_SYS, "%clear-emf-cache", "StandardGenericFunction", true); 555 556 autoload(PACKAGE_SYS, "%defpackage", "PackageFunctions"); 556 autoload(PACKAGE_SYS, "%finalize-generic-function", "StandardGenericFunction", true);557 557 autoload(PACKAGE_SYS, "%get-output-stream-bytes", "ByteArrayOutputStream"); //AS 20090325 558 558 autoload(PACKAGE_SYS, "%get-output-stream-array", "ByteArrayOutputStream"); … … 579 579 autoload(PACKAGE_SYS, "%set-function-info", "function_info"); 580 580 autoload(PACKAGE_SYS, "%init-eql-specializations", "StandardGenericFunction", true); 581 autoload(PACKAGE_SYS, "%get-arg-specialization", "StandardGenericFunction", true);582 581 autoload(PACKAGE_SYS, "%set-symbol-macro", "Primitives"); 583 582 autoload(PACKAGE_SYS, "%simple-bit-vector-bit-and", "SimpleBitVector"); -
trunk/abcl/src/org/armedbear/lisp/StandardClass.java
r14482 r14490 832 832 constantlyNil), 833 833 new SlotDefinition(Symbol.DECLARATIONS, NIL, constantlyNil), 834 new SlotDefinition(Symbol.CLASSES_TO_EMF_TABLE, NIL, constantlyNil),835 834 new SlotDefinition(Symbol._DOCUMENTATION, NIL, constantlyNil, 836 835 list(internKeyword("DOCUMENTATION"))))); -
trunk/abcl/src/org/armedbear/lisp/StandardGenericFunction.java
r14485 r14490 62 62 setInstanceSlotValue(Symbol.ARGUMENT_PRECEDENCE_ORDER, NIL); 63 63 setInstanceSlotValue(Symbol.DECLARATIONS, NIL); 64 setInstanceSlotValue(Symbol.CLASSES_TO_EMF_TABLE, NIL);65 64 setInstanceSlotValue(Symbol._DOCUMENTATION, NIL); 66 65 } 67 66 68 void finalizeInternal()67 void clearCache() 69 68 { 70 69 cache = null; … … 115 114 116 115 117 private static final Primitive _ FINALIZE_GENERIC_FUNCTION116 private static final Primitive _CLEAR_EMF_CACHE 118 117 = new pf__finalize_generic_function(); 119 @DocString(name="% finalize-generic-function",118 @DocString(name="%clear-emf-cache", 120 119 args="generic-function") 121 120 private static final class pf__finalize_generic_function extends Primitive … … 123 122 pf__finalize_generic_function() 124 123 { 125 super("% finalize-generic-function", PACKAGE_SYS, true,124 super("%clear-emf-cache", PACKAGE_SYS, true, 126 125 "generic-function"); 127 126 } … … 130 129 { 131 130 final StandardGenericFunction gf = checkStandardGenericFunction(arg); 132 gf. finalizeInternal();131 gf.clearCache(); 133 132 return T; 134 133 } … … 265 264 } 266 265 267 private static final Primitive _GET_ARG_SPECIALIZATION268 = new pf__get_arg_specialization();269 @DocString(name="%get-arg-specialization",270 args="generic-function arg")271 private static final class pf__get_arg_specialization extends Primitive272 {273 pf__get_arg_specialization()274 {275 super("%get-arg-specialization", PACKAGE_SYS, true, "generic-function arg");276 }277 @Override278 public LispObject execute(LispObject first, LispObject second)279 {280 final StandardGenericFunction gf = checkStandardGenericFunction(first);281 return gf.getArgSpecialization(second);282 }283 };284 285 266 private static class CacheEntry 286 267 { -
trunk/abcl/src/org/armedbear/lisp/Symbol.java
r14482 r14490 3157 3157 public static final Symbol CAUSE = 3158 3158 PACKAGE_SYS.addInternalSymbol("CAUSE"); 3159 public static final Symbol CLASSES_TO_EMF_TABLE =3160 PACKAGE_SYS.addInternalSymbol("CLASSES-TO-EMF-TABLE");3161 3159 public static final Symbol COMMA_MACRO = 3162 3160 PACKAGE_SYS.addInternalSymbol("COMMA-MACRO"); -
trunk/abcl/src/org/armedbear/lisp/autoloads-gen.lisp
r14459 r14490 46 46 47 47 (IN-PACKAGE :MOP) 48 (DOLIST (SYSTEM::FS (QUOTE ((("clos") CLASS-SLOTS CLASS-DIRECT-SLOTS CLASS-LAYOUT CLASS-DIRECT-SUPERCLASSES CLASS-DIRECT-SUBCLASSES CLASS-DIRECT-METHODS CLASS-PRECEDENCE-LIST CLASS-FINALIZED-P CLASS-DEFAULT-INITARGS CLASS-DIRECT-DEFAULT-INITARGS ADD-DIRECT-SUBCLASS REMOVE-DIRECT-SUBCLASS FIXUP-STANDARD-CLASS-HIERARCHY MAP-DEPENDENTS MAPAPPEND MAPPLIST FUNCALLABLE-STANDARD-INSTANCE-ACCESS CANONICALIZE-DIRECT-SLOTS CANONICALIZE-DIRECT-SLOT MAYBE-NOTE-NAME-DEFINED CANONICALIZE-DEFCLASS-OPTIONS CANONICALIZE-DEFCLASS-OPTION MAKE-INITFUNCTION SLOT-DEFINITION-ALLOCATION SLOT-DEFINITION-INITARGS SLOT-DEFINITION-INITFORM SLOT-DEFINITION-INITFUNCTION SLOT-DEFINITION-NAME SLOT-DEFINITION-READERS SLOT-DEFINITION-WRITERS SLOT-DEFINITION-ALLOCATION-CLASS SLOT-DEFINITION-LOCATION SLOT-DEFINITION-TYPE SLOT-DEFINITION-DOCUMENTATION INIT-SLOT-DEFINITION DIRECT-SLOT-DEFINITION-CLASS MAKE-DIRECT-SLOT-DEFINITION EFFECTIVE-SLOT-DEFINITION-CLASS MAKE-EFFECTIVE-SLOT-DEFINITION COMPUTE-DEFAULT-INITARGS STD-COMPUTE-DEFAULT-INITARGS STD-FINALIZE-INHERITANCE FINALIZE-INHERITANCE STD-COMPUTE-CLASS-PRECEDENCE-LIST TOPOLOGICAL-SORT STD-TIE-BREAKER-RULE COLLECT-SUPERCLASSES* LOCAL-PRECEDENCE-ORDERING STD-COMPUTE-SLOTS STD-COMPUTE-EFFECTIVE-SLOT-DEFINITION FIND-SLOT-DEFINITION SLOT-LOCATION INSTANCE-SLOT-LOCATION %SET-SLOT-VALUE STD-SLOT-MAKUNBOUND STD-SLOT-EXISTS-P INSTANCE-SLOT-P STD-ALLOCATE-INSTANCE ALLOCATE-FUNCALLABLE-INSTANCE CLASS-PROTOTYPE MAYBE-FINALIZE-CLASS-SUBTREE MAKE-INSTANCE-STANDARD-CLASS STD-AFTER-INITIALIZATION-FOR-CLASSES EXPAND-LONG-DEFCOMBIN %MAKE-LONG-METHOD-COMBINATION METHOD-COMBINATION-NAME METHOD-COMBINATION-DOCUMENTATION SHORT-METHOD-COMBINATION-OPERATOR SHORT-METHOD-COMBINATION-IDENTITY-WITH-ONE-ARGUMENT LONG-METHOD-COMBINATION-LAMBDA-LIST LONG-METHOD-COMBINATION-METHOD-GROUP-SPECS LONG-METHOD-COMBINATION-ARGS-LAMBDA-LIST LONG-METHOD-COMBINATION-GENERIC-FUNCTION-SYMBOL LONG-METHOD-COMBINATION-FUNCTION LONG-METHOD-COMBINATION-ARGUMENTS LONG-METHOD-COMBINATION-DECLARATIONS LONG-METHOD-COMBINATION-FORMS EXPAND-SHORT-DEFCOMBIN METHOD-GROUP-P CHECK-VARIABLE-NAME CANONICALIZE-METHOD-GROUP-SPEC EXTRACT-REQUIRED-PART EXTRACT-SPECIFIED-PART EXTRACT-OPTIONAL-PART PARSE-DEFINE-METHOD-COMBINATION-ARGS-LAMBDA-LIST WRAP-WITH-CALL-METHOD-MACRO ASSERT-UNAMBIGUOUS-METHOD-SORTING METHOD-COMBINATION-TYPE-LAMBDA-WITH-ARGS-EMF METHOD-COMBINATION-TYPE-LAMBDA DECLARATIONP LONG-FORM-METHOD-COMBINATION-ARGS DEFINE-LONG-FORM-METHOD-COMBINATION STD-FIND-METHOD-COMBINATION FIND-METHOD-COMBINATION INTERN-EQL-SPECIALIZER EQL-SPECIALIZER-OBJECT STD-METHOD-FUNCTION STD-METHOD-GENERIC-FUNCTION STD-METHOD-SPECIALIZERS STD-METHOD-QUALIFIERS STD-ACCESSOR-METHOD-SLOT-DEFINITION STD-METHOD-FAST-FUNCTION STD-FUNCTION-KEYWORDS METHOD-GENERIC-FUNCTION METHOD-FUNCTION METHOD-SPECIALIZERS GENERIC-FUNCTION-NAME GENERIC-FUNCTION-LAMBDA-LIST GENERIC-FUNCTION-METHODS GENERIC-FUNCTION-METHOD-CLASS GENERIC-FUNCTION-METHOD-COMBINATION GENERIC-FUNCTION-ARGUMENT-PRECEDENCE-ORDER CLASSES-TO-EMF-TABLEMETHOD-DOCUMENTATION CANONICALIZE-DEFGENERIC-OPTIONS CANONICALIZE-DEFGENERIC-OPTION ARGUMENT-PRECEDENCE-ORDER-INDICES FIND-GENERIC-FUNCTION LAMBDA-LISTS-CONGRUENT-P %DEFGENERIC COLLECT-EQL-SPECIALIZER-OBJECTS FINALIZE-STANDARD-GENERIC-FUNCTION MAKE-INSTANCE-STANDARD-GENERIC-FUNCTION CANONICALIZE-SPECIALIZERS CANONICALIZE-SPECIALIZER PARSE-DEFMETHOD REQUIRED-PORTION EXTRACT-LAMBDA-LIST EXTRACT-SPECIALIZER-NAMES GET-KEYWORD-FROM-ARG ANALYZE-LAMBDA-LIST CHECK-METHOD-LAMBDA-LIST CHECK-ARGUMENT-PRECEDENCE-ORDER ENSURE-METHOD MAKE-INSTANCE-STANDARD-METHOD ADD-DIRECT-METHOD REMOVE-DIRECT-METHOD STD-ADD-METHOD STD-REMOVE-METHOD %FIND-METHOD FAST-CALLABLE-P SLOW-READER-LOOKUP STD-COMPUTE-DISCRIMINATING-FUNCTION SORT-METHODS METHOD-APPLICABLE-P STD-COMPUTE-APPLICABLE-METHODS METHOD-APPLICABLE-USING-CLASSES-P CHECK-APPLICABLE-METHOD-KEYWORD-ARGS COMPUTE-APPLICABLE-KEYWORDS WRAP-EMFUN-FOR-KEYWORD-ARGS-CHECK SLOW-METHOD-LOOKUP SLOW-METHOD-LOOKUP-1 SUB-SPECIALIZER-P STD-METHOD-MORE-SPECIFIC-P PRIMARY-METHOD-P BEFORE-METHOD-P AFTER-METHOD-P AROUND-METHOD-P PROCESS-NEXT-METHOD-LIST STD-COMPUTE-EFFECTIVE-METHOD GENERATE-EMF-LAMBDA COMPUTE-PRIMARY-EMFUN WALK-FORM COMPUTE-METHOD-FUNCTION COMPUTE-METHOD-FAST-FUNCTION MAKE-METHOD-LAMBDA ALLOW-OTHER-KEYS MAKE-INSTANCE-STANDARD-ACCESSOR-METHOD ADD-READER-METHOD ADD-WRITER-METHOD CHECK-DUPLICATE-SLOTS CHECK-DUPLICATE-DEFAULT-INITARGS CANONICALIZE-DIRECT-SUPERCLASSES ENSURE-CLASS ENSURE-CLASS-USING-CLASS READER-METHOD-CLASS WRITER-METHOD-CLASS COMPUTE-APPLICABLE-METHODS-USING-CLASSES SLOT-VALUE-USING-CLASS SLOT-EXISTS-P-USING-CLASS SLOT-BOUNDP-USING-CLASS SLOT-MAKUNBOUND-USING-CLASS CALCULATE-ALLOWABLE-INITARGS CHECK-INITARGS MERGE-INITARGS-SETS EXTRACT-LAMBDA-LIST-KEYWORDS AUGMENT-INITARGS-WITH-DEFAULTS STD-SHARED-INITIALIZE COMPUTE-SLOTS COMPUTE-EFFECTIVE-SLOT-DEFINITION COMPUTE-DISCRIMINATING-FUNCTION METHOD-MORE-SPECIFIC-P COMPUTE-EFFECTIVE-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS SPECIALIZER-DIRECT-METHODS ADD-DEPENDENT REMOVE-DEPENDENT UPDATE-DEPENDENT ENSURE-GENERIC-FUNCTION-USING-CLASS %METHOD-GENERIC-FUNCTION %METHOD-FUNCTION)))) (FUNCALL (FUNCTION AUTOLOAD) (CDR SYSTEM::FS) (CAR (CAR SYSTEM::FS))))48 (DOLIST (SYSTEM::FS (QUOTE ((("clos") CLASS-SLOTS CLASS-DIRECT-SLOTS CLASS-LAYOUT CLASS-DIRECT-SUPERCLASSES CLASS-DIRECT-SUBCLASSES CLASS-DIRECT-METHODS CLASS-PRECEDENCE-LIST CLASS-FINALIZED-P CLASS-DEFAULT-INITARGS CLASS-DIRECT-DEFAULT-INITARGS ADD-DIRECT-SUBCLASS REMOVE-DIRECT-SUBCLASS FIXUP-STANDARD-CLASS-HIERARCHY MAP-DEPENDENTS MAPAPPEND MAPPLIST FUNCALLABLE-STANDARD-INSTANCE-ACCESS CANONICALIZE-DIRECT-SLOTS CANONICALIZE-DIRECT-SLOT MAYBE-NOTE-NAME-DEFINED CANONICALIZE-DEFCLASS-OPTIONS CANONICALIZE-DEFCLASS-OPTION MAKE-INITFUNCTION SLOT-DEFINITION-ALLOCATION SLOT-DEFINITION-INITARGS SLOT-DEFINITION-INITFORM SLOT-DEFINITION-INITFUNCTION SLOT-DEFINITION-NAME SLOT-DEFINITION-READERS SLOT-DEFINITION-WRITERS SLOT-DEFINITION-ALLOCATION-CLASS SLOT-DEFINITION-LOCATION SLOT-DEFINITION-TYPE SLOT-DEFINITION-DOCUMENTATION INIT-SLOT-DEFINITION DIRECT-SLOT-DEFINITION-CLASS MAKE-DIRECT-SLOT-DEFINITION EFFECTIVE-SLOT-DEFINITION-CLASS MAKE-EFFECTIVE-SLOT-DEFINITION COMPUTE-DEFAULT-INITARGS STD-COMPUTE-DEFAULT-INITARGS STD-FINALIZE-INHERITANCE FINALIZE-INHERITANCE STD-COMPUTE-CLASS-PRECEDENCE-LIST TOPOLOGICAL-SORT STD-TIE-BREAKER-RULE COLLECT-SUPERCLASSES* LOCAL-PRECEDENCE-ORDERING STD-COMPUTE-SLOTS STD-COMPUTE-EFFECTIVE-SLOT-DEFINITION FIND-SLOT-DEFINITION SLOT-LOCATION INSTANCE-SLOT-LOCATION %SET-SLOT-VALUE STD-SLOT-MAKUNBOUND STD-SLOT-EXISTS-P INSTANCE-SLOT-P STD-ALLOCATE-INSTANCE ALLOCATE-FUNCALLABLE-INSTANCE CLASS-PROTOTYPE MAYBE-FINALIZE-CLASS-SUBTREE MAKE-INSTANCE-STANDARD-CLASS STD-AFTER-INITIALIZATION-FOR-CLASSES EXPAND-LONG-DEFCOMBIN %MAKE-LONG-METHOD-COMBINATION METHOD-COMBINATION-NAME METHOD-COMBINATION-DOCUMENTATION SHORT-METHOD-COMBINATION-OPERATOR SHORT-METHOD-COMBINATION-IDENTITY-WITH-ONE-ARGUMENT LONG-METHOD-COMBINATION-LAMBDA-LIST LONG-METHOD-COMBINATION-METHOD-GROUP-SPECS LONG-METHOD-COMBINATION-ARGS-LAMBDA-LIST LONG-METHOD-COMBINATION-GENERIC-FUNCTION-SYMBOL LONG-METHOD-COMBINATION-FUNCTION LONG-METHOD-COMBINATION-ARGUMENTS LONG-METHOD-COMBINATION-DECLARATIONS LONG-METHOD-COMBINATION-FORMS EXPAND-SHORT-DEFCOMBIN METHOD-GROUP-P CHECK-VARIABLE-NAME CANONICALIZE-METHOD-GROUP-SPEC EXTRACT-REQUIRED-PART EXTRACT-SPECIFIED-PART EXTRACT-OPTIONAL-PART PARSE-DEFINE-METHOD-COMBINATION-ARGS-LAMBDA-LIST WRAP-WITH-CALL-METHOD-MACRO ASSERT-UNAMBIGUOUS-METHOD-SORTING METHOD-COMBINATION-TYPE-LAMBDA-WITH-ARGS-EMF METHOD-COMBINATION-TYPE-LAMBDA DECLARATIONP LONG-FORM-METHOD-COMBINATION-ARGS DEFINE-LONG-FORM-METHOD-COMBINATION STD-FIND-METHOD-COMBINATION FIND-METHOD-COMBINATION INTERN-EQL-SPECIALIZER EQL-SPECIALIZER-OBJECT STD-METHOD-FUNCTION STD-METHOD-GENERIC-FUNCTION STD-METHOD-SPECIALIZERS STD-METHOD-QUALIFIERS STD-ACCESSOR-METHOD-SLOT-DEFINITION STD-METHOD-FAST-FUNCTION STD-FUNCTION-KEYWORDS METHOD-GENERIC-FUNCTION METHOD-FUNCTION METHOD-SPECIALIZERS GENERIC-FUNCTION-NAME GENERIC-FUNCTION-LAMBDA-LIST GENERIC-FUNCTION-METHODS GENERIC-FUNCTION-METHOD-CLASS GENERIC-FUNCTION-METHOD-COMBINATION GENERIC-FUNCTION-ARGUMENT-PRECEDENCE-ORDER METHOD-DOCUMENTATION CANONICALIZE-DEFGENERIC-OPTIONS CANONICALIZE-DEFGENERIC-OPTION ARGUMENT-PRECEDENCE-ORDER-INDICES FIND-GENERIC-FUNCTION LAMBDA-LISTS-CONGRUENT-P %DEFGENERIC COLLECT-EQL-SPECIALIZER-OBJECTS FINALIZE-STANDARD-GENERIC-FUNCTION MAKE-INSTANCE-STANDARD-GENERIC-FUNCTION CANONICALIZE-SPECIALIZERS CANONICALIZE-SPECIALIZER PARSE-DEFMETHOD REQUIRED-PORTION EXTRACT-LAMBDA-LIST EXTRACT-SPECIALIZER-NAMES GET-KEYWORD-FROM-ARG ANALYZE-LAMBDA-LIST CHECK-METHOD-LAMBDA-LIST CHECK-ARGUMENT-PRECEDENCE-ORDER ENSURE-METHOD MAKE-INSTANCE-STANDARD-METHOD ADD-DIRECT-METHOD REMOVE-DIRECT-METHOD STD-ADD-METHOD STD-REMOVE-METHOD %FIND-METHOD FAST-CALLABLE-P SLOW-READER-LOOKUP STD-COMPUTE-DISCRIMINATING-FUNCTION SORT-METHODS METHOD-APPLICABLE-P STD-COMPUTE-APPLICABLE-METHODS METHOD-APPLICABLE-USING-CLASSES-P CHECK-APPLICABLE-METHOD-KEYWORD-ARGS COMPUTE-APPLICABLE-KEYWORDS WRAP-EMFUN-FOR-KEYWORD-ARGS-CHECK SLOW-METHOD-LOOKUP SLOW-METHOD-LOOKUP-1 SUB-SPECIALIZER-P STD-METHOD-MORE-SPECIFIC-P PRIMARY-METHOD-P BEFORE-METHOD-P AFTER-METHOD-P AROUND-METHOD-P PROCESS-NEXT-METHOD-LIST STD-COMPUTE-EFFECTIVE-METHOD GENERATE-EMF-LAMBDA COMPUTE-PRIMARY-EMFUN WALK-FORM COMPUTE-METHOD-FUNCTION COMPUTE-METHOD-FAST-FUNCTION MAKE-METHOD-LAMBDA ALLOW-OTHER-KEYS MAKE-INSTANCE-STANDARD-ACCESSOR-METHOD ADD-READER-METHOD ADD-WRITER-METHOD CHECK-DUPLICATE-SLOTS CHECK-DUPLICATE-DEFAULT-INITARGS CANONICALIZE-DIRECT-SUPERCLASSES ENSURE-CLASS ENSURE-CLASS-USING-CLASS READER-METHOD-CLASS WRITER-METHOD-CLASS COMPUTE-APPLICABLE-METHODS-USING-CLASSES SLOT-VALUE-USING-CLASS SLOT-EXISTS-P-USING-CLASS SLOT-BOUNDP-USING-CLASS SLOT-MAKUNBOUND-USING-CLASS CALCULATE-ALLOWABLE-INITARGS CHECK-INITARGS MERGE-INITARGS-SETS EXTRACT-LAMBDA-LIST-KEYWORDS AUGMENT-INITARGS-WITH-DEFAULTS STD-SHARED-INITIALIZE COMPUTE-SLOTS COMPUTE-EFFECTIVE-SLOT-DEFINITION COMPUTE-DISCRIMINATING-FUNCTION METHOD-MORE-SPECIFIC-P COMPUTE-EFFECTIVE-METHOD SPECIALIZER-DIRECT-GENERIC-FUNCTIONS SPECIALIZER-DIRECT-METHODS ADD-DEPENDENT REMOVE-DEPENDENT UPDATE-DEPENDENT ENSURE-GENERIC-FUNCTION-USING-CLASS %METHOD-GENERIC-FUNCTION %METHOD-FUNCTION)))) (FUNCALL (FUNCTION AUTOLOAD) (CDR SYSTEM::FS) (CAR (CAR SYSTEM::FS)))) 49 49 50 50 ;; MACROS -
trunk/abcl/src/org/armedbear/lisp/clos.lisp
r14488 r14490 1613 1613 (std-slot-value gf 'sys::optional-args)) 1614 1614 1615 (declaim (ftype (function * t) classes-to-emf-table))1616 (defun classes-to-emf-table (gf)1617 (std-slot-value gf 'sys::classes-to-emf-table))1618 1619 (defun (setf classes-to-emf-table) (new-value gf)1620 (setf (std-slot-value gf 'sys::classes-to-emf-table) new-value))1621 1622 1615 (defun (setf method-lambda-list) (new-value method) 1623 1616 (setf (std-slot-value method 'sys::lambda-list) new-value)) … … 1827 1820 1828 1821 (defun finalize-standard-generic-function (gf) 1829 (%finalize-generic-function gf) 1830 (if (classes-to-emf-table gf) 1831 (clrhash (classes-to-emf-table gf)) 1832 (setf (classes-to-emf-table gf) (make-hash-table :test #'equal))) 1822 (%clear-emf-cache gf) 1833 1823 (%init-eql-specializations gf (collect-eql-specializer-objects gf)) 1834 1824 (set-funcallable-instance-function … … 1866 1856 (setf (std-slot-value gf 'sys::declarations) declarations) 1867 1857 (setf (std-slot-value gf 'sys::%documentation) documentation) 1868 (setf (std-slot-value gf 'sys::classes-to-emf-table) nil)1869 1858 (let* ((plist (analyze-lambda-list (generic-function-lambda-list gf))) 1870 1859 (required-args (getf plist ':required-args))) … … 2258 2247 '(&rest &optional &key &allow-other-keys &aux))))) 2259 2248 2260 (declaim (ftype (function * t) slow-method-lookup-1))2261 2262 2249 (defun std-compute-discriminating-function (gf) 2263 2250 ;; In this function, we know that gf is of class … … 2298 2285 (setf (std-slot-value instance slot-name) new-value)))) 2299 2286 (t 2300 (let* ((emf-table (classes-to-emf-table gf)) 2301 (number-required (length (generic-function-required-arguments gf))) 2287 (let* ((number-required (length (generic-function-required-arguments gf))) 2302 2288 (lambda-list (generic-function-lambda-list gf)) 2303 2289 (exact (null (intersection lambda-list … … 2339 2325 #'(lambda (arg) 2340 2326 (declare (optimize speed)) 2341 (let* ((specialization 2342 (%get-arg-specialization gf arg)) 2343 (emfun (or (gethash1 specialization 2344 emf-table) 2345 (slow-method-lookup-1 2346 gf arg specialization)))) 2327 (let* ((args (list arg)) 2328 (emfun (get-cached-emf gf args))) 2347 2329 (if emfun 2348 (funcall emfun (list arg))2349 ( apply #'no-applicable-method gf (list arg))))))))2330 (funcall emfun args) 2331 (slow-method-lookup gf args))))))) 2350 2332 ((= number-required 2) 2351 2333 #'(lambda (arg1 arg2) … … 2376 2358 (funcall emfun args) 2377 2359 (slow-method-lookup gf args)))))) 2378 ;; (let ((non-key-args (+ number-required2379 ;; (length (generic-function-optional-arguments gf))))))2380 2360 #'(lambda (&rest args) 2381 2361 (declare (optimize speed)) … … 2526 2506 (funcall emfun args)) 2527 2507 (apply #'no-applicable-method gf args)))) 2528 2529 (defun slow-method-lookup-1 (gf arg arg-specialization)2530 (let ((applicable-methods2531 (if (eq (class-of gf) +the-standard-generic-function-class+)2532 (std-compute-applicable-methods gf (list arg))2533 (or (compute-applicable-methods-using-classes gf (list (class-of arg)))2534 (compute-applicable-methods gf (list arg))))))2535 (if applicable-methods2536 (let ((emfun (funcall (if (eq (class-of gf)2537 +the-standard-generic-function-class+)2538 #'std-compute-effective-method2539 #'compute-effective-method)2540 gf (generic-function-method-combination gf)2541 applicable-methods)))2542 (when emfun2543 (setf (gethash arg-specialization (classes-to-emf-table gf)) emfun))2544 emfun))))2545 2508 2546 2509 (defun sub-specializer-p (c1 c2 c-arg)
Note: See TracChangeset
for help on using the changeset viewer.