[pypy-svn] r70062 - in pypy/trunk/pypy: . jit/backend/cli jit/backend/cli/test jit/backend/llgraph jit/backend/llsupport jit/backend/llsupport/test jit/backend/llvm/test jit/backend/x86 jit/backend/x86/test jit/metainterp jit/metainterp/test module/exceptions objspace/std/test rlib/test translator/c/test

pedronis at codespeak.net pedronis at codespeak.net
Thu Dec 10 22:32:44 CET 2009


Author: pedronis
Date: Thu Dec 10 22:32:42 2009
New Revision: 70062

Modified:
   pypy/trunk/pypy/   (props changed)
   pypy/trunk/pypy/jit/backend/cli/runner.py
   pypy/trunk/pypy/jit/backend/cli/test/conftest.py   (props changed)
   pypy/trunk/pypy/jit/backend/llgraph/runner.py
   pypy/trunk/pypy/jit/backend/llsupport/llmodel.py
   pypy/trunk/pypy/jit/backend/llsupport/test/test_runner.py
   pypy/trunk/pypy/jit/backend/llvm/test/conftest.py   (props changed)
   pypy/trunk/pypy/jit/backend/x86/assembler.py
   pypy/trunk/pypy/jit/backend/x86/runner.py
   pypy/trunk/pypy/jit/backend/x86/support.py
   pypy/trunk/pypy/jit/backend/x86/test/test_gc_integration.py   (props changed)
   pypy/trunk/pypy/jit/backend/x86/test/test_support.py
   pypy/trunk/pypy/jit/metainterp/logger.py   (props changed)
   pypy/trunk/pypy/jit/metainterp/test/test_basic.py
   pypy/trunk/pypy/jit/metainterp/warmspot.py
   pypy/trunk/pypy/module/exceptions/   (props changed)
   pypy/trunk/pypy/objspace/std/test/test_setobject.py   (props changed)
   pypy/trunk/pypy/rlib/test/test_rcoroutine.py   (props changed)
   pypy/trunk/pypy/translator/c/test/test_refcount.py   (props changed)
Log:
merge fixed-fail-boxes, remove unneeded support for growing fail boxes lists

Modified: pypy/trunk/pypy/jit/backend/cli/runner.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/cli/runner.py	(original)
+++ pypy/trunk/pypy/jit/backend/cli/runner.py	Thu Dec 10 22:32:42 2009
@@ -43,7 +43,7 @@
     supports_floats = True
     ts = oohelper
 
