[pypy-svn] r51131 - in pypy/branch/jit-refactoring/pypy/jit/rainbow: . test
cfbolz at codespeak.net
cfbolz at codespeak.net
Wed Jan 30 16:17:38 CET 2008
Author: cfbolz
Date: Wed Jan 30 16:17:37 2008
New Revision: 51131
Modified:
pypy/branch/jit-refactoring/pypy/jit/rainbow/bytecode.py
pypy/branch/jit-refactoring/pypy/jit/rainbow/test/test_serializegraph.py
Log:
more complex switch test + fix
Modified: pypy/branch/jit-refactoring/pypy/jit/rainbow/bytecode.py
==============================================================================
--- pypy/branch/jit-refactoring/pypy/jit/rainbow/bytecode.py (original)
+++ pypy/branch/jit-refactoring/pypy/jit/rainbow/bytecode.py Wed Jan 30 16:17:37 2008
@@ -178,8 +178,7 @@
self.make_bytecode_block(linkfalse.target, insert_goto=True)
self.additional_positions[linktrue] = len(self.bytecode)
self.insert_renaming(linktrue.args)
- self.emit_2byte(self.interpreter.find_opcode("goto"))
- self.emit_jumptarget(linktrue.target)
+ self.make_bytecode_block(linktrue.target, insert_goto=True)
else:
XXX
Modified: pypy/branch/jit-refactoring/pypy/jit/rainbow/test/test_serializegraph.py
==============================================================================
--- pypy/branch/jit-refactoring/pypy/jit/rainbow/test/test_serializegraph.py (original)
+++ pypy/branch/jit-refactoring/pypy/jit/rainbow/test/test_serializegraph.py Wed Jan 30 16:17:37 2008
@@ -4,6 +4,7 @@
from pypy.jit.hintannotator.model import SomeLLAbstractConstant, OriginFlags
from pypy.jit.rainbow.bytecode import BytecodeWriter
from pypy.jit.codegen.llgraph.rgenop import RGenOp
+from pypy.rlib.jit import hint
from pypy import conftest
@@ -83,6 +84,36 @@
)
assert jitcode.code == expected
+ def test_switch2(self):
+ def f(x, y, z):
+ if x:
+ return y + z
+ else:
+ return y - z
+ writer, jitcode = self.serialize(f, [int, int, int])
+ expected = code(writer.interpreter,
+ "red_int_is_true", 0,
+ "red_goto_iftrue", 3, tlabel("true"),
+ "make_new_redvars", 2, 1, 2,
+ "make_new_greenvars", 0,
+ label("sub"),
+ "red_int_sub", 0, 1,
+ "make_new_redvars", 1, 2,
+ "make_new_greenvars", 0,
+ label("return"),
+ "red_return", 0,
+ label("true"),
+ "make_new_redvars", 2, 1, 2,
+ "make_new_greenvars", 0,
+ label("add"),
+ "red_int_add", 0, 1,
+ "make_new_redvars", 1, 2,
+ "make_new_greenvars", 0,
+ "goto", tlabel("return"),
+ )
+ assert jitcode.code == expected
+
+
class label(object):
def __init__(self, name):
More information about the Pypy-commit
mailing list