[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