-    def __init__(self, rtyper, stats, translate_support_code=False,
+    def __init__(self, rtyper, stats, opts=None, translate_support_code=False,
                  mixlevelann=None, gcdescr=None):
         model.AbstractCPU.__init__(self)
         self.rtyper = rtyper

Modified: pypy/trunk/pypy/jit/backend/llgraph/runner.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/llgraph/runner.py	(original)
+++ pypy/trunk/pypy/jit/backend/llgraph/runner.py	Thu Dec 10 22:32:42 2009
@@ -74,8 +74,9 @@
 class BaseCPU(model.AbstractCPU):
     supports_floats = True
 
-    def __init__(self, rtyper, stats=None, translate_support_code=False,
+    def __init__(self, rtyper, stats=None, opts=None, translate_support_code=False,
                  annmixlevel=None, gcdescr=None):
+        assert type(opts) is not bool
         model.AbstractCPU.__init__(self)
         self.rtyper = rtyper
         self.translate_support_code = translate_support_code

Modified: pypy/trunk/pypy/jit/backend/llsupport/llmodel.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/llsupport/llmodel.py	(original)
+++ pypy/trunk/pypy/jit/backend/llsupport/llmodel.py	Thu Dec 10 22:32:42 2009
@@ -17,8 +17,11 @@
 class AbstractLLCPU(AbstractCPU):
     from pypy.jit.metainterp.typesystem import llhelper as ts
 
-    def __init__(self, rtyper, stats, translate_support_code=False,
+    def __init__(self, rtyper, stats, opts, translate_support_code=False,
                  gcdescr=None):
+        assert type(opts) is not bool
+        self.opts = opts
+
         from pypy.jit.backend.llsupport.gc import get_ll_description
         AbstractCPU.__init__(self)
         self.rtyper = rtyper

Modified: pypy/trunk/pypy/jit/backend/llsupport/test/test_runner.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/llsupport/test/test_runner.py	(original)
+++ pypy/trunk/pypy/jit/backend/llsupport/test/test_runner.py	Thu Dec 10 22:32:42 2009
@@ -18,4 +18,4 @@
     # ====> ../../test/runner_test.py
     
     def setup_class(cls):
-        cls.cpu = MyLLCPU(rtyper=None, stats=FakeStats())
+        cls.cpu = MyLLCPU(rtyper=None, stats=FakeStats(), opts=None)

Modified: pypy/trunk/pypy/jit/backend/x86/assembler.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/x86/assembler.py	(original)
+++ pypy/trunk/pypy/jit/backend/x86/assembler.py	Thu Dec 10 22:32:42 2009
@@ -15,9 +15,7 @@
 from pypy.jit.backend.x86 import codebuf
 from pypy.jit.backend.x86.ri386 import *
 from pypy.jit.metainterp.resoperation import rop
-from pypy.jit.backend.x86.support import NonmovableGrowableArrayFloat,\
-     NonmovableGrowableArraySigned, NonmovableGrowableArrayGCREF,\
-     CHUNK_SIZE
+from pypy.jit.backend.x86.support import values_array
 from pypy.rlib.debug import debug_print
 
 # our calling convention - we pass first 6 args in registers
@@ -78,7 +76,8 @@
     mc2 = None
     mc_size = MachineCodeBlockWrapper.MC_DEFAULT_SIZE
 
-    def __init__(self, cpu, translate_support_code=False):
+    def __init__(self, cpu, translate_support_code=False,
+                            failargs_limit=1000):
         self.cpu = cpu
         self.verbose = False
         self.rtyper = cpu.rtyper
@@ -86,21 +85,18 @@
         self.malloc_array_func_addr = 0
         self.malloc_str_func_addr = 0
         self.malloc_unicode_func_addr = 0
-        self.fail_boxes_int = NonmovableGrowableArraySigned()
-        self.fail_boxes_ptr = NonmovableGrowableArrayGCREF()
-        self.fail_boxes_float = NonmovableGrowableArrayFloat()
+        self.fail_boxes_int = values_array(lltype.Signed, failargs_limit)
+        self.fail_boxes_ptr = values_array(llmemory.GCREF, failargs_limit)
+        self.fail_boxes_float = values_array(lltype.Float, failargs_limit)
         self.fail_ebp = 0
         self.loc_float_const_neg = None
         self.loc_float_const_abs = None
         self.setup_failure_recovery()
 
     def leave_jitted_hook(self):
-        i = 0
-        while i < self.fail_boxes_ptr.lgt:
-            chunk = self.fail_boxes_ptr.chunks[i]
-            llop.gc_assume_young_pointers(lltype.Void,
-                                      llmemory.cast_ptr_to_adr(chunk))
-            i += 1
+        ptrs = self.fail_boxes_ptr.ar
+        llop.gc_assume_young_pointers(lltype.Void,
+                                      llmemory.cast_ptr_to_adr(ptrs))
 
     def make_sure_mc_exists(self):
         if self.mc is None:

Modified: pypy/trunk/pypy/jit/backend/x86/runner.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/x86/runner.py	(original)
+++ pypy/trunk/pypy/jit/backend/x86/runner.py	Thu Dec 10 22:32:42 2009
@@ -16,14 +16,18 @@
     BOOTSTRAP_TP = lltype.FuncType([], lltype.Signed)
     dont_keepalive_stuff = False # for tests
 
-    def __init__(self, rtyper, stats, translate_support_code=False,
+    def __init__(self, rtyper, stats, opts=None, translate_support_code=False,
                  gcdescr=None):
-        AbstractLLCPU.__init__(self, rtyper, stats, translate_support_code,
+        AbstractLLCPU.__init__(self, rtyper, stats, opts, translate_support_code,
                                gcdescr)
-        self._bootstrap_cache = {}
 
     def setup(self):
-        self.assembler = Assembler386(self, self.translate_support_code)
+        if self.opts is not None:
+            failargs_limit = self.opts.failargs_limit
+        else:
+            failargs_limit = 1000
+        self.assembler = Assembler386(self, self.translate_support_code,
+                                            failargs_limit)
 
     def get_on_leave_jitted_hook(self):
         return self.assembler.leave_jitted_hook

Modified: pypy/trunk/pypy/jit/backend/x86/support.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/x86/support.py	(original)
+++ pypy/trunk/pypy/jit/backend/x86/support.py	Thu Dec 10 22:32:42 2009
@@ -1,53 +1,23 @@
-
 from pypy.rpython.lltypesystem import lltype, rffi, llmemory
-from pypy.rlib import rgc
-from pypy.rlib.objectmodel import we_are_translated
-
-CHUNK_SIZE_BITS = 8
-CHUNK_SIZE = 1 << CHUNK_SIZE_BITS
 
-def new_nonmovable_growable_array(TP):
+def values_array(TP, size):
     ATP = lltype.GcArray(TP)
     
-    class NonmovableGrowableArray(object):
+    class ValuesArray(object):
         def __init__(self):
-            self.chunks = []
-            self.lgt = 0
-
-        def _grow(self):
-            # XXX workaround for a fact that rgc.malloc_nonmovable always
-            #     returns nullptr when run on top of python
-            if we_are_translated():
-                new_item = rgc.malloc_nonmovable(ATP, CHUNK_SIZE, zero=True)
-            else:
-                new_item = lltype.malloc(ATP, CHUNK_SIZE, zero=True)
-            self.chunks.append(new_item)
-            self.lgt += 1
-        _grow._dont_inline_ = True
+            self.ar = lltype.malloc(ATP, size, zero=True, immortal=True)
 
         def get_addr_for_num(self, i):
-            chunk_no, ofs = self._no_of(i)
-            chunk = self.chunks[chunk_no]
-            rffi.cast(lltype.Signed, chunk)
             return rffi.cast(lltype.Signed, lltype.direct_ptradd(
-                lltype.direct_arrayitems(chunk), ofs))
-
-        def _no_of(self, i):
-            while i >= len(self.chunks) * CHUNK_SIZE:
-                self._grow()
-            return i >> CHUNK_SIZE_BITS, i & (CHUNK_SIZE-1)
-        _no_of._always_inline_ = True
+                lltype.direct_arrayitems(self.ar), i))
 
         def setitem(self, i, v):
-            chunk_no, ofs = self._no_of(i)
-            self.chunks[chunk_no][ofs] = v
+            self.ar[i] = v
 
         def getitem(self, i):
-            chunk_no, ofs = self._no_of(i)
-            return self.chunks[chunk_no][ofs]
+            return self.ar[i]
 
-    return NonmovableGrowableArray
+        def _freeze_(self):
+            return True
 
-NonmovableGrowableArrayFloat = new_nonmovable_growable_array(lltype.Float)
-NonmovableGrowableArraySigned = new_nonmovable_growable_array(lltype.Signed)
-NonmovableGrowableArrayGCREF = new_nonmovable_growable_array(llmemory.GCREF)
+    return ValuesArray()

Modified: pypy/trunk/pypy/jit/backend/x86/test/test_support.py
==============================================================================
--- pypy/trunk/pypy/jit/backend/x86/test/test_support.py	(original)
+++ pypy/trunk/pypy/jit/backend/x86/test/test_support.py	Thu Dec 10 22:32:42 2009
@@ -1,27 +1,21 @@
 
-from pypy.jit.backend.x86.support import NonmovableGrowableArraySigned, CHUNK_SIZE
+from pypy.jit.backend.x86.support import values_array
 from pypy.rpython.lltypesystem import lltype, llmemory, rffi
 
-def test_nonmovable_growable_array():
-    ar = NonmovableGrowableArraySigned()
+def test_values_array_signed():
+    ar = values_array(lltype.Signed, 50)
     adr = ar.get_addr_for_num(10)
     rffi.cast(rffi.CArrayPtr(lltype.Signed), adr)[0] = 42
     assert ar.getitem(10) == 42
     ar.setitem(42, 38)
     adr = ar.get_addr_for_num(42)
     assert rffi.cast(rffi.CArrayPtr(lltype.Signed), adr)[0] == 38
-    adr = ar.get_addr_for_num(CHUNK_SIZE + 10)
-    rffi.cast(rffi.CArrayPtr(lltype.Signed), adr)[0] = 42
-    assert ar.getitem(CHUNK_SIZE + 10) == 42
-    ar.setitem(CHUNK_SIZE + 42, 38)
-    adr = ar.get_addr_for_num(CHUNK_SIZE + 42)
-    assert rffi.cast(rffi.CArrayPtr(lltype.Signed), adr)[0] == 38
-    adr = ar.get_addr_for_num(3 * CHUNK_SIZE + 10)
-    rffi.cast(rffi.CArrayPtr(lltype.Signed), adr)[0] = 42
-    assert ar.getitem(3 * CHUNK_SIZE + 10) == 42
-    ar.setitem(3 * CHUNK_SIZE + 42, 38)
-    adr = ar.get_addr_for_num(3 * CHUNK_SIZE + 42)
-    assert rffi.cast(rffi.CArrayPtr(lltype.Signed), adr)[0] == 38
-    ar.setitem(8*CHUNK_SIZE, 13)
-    assert ar.getitem(8*CHUNK_SIZE) == 13
-    
+
+def test_values_array_float():
+    ar = values_array(lltype.Float, 50)
+    adr = ar.get_addr_for_num(10)
+    rffi.cast(rffi.CArrayPtr(lltype.Float), adr)[0] = 42.5
+    assert ar.getitem(10) == 42.5
+    ar.setitem(42, 38.5)
+    adr = ar.get_addr_for_num(42)
+    assert rffi.cast(rffi.CArrayPtr(lltype.Float), adr)[0] == 38.5

Modified: pypy/trunk/pypy/jit/metainterp/test/test_basic.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/test/test_basic.py	(original)
+++ pypy/trunk/pypy/jit/metainterp/test/test_basic.py	Thu Dec 10 22:32:42 2009
@@ -21,7 +21,7 @@
     rtyper = support.annotate(func, values, type_system=type_system)
 
     stats = history.Stats()
-    cpu = CPUClass(rtyper, stats, False)
+    cpu = CPUClass(rtyper, stats, None, False)
     graphs = rtyper.annotator.translator.graphs
     opt = history.Options(listops=listops)
     metainterp_sd = pyjitpl.MetaInterpStaticData(graphs[0], cpu, stats, opt)

Modified: pypy/trunk/pypy/jit/metainterp/warmspot.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/warmspot.py	(original)
+++ pypy/trunk/pypy/jit/metainterp/warmspot.py	Thu Dec 10 22:32:42 2009
@@ -256,7 +256,7 @@
             annhelper = self.annhelper
         else:
             annhelper = None
-        cpu = CPUClass(self.translator.rtyper, self.stats,
+        cpu = CPUClass(self.translator.rtyper, self.stats, opt,
                        translate_support_code, gcdescr=self.gcdescr)
         self.cpu = cpu
         self.metainterp_sd = MetaInterpStaticData(self.portal_graph, # xxx



More information about the Pypy-commit mailing list