[pypy-svn] r76133 - pypy/branch/kill-caninline/pypy/jit/codewriter
arigo at codespeak.net
arigo at codespeak.net
Mon Jul 12 13:21:02 CEST 2010
Author: arigo
Date: Mon Jul 12 13:20:55 2010
New Revision: 76133
Modified:
pypy/branch/kill-caninline/pypy/jit/codewriter/assembler.py
pypy/branch/kill-caninline/pypy/jit/codewriter/jitcode.py
Log:
Oups, this goes together with r76131.
Modified: pypy/branch/kill-caninline/pypy/jit/codewriter/assembler.py
==============================================================================
--- pypy/branch/kill-caninline/pypy/jit/codewriter/assembler.py (original)
+++ pypy/branch/kill-caninline/pypy/jit/codewriter/assembler.py Mon Jul 12 13:20:55 2010
@@ -53,6 +53,7 @@
self.liveness = {}
self.startpoints = set()
self.alllabels = set()
+ self.resulttypes = {}
def emit_reg(self, reg):
if reg.index >= self.count_regs[reg.kind]:
@@ -165,7 +166,9 @@
raise NotImplementedError(x)
#
opname = insn[0]
- assert '>' not in argcodes or argcodes.index('>') == len(argcodes) - 2
+ if '>' in argcodes:
+ assert argcodes.index('>') == len(argcodes) - 2
+ self.resulttypes[len(self.code)] = argcodes[-1]
key = opname + '/' + ''.join(argcodes)
num = self.insns.setdefault(key, len(self.insns))
self.code[startposition] = chr(num)
@@ -212,7 +215,8 @@
self.count_regs['float'],
liveness=self.liveness,
startpoints=self.startpoints,
- alllabels=self.alllabels)
+ alllabels=self.alllabels,
+ resulttypes=self.resulttypes)
def see_raw_object(self, value):
if value._obj not in self._seen_raw_objects:
Modified: pypy/branch/kill-caninline/pypy/jit/codewriter/jitcode.py
==============================================================================
--- pypy/branch/kill-caninline/pypy/jit/codewriter/jitcode.py (original)
+++ pypy/branch/kill-caninline/pypy/jit/codewriter/jitcode.py Mon Jul 12 13:20:55 2010
@@ -19,7 +19,8 @@
def setup(self, code='', constants_i=[], constants_r=[], constants_f=[],
num_regs_i=255, num_regs_r=255, num_regs_f=255,
- liveness=None, startpoints=None, alllabels=None):
+ liveness=None, startpoints=None, alllabels=None,
+ resulttypes=None):
self.code = code
# if the following lists are empty, use a single shared empty list
self.constants_i = constants_i or self._empty_i
@@ -33,6 +34,7 @@
self.liveness = make_liveness_cache(liveness)
self._startpoints = startpoints # debugging
self._alllabels = alllabels # debugging
+ self._resulttypes = resulttypes # debugging
def get_fnaddr_as_int(self):
return heaptracker.adr2int(self.fnaddr)
More information about the Pypy-commit
mailing list