cleanup #'delete-object & optimize #'constructor-name.
Fri Feb 19 22:22:50 CET 2010 Tobias Rautenkranz <tobias@rautenkranz.ch>
* cleanup #'delete-object & optimize #'constructor-name.
diff -rN -u old-smoke/src/clos.lisp new-smoke/src/clos.lisp
--- old-smoke/src/clos.lisp 2014-10-30 07:05:09.000000000 +0100
+++ new-smoke/src/clos.lisp 2014-10-30 07:05:09.000000000 +0100
@@ -452,10 +452,12 @@
;; The constructor name is the name of the class minus any namespace parts.
(defun constructor-name (class)
- (let ((name-start (search "::" (name class) :from-end t)))
+ (declare (optimize (speed 3)))
+ (let* ((name (the simple-string (name class)))
+ (name-start (search "::" name :from-end t)))
(if name-start
- (subseq (name class) (+ name-start 2))
- (name class))))
+ (subseq name (+ name-start 2))
+ name)))
(defun call-constructor (class arguments)
(multiple-value-bind (method sequence)
diff -rN -u old-smoke/src/smoke.lisp new-smoke/src/smoke.lisp
--- old-smoke/src/smoke.lisp 2014-10-30 07:05:09.000000000 +0100
+++ new-smoke/src/smoke.lisp 2014-10-30 07:05:09.000000000 +0100
@@ -73,10 +73,7 @@
(s-call (make-smoke-method-from-name class method-name) pointer)))
(defun delete-object (object)
- (let ((method-name (concatenate 'string "~" (name (class-of object)))))
- (s-call
- (make-smoke-method-from-name (class-of object) method-name)
- (pointer object)))
+ (delete-pointer (pointer object) (class-of object))
(setf (slot-value object 'pointer) (null-pointer)))
(eval-startup (:load-toplevel :execute)