Changeset 10621


Ignore:
Timestamp:
Sep 7, 2008, 7:28:45 AM (11 years ago)
Author:
gb
Message:

Provide pc_luser_xp() support for egc_set_hash_key_conditional.
Change some of the other write-barrier things; some of these
changes should probably be propagated to other branches.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/gz/lisp-kernel/ppc-exceptions.c

    r10385 r10621  
    18321832  egc_write_barrier_end,
    18331833  egc_store_node_conditional,
     1834  egc_store_node_conditional_test,
    18341835  egc_set_hash_key,
    18351836  egc_gvset,
    18361837  egc_rplaca,
    1837   egc_rplacd;
     1838  egc_rplacd,
     1839  egc_set_hash_key_conditional,
     1840  egc_set_hash_key_conditional_test;
    18381841
    18391842
     
    18571860    Boolean need_store = true, need_check_memo = true, need_memoize_root = false;
    18581861
    1859     if (program_counter >= &egc_store_node_conditional) {
    1860       if ((program_counter == &egc_store_node_conditional) || ! (xpCCR(xp) & 0x20000000)) {
    1861         /* The conditional store either hasn't been attempted yet, or
    1862            has failed.  No need to adjust the PC, or do memoization. */
    1863         return;
     1862    if (program_counter >= &egc_set_hash_key_conditional) {
     1863      if ((program_counter < &egc_set_hash_key_conditional_test) ||
     1864          ((program_counter == &egc_set_hash_key_conditional_test) &&
     1865           (! (xpCCR(xp) & 0x20000000)))) {
     1866        return;
    18641867      }
    1865       val = xpGPR(xp,arg_z);
     1868      need_store = false;
     1869      root = xpGPR(xp,arg_x);
     1870      ea = (LispObj *) (root+xpGPR(xp,arg_y)+misc_data_offset);
     1871      need_memoize_root = true;
     1872    } else if (program_counter >= &egc_store_node_conditional) {
     1873      if ((program_counter < &egc_store_node_conditional_test) ||
     1874          ((program_counter == &egc_store_node_conditional_test) &&
     1875           (! (xpCCR(xp) & 0x20000000)))) {
     1876        /* The conditional store either hasn't been attempted yet, or
     1877           has failed.  No need to adjust the PC, or do memoization. */
     1878        return;
     1879      }
    18661880      ea = (LispObj*)(xpGPR(xp,arg_x) + xpGPR(xp,imm4));
    18671881      xpGPR(xp,arg_z) = t_value;
     
    18691883    } else if (program_counter >= &egc_set_hash_key) {
    18701884      root = xpGPR(xp,arg_x);
     1885      val = xpGPR(xp,arg_z);
    18711886      ea = (LispObj *) (root+xpGPR(xp,arg_y)+misc_data_offset);
    18721887      need_memoize_root = true;
Note: See TracChangeset for help on using the changeset viewer.