Changeset 15747


Ignore:
Timestamp:
Feb 24, 2013, 12:56:24 PM (6 years ago)
Author:
gb
Message:

Do equivalent of r15746 for ARM.

Location:
trunk/source/lisp-kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/arm-exceptions.c

    r15470 r15747  
    15981598  egc_store_node_conditional,
    15991599  egc_store_node_conditional_test,
    1600   egc_set_hash_key,
    1601   egc_gvset,
    1602   egc_rplaca,
    1603   egc_rplacd,
     1600  egc_set_hash_key, egc_set_hash_key_did_store,
     1601  egc_gvset, egc_gvset_did_store,
     1602  egc_rplaca, egc_rplaca_did_store,
     1603  egc_rplacd, egc_rplacd_did_store,
    16041604  egc_set_hash_key_conditional,
    16051605  egc_set_hash_key_conditional_test,
     
    16251625    LispObj *ea = 0, val = 0, root = 0;
    16261626    bitvector refbits = (bitvector)(lisp_global(REFBITS));
    1627     Boolean need_store = true, need_check_memo = true, need_memoize_root = false;
     1627    Boolean need_check_memo = true, need_memoize_root = false;
    16281628
    16291629    if (program_counter >= &egc_set_hash_key_conditional) {
     
    16331633        return;
    16341634      }
    1635       need_store = false;
    16361635      root = xpGPR(xp,arg_x);
    16371636      ea = (LispObj *) (root+xpGPR(xp,arg_y)+misc_data_offset);
     
    16471646      ea = (LispObj*)(xpGPR(xp,arg_x) + xpGPR(xp,imm0));
    16481647      xpGPR(xp,arg_z) = t_value;
    1649       need_store = false;
    16501648    } else if (program_counter >= &egc_set_hash_key) {
     1649      if (program_counter < &egc_set_hash_key_did_store) {
     1650        return;
     1651      }
    16511652      root = xpGPR(xp,arg_x);
    16521653      val = xpGPR(xp,arg_z);
     
    16541655      need_memoize_root = true;
    16551656    } else if (program_counter >= &egc_gvset) {
     1657      if (program_counter < &egc_gvset_did_store) {
     1658        return;
     1659      }
    16561660      ea = (LispObj *) (xpGPR(xp,arg_x)+xpGPR(xp,arg_y)+misc_data_offset);
    16571661      val = xpGPR(xp,arg_z);
    16581662    } else if (program_counter >= &egc_rplacd) {
     1663      if (program_counter < &egc_rplacd_did_store) {
     1664        return;
     1665      }
    16591666      ea = (LispObj *) untag(xpGPR(xp,arg_y));
    16601667      val = xpGPR(xp,arg_z);
    16611668    } else {                      /* egc_rplaca */
     1669      if (program_counter < &egc_rplaca_did_store) {
     1670        return;
     1671      }
    16621672      ea =  ((LispObj *) untag(xpGPR(xp,arg_y)))+1;
    16631673      val = xpGPR(xp,arg_z);
    1664     }
    1665     if (need_store) {
    1666       *ea = val;
    16671674    }
    16681675    if (need_check_memo) {
  • trunk/source/lisp-kernel/arm-spentry.s

    r15703 r15747  
    742742
    743743        .globl C(egc_write_barrier_start)
     744        .globl C(egc_rplaca_did_store)
    744745_spentry(rplaca)
    745746C(egc_write_barrier_start):     
    746747        __(cmp arg_z,arg_y)
    747748        __(_rplaca(arg_y,arg_z))
     749C(egc_rplaca_did_store):               
    748750        __(bxlo lr)
    749751        __(ref_global(temp0,ref_base))
     
    771773
    772774        .globl C(egc_rplacd)
     775        .globl C(egc_rplacd_did_store)
    773776_spentry(rplacd)
    774777C(egc_rplacd):
    775778        __(cmp arg_z,arg_y)
    776779        __(_rplacd(arg_y,arg_z))
     780C(egc_rplacd_did_store):       
    777781        __(bxlo lr)
    778782        __(ref_global(temp0,ref_base))
     
    802806
    803807        .globl C(egc_gvset)
     808        .globl C(egc_gvset_did_store)
    804809_spentry(gvset)
    805810C(egc_gvset):
     
    807812        __(add imm0,arg_y,#misc_data_offset)
    808813        __(str arg_z,[arg_x,imm0])
     814C(egc_gvset_did_store):     
    809815        __(bxlo lr)               
    810816        __(add imm0,imm0,arg_x)
     
    835841/* the store, record the address of the hash-table vector in the refmap,  */
    836842/* as well. */
    837         .globl C(egc_set_hash_key)       
     843        .globl C(egc_set_hash_key)
     844        .globl C(egc_set_hash_key_did_store)
    838845_spentry(set_hash_key)
    839846C(egc_set_hash_key):
     
    841848        __(add imm0,arg_y,#misc_data_offset)
    842849        __(str arg_z,[arg_x,imm0])
     850C(egc_set_hash_key_did_store):         
    843851        __(bxlo lr)
    844852        __(add imm0,imm0,arg_x)
Note: See TracChangeset for help on using the changeset viewer.