Changeset 15016


Ignore:
Timestamp:
Oct 11, 2011, 5:17:38 PM (13 years ago)
Author:
Gary Byers
Message:

In ARM2-AREF3 and ARM2-ASET3, be more careful about finding a node
register that doesn't conflict with the unscaled indice variables
when the index is constant. (Those variables are null in that case.)

I'm not sure that we ever verify that the array's dimensions are what
they're declared to be on ARM or elsewhere. We should probably do
this check under normal safety.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/ARM/arm2.lisp

    r15007 r15016  
    18421842          (when safe     
    18431843            (when (typep safe 'fixnum)
    1844               (with-node-target (src unscaled-i unscaled-j unscaled-k val-reg) expected
     1844              (let* ((expected (if constidx
     1845                                 (with-node-target (src val-reg) expected
     1846                                   expected)
     1847                                 (with-node-target (src unscaled-i unscaled-j unscaled-k val-reg) expected
     1848                                   expected))))
    18451849                (! lri expected (ash (dpb safe target::arrayH.flags-cell-subtag-byte
    18461850                                          (ash 1 $arh_simple_bit))
     
    19491953      (when safe       
    19501954        (when (typep safe 'fixnum)
    1951           (with-node-target (src unscaled-i unscaled-j unscaled-k) expected
     1955          (let* ((expected (if constidx
     1956                             (with-node-target (src) expected
     1957                               expected)
     1958                             (with-node-target (src unscaled-i unscaled-j unscaled-k) expected
     1959                               expected))))
    19521960            (! lri expected (ash (dpb safe target::arrayH.flags-cell-subtag-byte
    19531961                                      (ash 1 $arh_simple_bit))
Note: See TracChangeset for help on using the changeset viewer.