Ignore:
Timestamp:
Nov 28, 2012, 6:44:49 PM (8 years ago)
Author:
gz
Message:

Fix lock-free hash table handling of the partially-inserted state, and took out gc handling of the partially-deleted state. Bumped image version because kernel and runtime changes need to match. This fixes ticket #993, hopefully without breaking much of anything else.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/x86-gc.c

    r15374 r15504  
    503503           that rehashing is necessary. */
    504504        LispObj flags = ((hash_table_vector_header *) base)->flags;
    505 
    506         if ((flags & nhash_keys_frozen_mask) &&
    507             (((hash_table_vector_header *) base)->deleted_count > 0)) {
    508           /* We're responsible for clearing out any deleted keys, since
    509              lisp side can't do it without breaking the state machine
    510           */
    511           LispObj *pairp = base + hash_table_vector_header_count;
    512           natural
    513             npairs = (element_count - (hash_table_vector_header_count - 1)) >> 1;
    514 
    515           while (npairs--) {
    516             if ((pairp[1] == unbound) && (pairp[0] != unbound)) {
    517               pairp[0] = slot_unbound;
    518             }
    519             pairp +=2;
    520           }
    521           ((hash_table_vector_header *) base)->deleted_count = 0;
    522         }
    523505
    524506        if (flags & nhash_weak_mask) {
Note: See TracChangeset for help on using the changeset viewer.