[pypy-commit] pypy virtual-arguments: invent a new operation
fijal
noreply at buildbot.pypy.org
Fri Jul 20 11:01:22 CEST 2012
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: virtual-arguments
Changeset: r56285:dd4cccdf8382
Date: 2012-07-20 11:00 +0200
http://bitbucket.org/pypy/pypy/changeset/dd4cccdf8382/
Log: invent a new operation
diff --git a/pypy/jit/codewriter/jtransform.py b/pypy/jit/codewriter/jtransform.py
--- a/pypy/jit/codewriter/jtransform.py
+++ b/pypy/jit/codewriter/jtransform.py
@@ -1430,9 +1430,10 @@
def do_fixed_newlist(self, op, args, arraydescr):
v_length = self._get_initial_newlist_length(op, args)
- if v_length.concretetype == lltype.Signed:
- raise Exception("[item] * lgt must have lgt to be proven non-negative for the JIT")
- return SpaceOperation('new_array', [arraydescr, v_length], op.result)
+ v = Variable('new_length')
+ v.concretetype = lltype.Signed
+ return [SpaceOperation('int_force_ge_zero', [v_length], v),
+ SpaceOperation('new_array', [arraydescr, v], op.result)]
def do_fixed_list_len(self, op, args, arraydescr):
if args[0] in self.vable_array_vars: # virtualizable array
diff --git a/pypy/jit/codewriter/test/test_codewriter.py b/pypy/jit/codewriter/test/test_codewriter.py
--- a/pypy/jit/codewriter/test/test_codewriter.py
+++ b/pypy/jit/codewriter/test/test_codewriter.py
@@ -231,4 +231,7 @@
jitdriver_sd = FakeJitDriverSD(rtyper.annotator.translator.graphs[0])
cw = CodeWriter(FakeCPU(rtyper), [jitdriver_sd])
cw.find_all_graphs(FakePolicy())
- py.test.raises(Exception, "cw.make_jitcodes(verbose=True)")
+ cw.make_jitcodes(verbose=True)
+ s = jitdriver_sd.mainjitcode.dump()
+ assert 'int_force_ge_zero' in s
+ assert 'new_array' in s
More information about the pypy-commit
mailing list