Changeset 15890


Ignore:
Timestamp:
Sep 2, 2013, 12:22:10 PM (6 years ago)
Author:
gb
Message:

Re-do some aspects of vector initialization
Fix ticket:1108 in the trunk in a different way.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/X86/x862.lisp

    r15884 r15890  
    54775477                   (! vpop-gvector-element vreg idx))))
    54785478              (t
    5479                (let* ((pending ()))
     5479               (let* ((pending ())
     5480                      (vec *x862-allocptr*))
    54805481                 (dolist (form initforms)
    5481                    (if (and (x86-side-effect-free-form-p form)
    5482                             (let* ((reg (x862-reg-for-form form vreg)))
    5483                               (not (eql (if reg (hard-regspec-value reg)) vreg-val))))
     5482                   (if (x86-side-effect-free-form-p form)
    54845483                     (push form pending)
    54855484                     (progn
     
    54955494                   (x862-lri seg x8664::imm1 (- (ash (logandc2 (+ n 2) 1) (arch::target-word-shift arch)) x8664::fulltag-misc))))
    54965495                 (ensuring-node-target (target vreg)
    5497                    (! %allocate-uvector target)
    5498                    (with-node-temps (target) (nodetemp)
     5496                   (! %allocate-uvector vec)
     5497                   (with-node-temps (vec) (nodetemp)
    54995498                     (do* ((forms pending (cdr forms))
    55005499                           (index (1- n) (1- index)))
     
    55055504                         (if form
    55065505                           (cond ((nx-null form)
    5507                                   (! misc-set-immediate-c-node (target-nil-value) target index))
     5506                                  (! misc-set-immediate-c-node (target-nil-value) vec index))
    55085507                                 ((nx-t form)
    5509                                   (! misc-set-immediate-c-node (target-t-value) target index))
     5508                                  (! misc-set-immediate-c-node (target-t-value) vec index))
    55105509                                 (t (let* ((fixval (acode-fixnum-form-p form)))
    55115510                                      (cond ((and fixval
    55125511                                                  (typep (setq fixval (ash fixval *x862-target-fixnum-shift*)) '(signed-byte 32)))
    5513                                              (! misc-set-immediate-c-node fixval target index))
     5512                                             (! misc-set-immediate-c-node fixval vec index))
    55145513                                            (t
    55155514                                             (setq reg (x862-one-untargeted-reg-form seg form nodetemp))
    5516                                              (! misc-set-c-node reg target index))))))
     5515                                             (! misc-set-c-node reg vec index))))))
    55175516                           (progn
    5518                              (! vpop-gvector-element target index)
     5517                             (! vpop-gvector-element vec index)
    55195518                             (setq *x862-top-vstack-lcell* (lcell-parent *x862-top-vstack-lcell*))
    55205519                             (x862-adjust-vstack (- *x862-target-node-size*))))
    5521                          )))))))))
     5520                         )))
     5521                   (x862-copy-register seg target vec)))))))
    55225522     (^)))
    55235523
Note: See TracChangeset for help on using the changeset viewer.