diff --git a/wh-engine/serialization.lisp b/wh-engine/serialization.lisp index 0e52b19..63d59e3 100644 --- a/wh-engine/serialization.lisp +++ b/wh-engine/serialization.lisp @@ -100,14 +100,14 @@ (declare (ignore environment)) (values ;; cons form - `(sb-kernel::new-instance ,(class-name (class-of obj))) + `(allocate-instance (find-class ',(class-name (class-of obj)))) ;; init form (loop for slot in (sb-mop:class-slots (class-of obj)) for slot-name = (sb-mop:slot-definition-name slot) - collect slot-name into slots - collect (make-value-init-form (slot-value obj slot-name)) - into values - finally (return `(sb-pcl::set-slots ,obj ,slots ,@values))) + nconc `((slot-value ,obj ',slot-name) + ,(make-value-init-form (slot-value obj slot-name))) + into setfs + finally (return `(setf ,@setfs))) )) (defun make-value-init-form (x)