~mdw
/
sod
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
c-types-proto.lisp (canonify-qualifiers): Delete `nil' entries.
[sod]
/
src
/
method-proto.lisp
diff --git
a/src/method-proto.lisp
b/src/method-proto.lisp
index
7163e8c
..
0488374
100644
(file)
--- a/
src/method-proto.lisp
+++ b/
src/method-proto.lisp
@@
-288,9
+288,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."))
;;;--------------------------------------------------------------------------
@@
-338,13
+338,10
@@
;;; Additional instructions.
;;; Additional instructions.
-;; HACK: use gensyms for the `class' and `expr' slots to avoid leaking the
-;; slot names, because `expr' is exported by our package, and `class' is
-;; actually from the `common-lisp' package.
(definst convert-to-ilayout (stream :export t)
(definst convert-to-ilayout (stream :export t)
- (
#1=#:class chain-head #2=#:
expr)
+ (
%class chain-head %
expr)
(format stream "SOD_ILAYOUT(~@<~A, ~_~A, ~_~A~:>)"
(format stream "SOD_ILAYOUT(~@<~A, ~_~A, ~_~A~:>)"
-
#1# (sod-class-nickname chain-head) #2#
))
+
class (sod-class-nickname chain-head) expr
))
;;; Utilities.
;;; Utilities.
@@
-481,11
+478,13
@@
((keyword-message-p message)
(cons (make-argument *sod-key-pointer*
(c-type (* (void :const))))
((keyword-message-p message)
(cons (make-argument *sod-key-pointer*
(c-type (* (void :const))))
- raw-args))))
+ raw-args))
+ (t raw-args)))
(*keyword-struct-disposition* (if (effective-method-keywords method)
:pointer :null)))
(codegen-push codegen)
(ensure-ilayout-var codegen super)
(*keyword-struct-disposition* (if (effective-method-keywords method)
: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*)