[pypy-svn] r52837 - in pypy/branch/jit-hotpath/pypy/jit/rainbow: . test
cfbolz at codespeak.net
cfbolz at codespeak.net
Sat Mar 22 21:11:13 CET 2008
Author: cfbolz
Date: Sat Mar 22 21:11:10 2008
New Revision: 52837
Modified:
pypy/branch/jit-hotpath/pypy/jit/rainbow/codewriter.py
pypy/branch/jit-hotpath/pypy/jit/rainbow/dump.py
pypy/branch/jit-hotpath/pypy/jit/rainbow/fallback.py
pypy/branch/jit-hotpath/pypy/jit/rainbow/interpreter.py
pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_serializegraph.py
Log:
don't use negativity to encode information, use even/oddness
Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/codewriter.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/codewriter.py (original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/codewriter.py Sat Mar 22 21:11:10 2008
@@ -656,7 +656,7 @@
assert isinstance(arg, flowmodel.Variable) or not check
assert getattr(arg, 'concretetype', '?') is not lltype.Void
if where is None:
- where = self.free_green[self.current_block]
+ where = self.free_green[self.current_block] * 2
self.free_green[self.current_block] += 1
if verbose:
self.emit('# => g%d' % (where,))
@@ -665,8 +665,9 @@
def green_position(self, arg):
if isinstance(arg, flowmodel.Variable):
+ # greenvar_positions contains even numbers usually
return self.greenvar_positions[arg]
- return ~self.const_position(arg)
+ return self.const_position(arg) * 2 + 1
def const_position(self, const):
if const in self.const_positions:
@@ -1565,7 +1566,7 @@
greens_v, reds_v = self.check_hp_hint_args(op)
key = ()
for i, v in enumerate(greens_v):
- assert self.green_position(v) == i
+ assert self.green_position(v) == i * 2
key += (v.concretetype,)
for i, v in enumerate(reds_v):
assert self.redvar_position(v) == i
Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/dump.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/dump.py (original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/dump.py Sat Mar 22 21:11:10 2008
@@ -38,9 +38,9 @@
def get_greenarg(self):
i = self.load_2byte()
- if i < 0:
- return self.jitcode.constants[~i]
- return CustomRepr('g%d' % i)
+ if i % 2:
+ return self.jitcode.constants[i // 2]
+ return CustomRepr('g%d' % (i // 2))
def get_green_varargs(self):
greenargs = []
Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/fallback.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/fallback.py (original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/fallback.py Sat Mar 22 21:11:10 2008
@@ -234,9 +234,9 @@
def get_greenarg(self):
i = self.load_2byte()
- if i < 0:
- return self.bytecode.constants[~i]
- return self.local_green[i]
+ if i % 2:
+ return self.bytecode.constants[i // 2]
+ return self.local_green[i // 2]
def get_green_varargs(self):
greenargs = []
Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/interpreter.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/interpreter.py (original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/interpreter.py Sat Mar 22 21:11:10 2008
@@ -391,9 +391,9 @@
def get_greenarg(self):
i = self.load_2byte()
- if i < 0:
- return self.frame.bytecode.constants[~i]
- return self.frame.local_green[i]
+ if i % 2:
+ return self.frame.bytecode.constants[i // 2]
+ return self.frame.local_green[i // 2]
def get_green_varargs(self):
greenargs = []
Modified: pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_serializegraph.py
==============================================================================
--- pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_serializegraph.py (original)
+++ pypy/branch/jit-hotpath/pypy/jit/rainbow/test/test_serializegraph.py Sat Mar 22 21:11:10 2008
@@ -72,7 +72,7 @@
return x + 1
writer, jitcode = self.serialize(f, [int])
assert jitcode.code == assemble(writer.interpreter,
- "make_redbox", -1, 0,
+ "make_redbox", 1, 0,
"red_int_add", 0, 1,
"make_new_redvars", 1, 2,
"red_return")
@@ -92,7 +92,7 @@
writer, jitcode = self.serialize(f, [int, int, int])
expected = assemble(writer.interpreter,
"green_int_is_true", 0,
- "green_goto_iftrue", 1, tlabel("true"),
+ "green_goto_iftrue", 2, tlabel("true"),
"make_new_redvars", 1, 1,
"make_new_greenvars", 0,
label("return"),
@@ -118,7 +118,7 @@
writer, jitcode = self.serialize(f, [int, int, int])
expected = assemble(writer.interpreter,
"green_int_is_true", 0,
- "green_goto_iftrue", 1, tlabel("true"),
+ "green_goto_iftrue", 2, tlabel("true"),
"make_new_redvars", 2, 0, 1,
"make_new_greenvars", 0,
label("sub"),
@@ -156,7 +156,7 @@
"make_new_redvars", 1, 2,
label("after"),
"local_merge", 0, -1,
- "make_redbox", -1, 0,
+ "make_redbox", 1, 0,
"red_int_add", 1, 0,
"make_new_redvars", 1, 2,
"red_return",
@@ -181,11 +181,11 @@
return r
writer, jitcode = self.serialize(f, [int])
expected = assemble(writer.interpreter,
- "make_redbox", -1, 0,
+ "make_redbox", 1, 0,
"make_new_redvars", 2, 0, 1,
"make_new_greenvars", 0,
label("while"),
- "local_merge", 0, -1,
+ "local_merge", 0, 1,
"red_int_is_true", 0,
"red_goto_iftrue", 2, tlabel("body"),
"make_new_redvars", 1, 0,
@@ -195,7 +195,7 @@
"make_new_redvars", 2, 0, 1,
"make_new_greenvars", 0,
"red_int_add", 1, 0,
- "make_redbox", -2, 0,
+ "make_redbox", 3, 0,
"red_int_sub", 0, 3,
"make_new_redvars", 2, 2, 4,
"goto", tlabel("while"))
@@ -248,7 +248,7 @@
writer, jitcode = self.serialize(f, [int])
assert jitcode.code == assemble(writer.interpreter,
"red_direct_call", 0, 1, 0, 0,
- "make_redbox", -1, 0,
+ "make_redbox", 1, 0,
"red_int_mul", 1, 2,
"make_new_redvars", 1, 3,
"red_return")
@@ -256,7 +256,7 @@
assert len(jitcode.called_bytecodes) == 1
called_jitcode = jitcode.called_bytecodes[0]
assert called_jitcode.code == assemble(writer.interpreter,
- "make_redbox", -1, 0,
+ "make_redbox", 1, 0,
"red_int_add", 0, 1,
"make_new_redvars", 1, 2,
"red_return")
@@ -273,8 +273,8 @@
writer, jitcode = self.serialize(ll_function, [int])
assert jitcode.code == assemble(writer.interpreter,
- "green_call", -1, 0, 1, 0,
- "make_redbox", 1, 0,
+ "green_call", 1, 0, 1, 0,
+ "make_redbox", 2, 0,
"make_new_redvars", 1, 0,
"make_new_greenvars", 0,
"red_return")
@@ -296,8 +296,8 @@
assert jitcode.code == assemble(writer.interpreter,
"yellow_direct_call", 0, 1, 0, 0,
"yellow_retrieve_result",
- "green_int_add", 0, -1,
- "make_redbox", 1, 0,
+ "green_int_add", 0, 1,
+ "make_redbox", 2, 0,
"make_new_redvars", 1, 1,
"make_new_greenvars", 0,
"red_return")
@@ -305,16 +305,16 @@
assert len(jitcode.called_bytecodes) == 1
called_jitcode = jitcode.called_bytecodes[0]
assert called_jitcode.code == assemble(writer.interpreter,
- "make_redbox", -1, 0,
+ "make_redbox", 1, 0,
"red_int_gt", 0, 1,
"red_goto_iftrue", 2, tlabel("true"),
"make_new_redvars", 0,
- "make_new_greenvars", 1, -2,
+ "make_new_greenvars", 1, 3,
label("return"),
"yellow_return",
label("true"),
"make_new_redvars", 0,
- "make_new_greenvars", 1, -3,
+ "make_new_greenvars", 1, 5,
"goto", tlabel("return")
)
assert not called_jitcode.is_portal
More information about the Pypy-commit
mailing list