Example #1
0
def ll_set_null(d, llkey):
    hash = compute_identity_hash(llkey)
    i = rdict.ll_dict_lookup(d, llkey, hash) & rdict.MASK
    if d.entries.everused(i):
        # If the entry was ever used, clean up its key and value.
        # We don't store a NULL value, but a dead weakref, because
        # the entry must still be marked as everused().
        d.entries[i].key = llmemory.dead_wref
        d.entries[i].value = NULLVALUE
Example #2
0
def ll_set_null(d, llkey):
    hash = compute_identity_hash(llkey)
    i = rdict.ll_dict_lookup(d, llkey, hash) & rdict.MASK
    if d.entries.everused(i):
        # If the entry was ever used, clean up its key and value.
        # We don't store a NULL value, but a dead weakref, because
        # the entry must still be marked as everused().
        d.entries[i].key = llmemory.dead_wref
        d.entries[i].value = NULLVALUE
Example #3
0
def ll_set_null(d, llkey):
    hash = ll_strhash(llkey)
    i = rdict.ll_dict_lookup(d, llkey, hash)
    if d.entries.everused(i):
        # If the entry was ever used, clean up its key and value.
        # We don't store a NULL value, but a dead weakref, because
        # the entry must still be marked as everused().
        d.entries[i].value = llmemory.dead_wref
        d.entries[i].key = lltype.nullptr(rstr.STR)
Example #4
0
def ll_get(d, llkey):
    hash = ll_strhash(llkey)
    i = rdict.ll_dict_lookup(d, llkey, hash)
    #llop.debug_print(lltype.Void, i, 'get')
    valueref = d.entries[i].value
    if valueref:
        return weakref_deref(rclass.OBJECTPTR, valueref)
    else:
        return lltype.nullptr(rclass.OBJECTPTR.TO)
Example #5
0
def ll_set_null(d, llkey):
    hash = ll_strhash(llkey)
    i = rdict.ll_dict_lookup(d, llkey, hash)
    if d.entries.everused(i):
        # If the entry was ever used, clean up its key and value.
        # We don't store a NULL value, but a dead weakref, because
        # the entry must still be marked as everused().
        d.entries[i].value = llmemory.dead_wref
        d.entries[i].key = lltype.nullptr(rstr.STR)
Example #6
0
def ll_get(d, llkey):
    hash = ll_strhash(llkey)
    i = rdict.ll_dict_lookup(d, llkey, hash)
    #llop.debug_print(lltype.Void, i, 'get')
    valueref = d.entries[i].value
    if valueref:
        return weakref_deref(rclass.OBJECTPTR, valueref)
    else:
        return lltype.nullptr(rclass.OBJECTPTR.TO)
Example #7
0
def ll_get(d, llkey):
    hash = compute_identity_hash(llkey)
    i = rdict.ll_dict_lookup(d, llkey, hash) & rdict.MASK
    #llop.debug_print(lltype.Void, i, 'get', hex(hash),
    #                 ll_debugrepr(d.entries[i].key),
    #                 ll_debugrepr(d.entries[i].value))
    # NB. ll_valid() above was just called at least on entry i, so if
    # it is an invalid entry with a dead weakref, the value was reset
    # to NULLVALUE.
    return d.entries[i].value
Example #8
0
def ll_get(d, llkey):
    hash = compute_identity_hash(llkey)
    i = rdict.ll_dict_lookup(d, llkey, hash) & rdict.MASK
    #llop.debug_print(lltype.Void, i, 'get', hex(hash),
    #                 ll_debugrepr(d.entries[i].key),
    #                 ll_debugrepr(d.entries[i].value))
    # NB. ll_valid() above was just called at least on entry i, so if
    # it is an invalid entry with a dead weakref, the value was reset
    # to NULLVALUE.
    return d.entries[i].value
Example #9
0
 def ll_set_null(self, d, llkey):
     hash = self.ll_keyhash(llkey)
     i = rdict.ll_dict_lookup(d, llkey, hash) & rdict.MASK
     if d.entries.everused(i):
         # If the entry was ever used, clean up its key and value.
         # We don't store a NULL value, but a dead weakref, because
         # the entry must still be marked as everused().
         d.entries[i].value = llmemory.dead_wref
         if isinstance(self.r_key.lowleveltype, lltype.Ptr):
             d.entries[i].key = self.r_key.convert_const(None)
         else:
             d.entries[i].key = self.r_key.convert_const(0)
 def ll_set_null(self, d, llkey):
     hash = self.ll_keyhash(llkey)
     i = rdict.ll_dict_lookup(d, llkey, hash) & rdict.MASK
     if d.entries.everused(i):
         # If the entry was ever used, clean up its key and value.
         # We don't store a NULL value, but a dead weakref, because
         # the entry must still be marked as everused().
         d.entries[i].value = llmemory.dead_wref
         if isinstance(self.r_key.lowleveltype, lltype.Ptr):
             d.entries[i].key = self.r_key.convert_const(None)
         else:
             d.entries[i].key = self.r_key.convert_const(0)
