Changeset 13781
- Timestamp:
- 01/15/12 19:51:35 (11 years ago)
- Location:
- trunk/abcl/src/org/armedbear/lisp
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/Autoload.java
r13775 r13781 578 578 autoload(PACKAGE_SYS, "%set-method-fast-function", "StandardMethod", true); 579 579 autoload(PACKAGE_SYS, "%set-method-function", "StandardMethod", true); 580 autoload(PACKAGE_SYS, "%set-function-keywords", "StandardMethod", true); 580 581 autoload(PACKAGE_SYS, "%set-method-generic-function", "StandardMethod", true); 581 582 autoload(PACKAGE_SYS, "%set-method-specializers", "StandardMethod", true); … … 638 639 autoload(PACKAGE_SYS, "float-string", "FloatFunctions", true); 639 640 autoload(PACKAGE_SYS, "function-info", "function_info"); 641 autoload(PACKAGE_SYS, "%function-keywords", "StandardMethod", true); 640 642 autoload(PACKAGE_SYS, "generic-function-argument-precedence-order","StandardGenericFunction", true); 641 643 autoload(PACKAGE_SYS, "generic-function-classes-to-emf-table","StandardGenericFunction", true); … … 649 651 autoload(PACKAGE_SYS, "get-function-info-value", "function_info"); 650 652 autoload(PACKAGE_SYS, "gf-required-args", "StandardGenericFunction", true); 653 autoload(PACKAGE_SYS, "gf-optional-args", "StandardGenericFunction", true); 651 654 autoload(PACKAGE_SYS, "hash-table-entries", "HashTableFunctions"); 652 655 autoload(PACKAGE_SYS, "hash-table-entries", "HashTableFunctions"); -
trunk/abcl/src/org/armedbear/lisp/StandardMethod.java
r13541 r13781 57 57 slots[StandardMethodClass.SLOT_INDEX_GENERIC_FUNCTION] = gf; 58 58 slots[StandardMethodClass.SLOT_INDEX_LAMBDA_LIST] = lambdaList; 59 slots[StandardMethodClass.SLOT_INDEX_KEYWORDS] = NIL; 60 slots[StandardMethodClass.SLOT_INDEX_OTHER_KEYWORDS_P] = NIL; 59 61 slots[StandardMethodClass.SLOT_INDEX_SPECIALIZERS] = specializers; 60 62 slots[StandardMethodClass.SLOT_INDEX_QUALIFIERS] = NIL; … … 64 66 } 65 67 66 private static final Primitive METHOD_LAMBDA_LIST 67 = new pf_method_lambda_list(); 68 private static final Primitive METHOD_LAMBDA_LIST 69 = new pf_method_lambda_list(); 68 70 @DocString(name="method-lambda-list", 69 71 args="generic-method") … … 96 98 { 97 99 checkStandardMethod(first).slots[StandardMethodClass.SLOT_INDEX_LAMBDA_LIST] = second; 100 return second; 101 } 102 }; 103 104 private static final Primitive _FUNCTION_KEYWORDS 105 = new pf__function_keywords(); 106 @DocString(name="%function-keywords", 107 args="standard-method") 108 private static final class pf__function_keywords extends Primitive 109 { 110 pf__function_keywords() 111 { 112 super("%function-keywords", PACKAGE_SYS, true, "method"); 113 } 114 @Override 115 public LispObject execute(LispObject arg) 116 { 117 StandardMethod method = checkStandardMethod(arg); 118 LispThread thread = LispThread.currentThread(); 119 120 return thread 121 .setValues(method.slots[StandardMethodClass.SLOT_INDEX_KEYWORDS], 122 method.slots[StandardMethodClass.SLOT_INDEX_OTHER_KEYWORDS_P]); 123 } 124 }; 125 126 private static final Primitive _SET_FUNCTION_KEYWORDS 127 = new pf__set_function_keywords(); 128 @DocString(name="%set-function-keywords", 129 args="standard-method keywords other-keywords-p") 130 private static final class pf__set_function_keywords extends Primitive 131 { 132 pf__set_function_keywords() 133 { 134 super("%set-function-keywords", PACKAGE_SYS, true, 135 "method keywords"); 136 } 137 @Override 138 public LispObject execute(LispObject first, LispObject second, 139 LispObject third) 140 { 141 StandardMethod method = checkStandardMethod(first); 142 method.slots[StandardMethodClass.SLOT_INDEX_KEYWORDS] = second; 143 method.slots[StandardMethodClass.SLOT_INDEX_OTHER_KEYWORDS_P] = third; 98 144 return second; 99 145 } -
trunk/abcl/src/org/armedbear/lisp/StandardMethodClass.java
r12288 r13781 38 38 public final class StandardMethodClass extends StandardClass 39 39 { 40 // When changing this list, don't forget to edit 41 // StandardReaderMethodClass as well 40 42 public static final int SLOT_INDEX_GENERIC_FUNCTION = 0; 41 43 public static final int SLOT_INDEX_LAMBDA_LIST = 1; 42 public static final int SLOT_INDEX_SPECIALIZERS = 2; 43 public static final int SLOT_INDEX_QUALIFIERS = 3; 44 public static final int SLOT_INDEX_FUNCTION = 4; 45 public static final int SLOT_INDEX_FAST_FUNCTION = 5; 46 public static final int SLOT_INDEX_DOCUMENTATION = 6; 44 public static final int SLOT_INDEX_KEYWORDS = 2; 45 public static final int SLOT_INDEX_OTHER_KEYWORDS_P = 3; 46 public static final int SLOT_INDEX_SPECIALIZERS = 4; 47 public static final int SLOT_INDEX_QUALIFIERS = 5; 48 public static final int SLOT_INDEX_FUNCTION = 6; 49 public static final int SLOT_INDEX_FAST_FUNCTION = 7; 50 public static final int SLOT_INDEX_DOCUMENTATION = 8; 47 51 48 52 public StandardMethodClass() … … 54 58 Symbol.GENERIC_FUNCTION, 55 59 pkg.intern("LAMBDA-LIST"), 60 pkg.intern("KEYWORDS"), 61 pkg.intern("OTHER_KEYWORDS_P"), 56 62 pkg.intern("SPECIALIZERS"), 57 63 pkg.intern("QUALIFIERS"), -
trunk/abcl/src/org/armedbear/lisp/StandardReaderMethodClass.java
r12288 r13781 41 41 public static final int SLOT_INDEX_GENERIC_FUNCTION = 0; 42 42 public static final int SLOT_INDEX_LAMBDA_LIST = 1; 43 public static final int SLOT_INDEX_SPECIALIZERS = 2; 44 public static final int SLOT_INDEX_QUALIFIERS = 3; 45 public static final int SLOT_INDEX_FUNCTION = 4; 46 public static final int SLOT_INDEX_FAST_FUNCTION = 5; 47 public static final int SLOT_INDEX_DOCUMENTATION = 6; 43 public static final int SLOT_INDEX_KEYWORDS = 2; 44 public static final int SLOT_INDEX_OTHER_KEYWORDS_P = 3; 45 public static final int SLOT_INDEX_SPECIALIZERS = 4; 46 public static final int SLOT_INDEX_QUALIFIERS = 5; 47 public static final int SLOT_INDEX_FUNCTION = 6; 48 public static final int SLOT_INDEX_FAST_FUNCTION = 7; 49 public static final int SLOT_INDEX_DOCUMENTATION = 8; 50 48 51 49 52 // Added: 50 public static final int SLOT_INDEX_SLOT_NAME = 7;53 public static final int SLOT_INDEX_SLOT_NAME = 9; 51 54 52 55 public StandardReaderMethodClass() … … 59 62 Symbol.GENERIC_FUNCTION, 60 63 pkg.intern("LAMBDA-LIST"), 64 pkg.intern("KEYWORDS"), 65 pkg.intern("OTHER_KEYWORDS_P"), 61 66 pkg.intern("SPECIALIZERS"), 62 67 pkg.intern("QUALIFIERS"), -
trunk/abcl/src/org/armedbear/lisp/clos.lisp
r13779 r13781 129 129 (apply #',%name args))))) 130 130 131 ;; 132 ;; DEFINE PLACE HOLDER FUNCTIONS 133 ;; 134 131 135 (define-class->%class-forwarder class-name) 132 136 (define-class->%class-forwarder (setf class-name)) … … 156 160 generic-function 157 161 args)) 162 163 (defun function-keywords (method) 164 (%function-keywords method)) 158 165 159 166 … … 1420 1427 (required-args (getf plist ':required-args))) 1421 1428 (%set-gf-required-args gf required-args) 1429 (%set-gf-optional-args gf (getf plist :optional-args)) 1422 1430 (when apo-p 1423 1431 (setf (generic-function-argument-precedence-order gf) … … 1758 1766 fast-function) 1759 1767 (declare (ignore gf)) 1760 (let ((method (std-allocate-instance +the-standard-method-class+))) 1768 (let ((method (std-allocate-instance +the-standard-method-class+)) 1769 (analyzed-args (analyze-lambda-list lambda-list)) 1770 ) 1761 1771 (setf (method-lambda-list method) lambda-list) 1762 1772 (setf (method-qualifiers method) qualifiers) … … 1766 1776 (%set-method-function method function) 1767 1777 (%set-method-fast-function method fast-function) 1778 (%set-function-keywords method 1779 (getf analyzed-args :keywords) 1780 (getf analyzed-args :allow-other-keys)) 1768 1781 method)) 1769 1782 … … 1928 1941 (funcall emfun args) 1929 1942 (slow-method-lookup gf args)))))) 1943 ;; (let ((non-key-args (+ number-required 1944 ;; (length (gf-optional-args gf)))))) 1930 1945 #'(lambda (&rest args) 1931 1946 (declare (optimize speed)) … … 3329 3344 (defgeneric no-next-method (generic-function method &rest args)) 3330 3345 3331 ;; FIXME 3332 (defgeneric function-keywords (method)) 3346 (atomic-defgeneric function-keywords (method) 3347 (:method ((method standard-method)) 3348 (%function-keywords method))) 3333 3349 3334 3350
Note: See TracChangeset
for help on using the changeset viewer.