Fri Feb 19 22:22:50 CET 2010 Tobias Rautenkranz * 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 08:06:19.000000000 +0100 +++ new-smoke/src/clos.lisp 2014-10-30 08:06:19.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 08:06:19.000000000 +0100 +++ new-smoke/src/smoke.lisp 2014-10-30 08:06:19.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)