Esempio n. 1
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)
Esempio n. 2
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)
Esempio n. 3
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)
Esempio n. 4
0
 def _weakref_create(self, llinstance):
     return llmemory.weakref_create(llinstance)
Esempio n. 5
0
 def g():
     s = lltype.malloc(S)
     w = llmemory.weakref_create(s)
     assert llmemory.weakref_deref(lltype.Ptr(S), w) == s
     assert llmemory.weakref_deref(lltype.Ptr(S), w) == s
     return w  # 's' is forgotten here
Esempio n. 6
0
 def _weakref_create(self, llinstance):
     return llmemory.weakref_create(llinstance)
Esempio n. 7
0
def weakref_create_getlazy(objgetter):
    return weakref_create(objgetter())
Esempio n. 8
0
 def g():
     s = lltype.malloc(S)
     w = llmemory.weakref_create(s)
     assert llmemory.weakref_deref(lltype.Ptr(S), w) == s
     assert llmemory.weakref_deref(lltype.Ptr(S), w) == s
     return w   # 's' is forgotten here
Esempio n. 9
0
def weakref_create_getlazy(objgetter):
    return weakref_create(objgetter())