Changeset 14114 for branches


Ignore:
Timestamp:
Aug 4, 2010, 2:54:20 AM (9 years ago)
Author:
gb
Message:

Fix the large (>= 256 slots/instance) slot-id lookup stuff.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/arm/level-0/ARM/arm-clos.lisp

    r14111 r14114  
    8787  (header-length imm1 imm0)
    8888  (cmp arg_x imm1)
     89  (movhs arg_x (:$ 0))
    8990  (add imm0 arg_x (:$ arm::misc-data-offset))
    90   (bhs @missing)
    9191  (ldr imm1 (:@ temp1 imm0))
    92   (cmp imm1 (:$ 0))
    93   (add imm1 imm1 (:$ arm::misc-data-offset))
    94   (beq @missing)
     92  (movs imm1 (:lsl imm1 (:$ arm::fixnumshift)))
     93  (add imm1 imm1 (:$ arm::misc-data-offset))
    9594  @have-scaled-table-index
    96   (ldr arg_x (:@ nfn 'class))
    97   (ldr nfn (:@ nfn '%maybe-std-slot-value-using-class))
    98   (ldr arg_z (:@ temp0 imm1))
    99   (set-nargs 3)
    100   (ldr pc (:@ nfn (:$ arm::function.entrypoint)))
     95  (ldrne arg_x (:@ nfn 'class))
     96  (ldrne nfn (:@ nfn '%maybe-std-slot-value-using-class))
     97  (ldrne arg_z (:@ temp0 imm1))
     98  (set-nargs 3)
     99  (ldrne pc (:@ nfn (:$ arm::function.entrypoint)))
    101100  @missing                              ; (%slot-id-ref-missing instance id)
    102101  (ldr nfn (:@ nfn '%slot-id-ref-missing))
     
    139138  (svref temp0 slot-id.index slot-id)
    140139  (getvheader imm0 temp1)
    141   (ldr temp0 (:@ nfn 'table))
    142140  (header-length imm1 imm0)
    143141  (cmp temp0 imm1)
    144142  (add imm0 temp0 (:$ arm::misc-data-offset))
     143  (ldr temp0 (:@ nfn 'table))
    145144  (bhs @missing)
    146145  (ldr imm1 (:@ temp1 imm0))
    147   (cmp imm1 (:$ 0))
     146  (movs imm1 (:lsl imm1 (:$ arm::fixnumshift)))
    148147  (add imm1 imm1 (:$ arm::misc-data-offset))
    149148  (beq @missing)
Note: See TracChangeset for help on using the changeset viewer.