Changeset 8821


Ignore:
Timestamp:
Mar 18, 2008, 7:59:34 PM (11 years ago)
Author:
rme
Message:

x862-make-list: respect *x862-target-num-arg-regs* when forming arglist

x862-simple-opt-entry: use *x862-target-num-arg-regs*, not $numx8664argregs

Changes to x862-box-{u32,s32,u64,s64} for x8632.

File:
1 edited

Legend:

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

    r8749 r8821  
    11801180          (! check-min-nargs min))
    11811181        (! check-max-nargs max))
    1182       (if (> min $numx8664argregs)
     1182      (if (> min *x862-target-num-arg-regs*)
    11831183        (! save-lisp-context-in-frame)
    1184         (if (<= max $numx8664argregs)
     1184        (if (<= max *x862-target-num-arg-regs*)
    11851185          (! save-lisp-context-no-stack-args)
    11861186          (! save-lisp-context-variable-arg-count)))
     
    15621562              )))))
    15631563
    1564 ;; xxx
    15651564(defun x862-box-s32 (seg node-dest s32-src)
    15661565  (with-x86-local-vinsn-macros (seg)
    15671566    (if (target-arch-case
    1568          
     1567         (:x8632 *x862-open-code-inline*)
    15691568         (:x8664 t))
    15701569      (! box-fixnum node-dest s32-src)
     
    15751574        (x862-copy-register seg node-dest arg_z)))))
    15761575
    1577 ;; xxx
    15781576(defun x862-box-s64 (seg node-dest s64-src)
    15791577  (with-x86-local-vinsn-macros (seg)
    15801578    (if (target-arch-case
     1579         (:x8632 (error "bug"))
    15811580         (:x8664 *x862-open-code-inline*))
    15821581      (let* ((no-overflow (backend-get-next-label)))
     
    15931592        (x862-copy-register seg node-dest arg_z)))))
    15941593
    1595 ;; xxx
    15961594(defun x862-box-u32 (seg node-dest u32-src)
    15971595  (with-x86-local-vinsn-macros (seg)
    15981596    (if (target-arch-case
    1599          
     1597         (:x8632 *x862-open-code-inline*)
    16001598         (:x8664 t))
    16011599      (! box-fixnum node-dest u32-src)
     
    16061604        (x862-copy-register seg node-dest arg_z)))))
    16071605
    1608 ;; xxx
    16091606(defun x862-box-u64 (seg node-dest u64-src)
    16101607  (with-x86-local-vinsn-macros (seg)
    16111608    (if (target-arch-case
    1612          
     1609         (:x8632 (error "bug"))
    16131610         (:x8664 *x862-open-code-inline*))
    16141611      (let* ((no-overflow (backend-get-next-label)))
     
    87558752
    87568753(defx862 x862-make-list make-list (seg vreg xfer size initial-element)
    8757   (x862-form seg vreg xfer (make-acode (%nx1-operator call)
    8758                                        (make-acode (%nx1-operator immediate) 'make-list)
    8759                                        (list nil
    8760                                              (list initial-element
    8761                                                    (make-acode (%nx1-operator immediate)
    8762                                                                :initial-element)
    8763                                                    size)))))
    8764 
     8754  (let* ((args (list size
     8755                     (make-acode (%nx1-operator immediate) :initial-element)
     8756                     initial-element)))
     8757    (x862-form seg vreg xfer
     8758               (make-acode (%nx1-operator call)
     8759                           (make-acode (%nx1-operator immediate) 'make-list)
     8760                           (if (<= (length args) *x862-target-num-arg-regs*)
     8761                             (list nil (reverse args))
     8762                             (list (butlast args *x862-target-num-arg-regs*)
     8763                                   (reverse (last args *x862-target-num-arg-regs*))))))))
    87658764
    87668765(defx862 x862-setq-free setq-free (seg vreg xfer sym val)
Note: See TracChangeset for help on using the changeset viewer.