Changeset 8654


Ignore:
Timestamp:
Mar 4, 2008, 4:43:52 PM (12 years ago)
Author:
rme
Message:

x862-do-lexical-setq: target appropriate x8632 regs for SPgvset
x862-formlist: paranoia
x862-arglist: spell :reserved correctly
x862-%err-disp, x862-%badarg2: vstack management
x862-%alloc-misc: target correct x8632 registers before (! misc-alloc-init)
x862-%typed-uvset: conditionalize for x8632

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ia32/compiler/X86/x862.lisp

    r8627 r8654  
    331331          ((addrspec-vcell-p ea)     ; closed-over vcell
    332332           (x862-copy-register seg *x862-arg-z* valreg)
    333            (x862-stack-to-register seg ea x8664::arg_x)
    334            (x862-lri seg *x862-arg-y* 0)
    335            (! call-subprim-3 *x862-arg-z* (subprim-name->offset '.SPgvset) x8664::arg_x *x862-arg-y* *x862-arg-z*))
     333           (let* ((gvector (target-arch-case (:x8632 x8632::temp0)
     334                                             (:x8664 x8664::arg_z))))
     335             (x862-stack-to-register seg ea gvector)
     336             (x862-lri seg *x862-arg-y* 0)
     337             (! call-subprim-3 *x862-arg-z* (subprim-name->offset '.SPgvset) gvector *x862-arg-y* *x862-arg-z*)))
    336338          ((memory-spec-p ea)    ; vstack slot
    337339           (x862-register-to-stack seg valreg ea))
     
    29732975               (xform (%caddr revregargs)))
    29742976          (if (eq 3 nregs)
    2975             (x862-three-targeted-reg-forms seg xform (target-arch-case
    2976                                                       (:x8632 ($ x8632::temp0))
    2977                                                       (:x8664 ($ x8664::arg_x)))
    2978                                            yform ($ *x862-arg-y*)
    2979                                            zform ($ *x862-arg-z*))
     2977            (progn
     2978              (target-arch-case (:x8632 (error "3 reg args on x8632?")))
     2979              (x862-three-targeted-reg-forms seg xform ($ x8664::arg_x)
     2980                                             yform ($ *x862-arg-y*)
     2981                                             zform ($ *x862-arg-z*)))
    29802982            (if (eq 2 nregs)
    29812983              (x862-two-targeted-reg-forms seg yform ($ *x862-arg-y*) zform ($ *x862-arg-z*))
     
    29892991    (when (car args)
    29902992      (! reserve-outgoing-frame)
    2991       (x862-new-vstack-lcell :reserverd *x862-target-lcell-size* 0 nil)
    2992       (x862-new-vstack-lcell :reserverd *x862-target-lcell-size* 0 nil)
     2993      (x862-new-vstack-lcell :reserved *x862-target-lcell-size* 0 nil)
     2994      (x862-new-vstack-lcell :reserved *x862-target-lcell-size* 0 nil)
    29932995      (setq *x862-vstack* (+  *x862-vstack* (* 2 *x862-target-node-size*))))
    29942996    (x862-formlist seg (car args) (cadr args))))
     
    67836785
    67846786(defx862 x862-%err-disp %err-disp (seg vreg xfer arglist)
    6785   (x862-set-nargs seg (x862-arglist seg arglist))
    6786   (! ksignalerr)
     6787  (let* ((*x862-vstack* *x862-vstack*))
     6788    (x862-set-nargs seg (x862-arglist seg arglist))
     6789    (! ksignalerr))
    67876790  (x862-nil seg vreg xfer))
    67886791
     
    75687571              (x862-three-targeted-reg-forms seg element-count
    75697572                                             (target-arch-case
    7570                                               (:x8632 ($ x8632::temp1))
     7573                                              (:x8632 ($ x8632::temp0))
    75717574                                              (:x8664 ($ x8664::arg_x)))
    75727575                                             st ($ *x862-arg-y*)
     
    85448547      (x862-vset seg vreg xfer type-keyword uvector index newval (unless *x862-reckless* (nx-lookup-target-uvector-subtag type-keyword)))
    85458548      (progn
    8546         (x862-four-targeted-reg-forms seg subtag ($ *x862-temp0*) uvector ($ x8664::arg_x) index ($ *x862-arg-y*) newval ($ *x862-arg-z*))
     8549        (target-arch-case
     8550         (:x8632
     8551          (x862-four-targeted-reg-forms seg subtag ($ x8632::temp1) uvector ($ x8632::temp0) index ($ x8632::arg_y) newval ($ x8632::arg_z)))
     8552         (:x8664
     8553          (x862-four-targeted-reg-forms seg subtag ($ x8664::temp0) uvector ($ x8664::arg_x) index ($ x8664::arg_y) newval ($ x8664::arg_z))))
    85478554        (! subtag-misc-set)
    85488555        (when vreg (<- ($ *x862-arg-z*)))
     
    86918698(defx862 x862-%badarg2 %badarg2 (seg vreg xfer badthing goodthing)
    86928699  (x862-two-targeted-reg-forms seg badthing ($ *x862-arg-y*) goodthing ($ *x862-arg-z*))
    8693   (x862-lri seg ($ x8664::arg_x) (ash $XWRONGTYPE *x862-target-fixnum-shift*))
    8694   (x862-set-nargs seg 3)
    8695   (! ksignalerr)
    8696   (<- nil)
    8697   (^)) 
     8700  (target-arch-case
     8701   (:x8632
     8702    (break)
     8703    (let* ((*x862-vstack* *x862-vstack*)
     8704           (*x862-top-vstack-lcell* *x862-top-vstack-lcell*))
     8705      (! reserve-outgoing-frame)
     8706      (incf *x862-vstack* (* 2 *x862-target-node-size*))
     8707      (! vpush-fixnum (ash $XWRONGTYPE *x862-target-fixnum-shift*))
     8708      (x862-set-nargs seg 3)
     8709      (! ksignalerr))
     8710    (<- nil)
     8711    (^))
     8712   (:x8664
     8713    (x862-lri seg ($ x8664::arg_x) (ash $XWRONGTYPE *x862-target-fixnum-shift*))
     8714    (x862-set-nargs seg 3)
     8715    (! ksignalerr)
     8716    (<- nil)
     8717    (^))))
    86988718         
    86998719(defx862 x862-%set-sbchar %set-sbchar (seg vreg xfer string index value)
Note: See TracChangeset for help on using the changeset viewer.