Example #1
0
def newlist_and_gc_store(TYPE, value):
    size = rffi.sizeof(TYPE)
    lst = resizable_list_supporting_raw_ptr(['\x00'] * size)
    ll_data = ll_for_resizable_list(lst)
    ll_items = ll_data.items
    LIST = lltype.typeOf(ll_data).TO  # rlist.LIST_OF(lltype.Char)
    base_ofs = llmemory.itemoffsetof(LIST.items.TO, 0)
    scale_factor = llmemory.sizeof(lltype.Char)
    value = lltype.cast_primitive(TYPE, value)
    llop.gc_store_indexed(lltype.Void, ll_items, 0, value, scale_factor,
                          base_ofs)
    return lst
Example #2
0
 def typed_write(self, TP, byte_offset, value):
     if self.readonly or not is_alignment_correct(TP, byte_offset):
         raise CannotWrite
     lldata = self._get_gc_data()
     byte_offset += self._get_gc_data_extra_offset()
     value = lltype.cast_primitive(TP, value)
     return llop.gc_store_indexed(lltype.Void, lldata, byte_offset, value,
                                  scale_factor, base_ofs)