Changeset 13250


Ignore:
Timestamp:
Dec 3, 2009, 10:46:59 AM (10 years ago)
Author:
gb
Message:

Use the new vinsns for handling fixnum overflow inline.

In X862-VSET1, don't load a constant index into a register if the
index is valid for the vector type and we aren't going to do runtime
bounds checking. (Did this in the 64-bit case; doing it in the 32-bit
case might allow us to use fewer node regs.)

File:
1 edited

Legend:

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

    r13143 r13250  
    13011301    (if *x862-open-code-inline*
    13021302      (let* ((no-overflow (backend-get-next-label)))
    1303         (! set-bigits-and-header-for-fixnum-overflow target (aref *backend-labels* (or labelno no-overflow)))
    1304         (! %allocate-uvector target)
    1305         (! set-bigits-after-fixnum-overflow target)
    1306         (when labelno
    1307           (-> labelno))
     1303        (! handle-fixnum-overflow-inline target (aref *backend-labels* (or labelno no-overflow)))
     1304        (when labelno (-> labelno))
    13081305        (@ no-overflow))
    13091306      (if labelno
     
    25112508                                                  value result-reg)))
    25122509                (:x8664
    2513                  (multiple-value-setq (src unscaled-idx result-reg)
    2514                    (x862-three-untargeted-reg-forms seg
     2510                 (if (and index-known-fixnum
     2511                          (not safe)
     2512                          (nx2-constant-index-ok-for-type-keyword index-known-fixnum type-keyword))
     2513                   (multiple-value-setq (src result-reg unscaled-idx)
     2514                     (x862-two-untargeted-reg-forms seg
    25152515                                                  vector src
    2516                                                   index unscaled-idx
    2517                                                   value result-reg))))))
     2516                                                  value result-reg))
     2517                   (multiple-value-setq (src unscaled-idx result-reg)
     2518                     (x862-three-untargeted-reg-forms seg
     2519                                                      vector src
     2520                                                      index unscaled-idx
     2521                                                      value result-reg)))))))
    25182522        (when safe
    25192523          (let* ((*available-backend-imm-temps* *available-backend-imm-temps*)
Note: See TracChangeset for help on using the changeset viewer.