(let* ((message (sod-method-message direct-method))
(class (sod-method-class direct-method))
(function (sod-method-function-name direct-method))
- (arguments (cons (format nil "(~A *)&sod__obj.~A" class
+ (arguments (cons (format nil "&sod__obj.~A.~A"
(sod-class-nickname
- (sod-class-chain-head class)))
+ (sod-class-chain-head class))
+ (sod-class-nickname class))
arguments-tail)))
(if (varargs-message-p message)
(convert-stmts codegen target
method entries. Returns a list of functions (i.e., FUNCTION-INST objects)
which need to be defined in the generated source code."))
-(defparameter *method-entry-inline-threshold* 20
+(defparameter *method-entry-inline-threshold* 200
"Threshold below which effective method bodies are inlined into entries.
After the effective method body has been computed, we calculate its
(let* ((class (effective-method-class method))
(message (effective-method-message method))
(message-class (sod-message-class message)))
- (format nil "~A__mentry_~A__~A__~A"
+ (format nil "~A__mentry_~A__~A__chain_~A"
class
(sod-class-nickname message-class)
(sod-message-name message)
:chain-head chain-head
:chain-tail chain-tail))
+;;;--------------------------------------------------------------------------
+;;; Output.
+
+(defmethod add-output-hooks progn
+ ((method basic-effective-method) (reason (eql :c)) sequencer)
+ (with-slots (class functions) method
+ (sequence-output (stream sequencer)
+ ((class :effective-methods)
+ (dolist (func functions)
+ (write func :stream stream :escape nil :circle nil))))))
+
;;;----- That's all, folks --------------------------------------------------