Speedup overload resolution and some other stuff for faster C++ method calling.
src/sb-optimize.lisp
Wed Jul 8 22:41:19 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Speedup overload resolution and some other stuff for faster C++ method calling.
--- old-smoke/src/sb-optimize.lisp 2014-10-30 08:13:07.000000000 +0100
+++ new-smoke/src/sb-optimize.lisp 2014-10-30 08:13:07.000000000 +0100
@@ -81,10 +81,12 @@
sequence args)))
`(lambda (object ,@argument-names)
(s-call ,(method-form method)
- ;; FIXME only cast when needed.
- (cast object
- (find-class (quote ,(class-name
- (find-smoke-class
- (get-class method))))))
+ ,(if (eql (type-specifier object)
+ (find-smoke-class (get-class method)))
+ `(pointer object)
+ `(cast object
+ (find-class (quote ,(class-name
+ (find-smoke-class
+ (get-class method)))))))
(list ,@(sequence-form
sequence argument-names)))))))))))