~mdw
/
sod
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
src/method-{proto,impl}.lisp: Abstract out the receiver type.
[sod]
/
src
/
method-proto.lisp
diff --git
a/src/method-proto.lisp
b/src/method-proto.lisp
index
034768a
..
ed15ff2
100644
(file)
--- a/
src/method-proto.lisp
+++ b/
src/method-proto.lisp
@@
-49,6
+49,13
@@
will be a list of applicable methods sorted in most-to-least specific
order."))
will be a list of applicable methods sorted in most-to-least specific
order."))
+(export 'sod-message-receiver-type)
+(defgeneric sod-message-receiver-type (message class)
+ (:documentation
+ "Return the type of the `me' argument in a MESSAGE received by CLASS.
+
+ Typically this will just be `CLASS *'."))
+
(export 'sod-message-applicable-methods)
(defgeneric sod-message-applicable-methods (message class)
(:documentation
(export 'sod-message-applicable-methods)
(defgeneric sod-message-applicable-methods (message class)
(:documentation
@@
-288,9
+295,9
@@
(:documentation
"Returns true if the effective METHOD is live.
(:documentation
"Returns true if the effective METHOD is live.
- An effective method is `live' if it should actually have proper method
entry
- functions associated with it and stored in the class vtable. The other
- possibility is that the method is `dead', in which case the function
+ An effective method is `live' if it should actually have proper method
+ entry functions associated with it and stored in the class vtable. The
+
other
possibility is that the method is `dead', in which case the function
pointers in the vtable are left null."))
;;;--------------------------------------------------------------------------
pointers in the vtable are left null."))
;;;--------------------------------------------------------------------------
@@
-484,6
+491,7
@@
:pointer :null)))
(codegen-push codegen)
(ensure-ilayout-var codegen super)
:pointer :null)))
(codegen-push codegen)
(ensure-ilayout-var codegen super)
+ (deliver-call codegen :void "SOD__IGNORE" "sod__obj")
(when (keyword-message-p message)
(if (eq *keyword-struct-disposition* :null)
(deliver-call codegen :void "SOD__IGNORE" *sod-key-pointer*)
(when (keyword-message-p message)
(if (eq *keyword-struct-disposition* :null)
(deliver-call codegen :void "SOD__IGNORE" *sod-key-pointer*)