Example #11
0
def ll_set_nonnull(d, llkey, llvalue):
    hash = ll_strhash(llkey)
    valueref = weakref_create(llvalue)  # GC effects here, before the rest
    i = rdict.ll_dict_lookup(d, llkey, hash)
    everused = d.entries.everused(i)
    d.entries[i].key = llkey
    d.entries[i].value = valueref
    #llop.debug_print(lltype.Void, i, 'stored')
    if not everused:
        d.num_pristine_entries -= 1
        if d.num_pristine_entries <= len(d.entries) / 3:
            #llop.debug_print(lltype.Void, 'RESIZE')
            ll_weakdict_resize(d)
Example #12
0
 def ll_set_nonnull(self, d, llkey, llvalue):
     hash = self.ll_keyhash(llkey)
     valueref = weakref_create(llvalue)  # GC effects here, before the rest
     i = rdict.ll_dict_lookup(d, llkey, hash) & rdict.MASK
     everused = d.entries.everused(i)
     d.entries[i].key = llkey
     d.entries[i].value = valueref
     #llop.debug_print(lltype.Void, i, 'stored')
     if not everused:
         d.resize_counter -= 3
         if d.resize_counter <= 0:
             #llop.debug_print(lltype.Void, 'RESIZE')
             self.ll_weakdict_resize(d)
Example #13
0
def ll_set_nonnull(d, llkey, llvalue):
    hash = ll_strhash(llkey)
    valueref = weakref_create(llvalue)    # GC effects here, before the rest
    i = rdict.ll_dict_lookup(d, llkey, hash)
    everused = d.entries.everused(i)
    d.entries[i].key = llkey
    d.entries[i].value = valueref
    #llop.debug_print(lltype.Void, i, 'stored')
    if not everused:
        d.num_pristine_entries -= 1
        if d.num_pristine_entries <= len(d.entries) / 3:
            #llop.debug_print(lltype.Void, 'RESIZE')
            ll_weakdict_resize(d)
 def ll_set_nonnull(self, d, llkey, llvalue):
     hash = self.ll_keyhash(llkey)
     valueref = weakref_create(llvalue)  # GC effects here, before the rest
     i = rdict.ll_dict_lookup(d, llkey, hash) & rdict.MASK
     everused = d.entries.everused(i)
     d.entries[i].key = llkey
     d.entries[i].value = valueref
     # llop.debug_print(lltype.Void, i, 'stored')
     if not everused:
         d.resize_counter -= 3
         if d.resize_counter <= 0:
             # llop.debug_print(lltype.Void, 'RESIZE')
             self.ll_weakdict_resize(d)
Example #15
0
def ll_set_nonnull(d, llkey, llvalue):
    hash = compute_identity_hash(llkey)
    keyref = weakref_create(llkey)  # GC effects here, before the rest
    i = rdict.ll_dict_lookup(d, llkey, hash) & rdict.MASK
    everused = d.entries.everused(i)
    d.entries[i].key = keyref
    d.entries[i].value = llvalue
    d.entries[i].f_hash = hash
    #llop.debug_print(lltype.Void, i, 'stored', hex(hash),
    #                 ll_debugrepr(llkey),
    #                 ll_debugrepr(llvalue))
    if not everused:
        d.resize_counter -= 3
        if d.resize_counter <= 0:
            #llop.debug_print(lltype.Void, 'RESIZE')
            ll_weakdict_resize(d)
Example #16
0
def ll_set_nonnull(d, llkey, llvalue):
    hash = compute_identity_hash(llkey)
    keyref = weakref_create(llkey)    # GC effects here, before the rest
    i = rdict.ll_dict_lookup(d, llkey, hash) & rdict.MASK
    everused = d.entries.everused(i)
    d.entries[i].key = keyref
    d.entries[i].value = llvalue
    d.entries[i].f_hash = hash
    #llop.debug_print(lltype.Void, i, 'stored', hex(hash),
    #                 ll_debugrepr(llkey),
    #                 ll_debugrepr(llvalue))
    if not everused:
        d.resize_counter -= 3
        if d.resize_counter <= 0:
            #llop.debug_print(lltype.Void, 'RESIZE')
            ll_weakdict_resize(d)