[pypy-svn] r68311 - in pypy/branch/gc-compress/pypy/jit/backend/llsupport: . test
arigo at codespeak.net
arigo at codespeak.net
Sun Oct 11 14:19:48 CEST 2009
Author: arigo
Date: Sun Oct 11 14:19:48 2009
New Revision: 68311
Modified:
pypy/branch/gc-compress/pypy/jit/backend/llsupport/gc.py
pypy/branch/gc-compress/pypy/jit/backend/llsupport/test/test_gc.py
Log:
Unifies the type_id and the flags into a single Signed,
as early as in the SizeDescr.
Modified: pypy/branch/gc-compress/pypy/jit/backend/llsupport/gc.py
==============================================================================
--- pypy/branch/gc-compress/pypy/jit/backend/llsupport/gc.py (original)
+++ pypy/branch/gc-compress/pypy/jit/backend/llsupport/gc.py Sun Oct 11 14:19:48 2009
@@ -343,9 +343,9 @@
symbolic.get_array_token(lltype.GcArray(lltype.Signed), True)
# make a malloc function, with three arguments
- def malloc_basic(size, combined):
- type_id = llop.extract_ushort(rffi.USHORT, combined)
- has_finalizer = bool(combined & (1<<16))
+ def malloc_basic(size, tid):
+ type_id = llop.extract_ushort(rffi.USHORT, tid)
+ has_finalizer = bool(tid & (1<<16))
_check_typeid(type_id)
res = llop1.do_malloc_fixedsize_clear(llmemory.GCREF,
type_id, size, True,
@@ -359,8 +359,8 @@
self.WB_FUNCPTR = lltype.Ptr(lltype.FuncType(
[llmemory.Address, llmemory.Address], lltype.Void))
#
- def malloc_array(itemsize, combined, num_elem):
- type_id = llop.extract_ushort(rffi.USHORT, combined)
+ def malloc_array(itemsize, tid, num_elem):
+ type_id = llop.extract_ushort(rffi.USHORT, tid)
_check_typeid(type_id)
return llop1.do_malloc_varsize_clear(
llmemory.GCREF,
@@ -398,30 +398,23 @@
def init_size_descr(self, S, descr):
type_id = self.layoutbuilder.get_type_id(S)
- has_finalizer = bool(self.layoutbuilder.has_finalizer(S))
assert not self.layoutbuilder.is_weakref(type_id)
- descr.type_id = type_id
- descr.has_finalizer = has_finalizer
+ has_finalizer = bool(self.layoutbuilder.has_finalizer(S))
+ flags = int(has_finalizer) << 16
+ descr.tid = llop.combine_ushort(lltype.Signed, type_id, flags)
def init_array_descr(self, A, descr):
type_id = self.layoutbuilder.get_type_id(A)
- descr.type_id = type_id
+ descr.tid = llop.combine_ushort(lltype.Signed, type_id, 0)
def gc_malloc(self, sizedescr):
assert isinstance(sizedescr, BaseSizeDescr)
- size = sizedescr.size
- type_id = sizedescr.type_id
- has_finalizer = sizedescr.has_finalizer
- combined = llop.combine_ushort(lltype.Signed, type_id,
- int(has_finalizer) << 16)
- return self.malloc_basic(size, combined)
+ return self.malloc_basic(sizedescr.size, sizedescr.tid)
def gc_malloc_array(self, arraydescr, num_elem):
assert isinstance(arraydescr, BaseArrayDescr)
itemsize = arraydescr.get_item_size(self.translate_support_code)
- type_id = arraydescr.type_id
- combined = llop.combine_ushort(lltype.Signed, type_id, 0)
- return self.malloc_array(itemsize, combined, num_elem)
+ return self.malloc_array(itemsize, arraydescr.tid, num_elem)
def gc_malloc_str(self, num_elem):
return self.malloc_str(num_elem)
@@ -431,19 +424,12 @@
def args_for_new(self, sizedescr):
assert isinstance(sizedescr, BaseSizeDescr)
- size = sizedescr.size
- type_id = sizedescr.type_id # a USHORT
- has_finalizer = sizedescr.has_finalizer # a Bool
- combined = llop.combine_ushort(lltype.Signed, type_id,
- int(has_finalizer) << 16)
- return [size, combined]
+ return [sizedescr.size, sizedescr.tid]
def args_for_new_array(self, arraydescr):
assert isinstance(arraydescr, BaseArrayDescr)
itemsize = arraydescr.get_item_size(self.translate_support_code)
- type_id = arraydescr.type_id
- combined = llop.combine_ushort(lltype.Signed, type_id, 0)
- return [itemsize, combined]
+ return [itemsize, arraydescr.tid]
def get_funcptr_for_new(self):
return llhelper(self.GC_MALLOC_BASIC, self.malloc_basic)
Modified: pypy/branch/gc-compress/pypy/jit/backend/llsupport/test/test_gc.py
==============================================================================
--- pypy/branch/gc-compress/pypy/jit/backend/llsupport/test/test_gc.py (original)
+++ pypy/branch/gc-compress/pypy/jit/backend/llsupport/test/test_gc.py Sun Oct 11 14:19:48 2009
@@ -1,5 +1,6 @@
import random
from pypy.rpython.lltypesystem import lltype, llmemory, rffi, rstr
+from pypy.rpython.lltypesystem.lloperation import llop
from pypy.rpython.annlowlevel import llhelper
from pypy.jit.backend.llsupport.descr import *
from pypy.jit.backend.llsupport.gc import *
@@ -119,8 +120,9 @@
assert not contains_weakptr
p = llmemory.raw_malloc(size)
p = llmemory.cast_adr_to_ptr(p, RESTYPE)
- self.record.append(("fixedsize", type_id, repr(size),
- has_finalizer, p))
+ flags = int(has_finalizer) << 16
+ tid = llop.combine_ushort(lltype.Signed, type_id, flags)
+ self.record.append(("fixedsize", repr(size), tid, p))
return p
def do_malloc_varsize_clear(self, RESTYPE, type_id, length, size,
@@ -129,7 +131,8 @@
p = llmemory.raw_malloc(size + itemsize * length)
(p + offset_to_length).signed[0] = length
p = llmemory.cast_adr_to_ptr(p, RESTYPE)
- self.record.append(("varsize", type_id, length,
+ tid = llop.combine_ushort(lltype.Signed, type_id, 0)
+ self.record.append(("varsize", tid, length,
repr(size), repr(itemsize),
repr(offset_to_length), p))
return p
@@ -181,40 +184,41 @@
S = lltype.GcStruct('S', ('x', lltype.Signed))
sizedescr = get_size_descr(self.gc_ll_descr, S)
p = self.gc_ll_descr.gc_malloc(sizedescr)
- assert self.llop1.record == [("fixedsize", sizedescr.type_id,
- repr(sizedescr.size), False, p)]
+ assert self.llop1.record == [("fixedsize",
+ repr(sizedescr.size),
+ sizedescr.tid, p)]
assert repr(self.gc_ll_descr.args_for_new(sizedescr)) == repr(
- [sizedescr.size,
- llgroup.CombinedSymbolic(sizedescr.type_id, 0)])
+ [sizedescr.size, sizedescr.tid])
def test_gc_malloc_array(self):
A = lltype.GcArray(lltype.Signed)
arraydescr = get_array_descr(self.gc_ll_descr, A)
p = self.gc_ll_descr.gc_malloc_array(arraydescr, 10)
- assert self.llop1.record == [("varsize", arraydescr.type_id, 10,
+ assert self.llop1.record == [("varsize", arraydescr.tid, 10,
repr(arraydescr.get_base_size(True)),
repr(arraydescr.get_item_size(True)),
repr(arraydescr.get_ofs_length(True)),
p)]
assert repr(self.gc_ll_descr.args_for_new_array(arraydescr)) == repr(
- [arraydescr.get_item_size(True),
- llgroup.CombinedSymbolic(arraydescr.type_id, 0)])
+ [arraydescr.get_item_size(True), arraydescr.tid])
def test_gc_malloc_str(self):
p = self.gc_ll_descr.gc_malloc_str(10)
type_id = self.gc_ll_descr.layoutbuilder.get_type_id(rstr.STR)
+ tid = llop.combine_ushort(lltype.Signed, type_id, 0)
basesize, itemsize, ofs_length = symbolic.get_array_token(rstr.STR,
True)
- assert self.llop1.record == [("varsize", type_id, 10,
+ assert self.llop1.record == [("varsize", tid, 10,
repr(basesize), repr(itemsize),
repr(ofs_length), p)]
def test_gc_malloc_unicode(self):
p = self.gc_ll_descr.gc_malloc_unicode(10)
type_id = self.gc_ll_descr.layoutbuilder.get_type_id(rstr.UNICODE)
+ tid = llop.combine_ushort(lltype.Signed, type_id, 0)
basesize, itemsize, ofs_length = symbolic.get_array_token(rstr.UNICODE,
True)
- assert self.llop1.record == [("varsize", type_id, 10,
+ assert self.llop1.record == [("varsize", tid, 10,
repr(basesize), repr(itemsize),
repr(ofs_length), p)]
More information about the Pypy-commit
mailing list