standard-generic-function and standard-method are now in boot.lsp

This commit is contained in:
Juanjo Garcia-Ripoll 2012-10-05 17:05:54 +02:00
parent f79a276452
commit a691f4cc5b
2 changed files with 7 additions and 24 deletions

View file

@ -152,8 +152,15 @@
(generic-function
:metaclass funcallable-standard-class
:direct-superclasses (metaobject funcallable-standard-object))
(standard-generic-function
:direct-superclasses (generic-function)
:direct-slots #.(canonical-slots +standard-generic-function-slots+)
:metaclass funcallable-standard-class)
(method
:direct-superclasses (metaobject))
(standard-method
:direct-superclasses (method)
:direct-slots #.(canonical-slots +standard-method-slots+))
)))
;;; ----------------------------------------------------------------------
@ -164,7 +171,6 @@
(defun make-empty-standard-class (name &key (metaclass 'standard-class)
direct-superclasses direct-slots index)
(declare (si::c-local))
(let* ((the-metaclass (and metaclass (gethash metaclass si::*class-name-hash-table*)))
(class (or (gethash name si::*class-name-hash-table*)
(si:allocate-raw-instance nil the-metaclass

View file

@ -11,33 +11,10 @@
(in-package "CLOS")
;;; ----------------------------------------------------------------------
;;; Funcallable object
;;; ----------------------------------------------------------------------
(defclass funcallable-standard-object (standard-object function) ())
;;; ----------------------------------------------------------------------
;;; Generic Functions
;;; ----------------------------------------------------------------------
(defclass generic-function (metaobject funcallable-standard-object) ()
(:metaclass 'funcallable-standard-class))
(defclass standard-generic-function (generic-function)
#.(remove-accessors +standard-generic-function-slots+)
(:metaclass 'funcallable-standard-class))
;;;----------------------------------------------------------------------
;;; Method
;;; ----------------------------------------------------------------------
(defclass method (metaobject) ())
(defclass standard-method (method)
#.(remove-accessors +standard-method-slots+))
(defun function-keywords (method)
(multiple-value-bind (reqs opts rest-var key-flag keywords)
(si::process-lambda-list (slot-value method 'lambda-list) 'function)