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

Do equivalent of r15746 for ARM.

File:
1 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) {
Note: See TracChangeset for help on using the changeset viewer.