X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgeneric%2Fvm-ir2tran.lisp;h=4254f3d22c0282da6664c650dc07d8185196988f;hb=d6f9676ae94419cb5544c45821a8d31adbc1fbe8;hp=5562c20a1dce8854f1fb9199b748b1451f34cb4a;hpb=55dc8558f0686a9d1c8e7f8025bfe373b0c35e33;p=sbcl.git diff --git a/src/compiler/generic/vm-ir2tran.lisp b/src/compiler/generic/vm-ir2tran.lisp index 5562c20..4254f3d 100644 --- a/src/compiler/generic/vm-ir2tran.lisp +++ b/src/compiler/generic/vm-ir2tran.lisp @@ -69,7 +69,7 @@ (macrolet ((make-case () `(ecase raw-type ((t) - (vop set-slot node block object arg-tn + (vop init-slot node block object arg-tn name (+ sb!vm:instance-slots-offset slot) lowtag)) ,@(mapcar (lambda (rsd) `(,(sb!kernel::raw-slot-data-raw-type rsd) @@ -82,11 +82,11 @@ nil)))) (make-case)))) (:dd - (vop set-slot node block object + (vop init-slot node block object (emit-constant (sb!kernel::dd-layout-or-lose slot)) name sb!vm:instance-slots-offset lowtag)) (otherwise - (vop set-slot node block object + (vop init-slot node block object (ecase kind (:arg (aver args) @@ -223,7 +223,7 @@ (progn (defoptimizer (allocate-vector stack-allocate-result) ((type length words) node dx) - (or (eq dx :truly) + (or (eq dx :always-dynamic) (zerop (policy node safety)) ;; a vector object should fit in one page -- otherwise it might go past ;; stack guard pages. @@ -266,6 +266,8 @@ ;;; ...conses #!+stack-allocatable-fixed-objects -(defoptimizer (cons stack-allocate-result) ((&rest args) node dx) - (declare (ignore node dx)) - t) +(progn + (defoptimizer (cons stack-allocate-result) ((&rest args) node dx) + t) + (defoptimizer (%make-complex stack-allocate-result) ((&rest args) node dx) + t))