[pypy-svn] r74728 - pypy/branch/blackhole-improvement/pypy/jit/metainterp
arigo at codespeak.net
arigo at codespeak.net
Tue May 25 12:44:42 CEST 2010
Author: arigo
Date: Tue May 25 12:44:41 2010
New Revision: 74728
Modified:
pypy/branch/blackhole-improvement/pypy/jit/metainterp/history.py
pypy/branch/blackhole-improvement/pypy/jit/metainterp/pyjitpl.py
Log:
Simplify the encoding. That seems to be necessary
to fix the next issue.
Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/history.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/history.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/history.py Tue May 25 12:44:41 2010
@@ -310,6 +310,8 @@
def repr_rpython(self):
return repr_rpython(self, 'cf')
+CONST_FZERO = ConstFloat(0.0)
+
class ConstPtr(Const):
type = REF
value = lltype.nullptr(llmemory.GCREF.TO)
Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/pyjitpl.py (original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/pyjitpl.py Tue May 25 12:44:41 2010
@@ -109,10 +109,10 @@
# is not defined yet.
argcode = self._result_argcode
index = ord(self.bytecode[self.pc - 1])
- if argcode == 'i': self.registers_i[index] = None
- elif argcode == 'r': self.registers_r[index] = None
- elif argcode == 'f': self.registers_f[index] = None
- self._result_argcode = 'v' # done
+ if argcode == 'i': self.registers_i[index] = history.CONST_FALSE
+ elif argcode == 'r': self.registers_r[index] = history.CONST_NULL
+ elif argcode == 'f': self.registers_f[index] = history.CONST_FZERO
+ self._result_argcode = '?' # done
#
from pypy.jit.codewriter.jitcode import get_register_count_i
from pypy.jit.codewriter.jitcode import get_register_count_r
@@ -121,17 +121,9 @@
from pypy.jit.codewriter.jitcode import get_register_index_r
from pypy.jit.codewriter.jitcode import get_register_index_f
info = self.jitcode.get_live_vars_info(self.pc)
- # first count how many boxes there are, skipping None
- total = 0
- for index in range(get_register_count_i(info)):
- if self.registers_i[get_register_index_i(info, index)] is not None:
- total += 1
- for index in range(get_register_count_r(info)):
- if self.registers_r[get_register_index_r(info, index)] is not None:
- total += 1
- for index in range(get_register_count_f(info)):
- if self.registers_f[get_register_index_f(info, index)] is not None:
- total += 1
+ total = (get_register_count_i(info) +
+ get_register_count_r(info) +
+ get_register_count_f(info))
# allocate a list of the correct size
env = [None] * total
make_sure_not_resized(env)
@@ -139,19 +131,19 @@
count = 0
for index in range(get_register_count_i(info)):
box = self.registers_i[get_register_index_i(info, index)]
- if box is not None:
- env[count] = box
- count += 1
+ assert box is not None
+ env[count] = box
+ count += 1
for index in range(get_register_count_r(info)):
box = self.registers_r[get_register_index_r(info, index)]
- if box is not None:
- env[count] = box
- count += 1
+ assert box is not None
+ env[count] = box
+ count += 1
for index in range(get_register_count_f(info)):
box = self.registers_f[get_register_index_f(info, index)]
- if box is not None:
- env[count] = box
- count += 1
+ assert box is not None
+ env[count] = box
+ count += 1
assert count == total
return env
More information about the Pypy-commit
mailing list