[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