[pypy-commit] pypy resume-refactor: Fix until we start passing tests
fijal
noreply at buildbot.pypy.org
Wed Oct 16 16:37:14 CEST 2013
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: resume-refactor
Changeset: r67426:3d44b7201a68
Date: 2013-10-16 16:36 +0200
http://bitbucket.org/pypy/pypy/changeset/3d44b7201a68/
Log: Fix until we start passing tests
diff --git a/rpython/jit/backend/llsupport/assembler.py b/rpython/jit/backend/llsupport/assembler.py
--- a/rpython/jit/backend/llsupport/assembler.py
+++ b/rpython/jit/backend/llsupport/assembler.py
@@ -4,7 +4,6 @@
from rpython.jit.metainterp.history import (INT, REF, FLOAT, JitCellToken,
ConstInt, BoxInt, AbstractFailDescr)
from rpython.jit.metainterp.resoperation import ResOperation, rop
-#from rpython.jit.metainterp.resume2 import rebuild_locs_from_resumedata
from rpython.rlib import rgc
from rpython.rlib.debug import (debug_start, debug_stop, have_debug_prints,
debug_print)
@@ -121,16 +120,16 @@
else:
coeff = 2
for item, pos in enumerate(loc_positions):
- if pos < GPR_REGS * WORD:
- locs[item] = self.cpu.gen_regs[pos // WORD]
- elif pos < (GPR_REGS + XMM_REGS * coeff) * WORD:
- pos = (pos // WORD - GPR_REGS) // coeff
+ if pos < GPR_REGS:
+ locs[item] = self.cpu.gen_regs[pos]
+ elif pos < (GPR_REGS + XMM_REGS * coeff):
+ pos = (pos - GPR_REGS) // coeff
locs[item] = self.cpu.float_regs[pos]
else:
- i = pos // WORD - self.cpu.JITFRAME_FIXED_SIZE
+ i = pos - self.cpu.JITFRAME_FIXED_SIZE
assert i >= 0
tp = inputargs[input_i].type
- locs[item] = self.new_stack_loc(i, pos, tp)
+ locs[item] = self.new_stack_loc(i, pos * WORD, tp)
input_i += 1
return locs
diff --git a/rpython/jit/backend/llsupport/llmodel.py b/rpython/jit/backend/llsupport/llmodel.py
--- a/rpython/jit/backend/llsupport/llmodel.py
+++ b/rpython/jit/backend/llsupport/llmodel.py
@@ -339,19 +339,31 @@
assert isinstance(res, history.AbstractFailDescr)
return res
- def get_int_value(self, deadframe, pos):
+ def get_int_value(self, deadframe, locs, pos):
descr = self.gc_ll_descr.getframedescrs(self).arraydescr
ofs = self.unpack_arraydescr(descr)
+ if locs is None:
+ assert pos == 0
+ else:
+ pos = locs[pos] * WORD
return self.read_int_at_mem(deadframe, pos + ofs, WORD, 1)
- def get_ref_value(self, deadframe, pos):
+ def get_ref_value(self, deadframe, locs, pos):
descr = self.gc_ll_descr.getframedescrs(self).arraydescr
ofs = self.unpack_arraydescr(descr)
+ if locs is None:
+ assert pos == 0
+ else:
+ pos = locs[pos] * WORD
return self.read_ref_at_mem(deadframe, pos + ofs)
- def get_float_value(self, deadframe, pos):
+ def get_float_value(self, deadframe, locs, pos):
descr = self.gc_ll_descr.getframedescrs(self).arraydescr
ofs = self.unpack_arraydescr(descr)
+ if locs is None:
+ assert pos == 0
+ else:
+ pos = locs[pos] * WORD
return self.read_float_at_mem(deadframe, pos + ofs)
# ____________________ RAW PRIMITIVES ________________________
diff --git a/rpython/jit/backend/model.py b/rpython/jit/backend/model.py
--- a/rpython/jit/backend/model.py
+++ b/rpython/jit/backend/model.py
@@ -102,22 +102,22 @@
"""Returns the Descr for the last operation executed by the frame."""
raise NotImplementedError
- def get_int_value(self, deadframe, index):
- """Returns the value for the index'th argument to the
- last executed operation (from 'fail_args' if it was a guard,
- or from 'args' if it was a FINISH). Returns an int."""
+ def get_int_value(self, deadframe, locations, index):
+ """ Return the value for the index'th argument in the
+ given backend-specific locations. Returns an int.
+ """
raise NotImplementedError
- def get_float_value(self, deadframe, index):
- """Returns the value for the index'th argument to the
- last executed operation (from 'fail_args' if it was a guard,
- or from 'args' if it was a FINISH). Returns a FLOATSTORAGE."""
+ def get_float_value(self, deadframe, locations, index):
+ """ Return the value for the index'th argument in the
+ given backend-specific locations. Returns a FLOATSTORAGE.
+ """
raise NotImplementedError
- def get_ref_value(self, deadframe, index):
- """Returns the value for the index'th argument to the
- last executed operation (from 'fail_args' if it was a guard,
- or from 'args' if it was a FINISH). Returns a GCREF."""
+ def get_ref_value(self, deadframe, locations, index):
+ """ Return the value for the index'th argument in the
+ given backend-specific locations. Returns a GCREF.
+ """
raise NotImplementedError
def grab_exc_value(self, deadframe):
diff --git a/rpython/jit/backend/test/runner_test.py b/rpython/jit/backend/test/runner_test.py
--- a/rpython/jit/backend/test/runner_test.py
+++ b/rpython/jit/backend/test/runner_test.py
@@ -132,7 +132,7 @@
self.cpu.compile_loop(None, inputargs, operations, looptoken)
deadframe = self.cpu.execute_token(looptoken, 2)
fail = self.cpu.get_latest_descr(deadframe)
- res = self.cpu.get_int_value(deadframe, 0)
+ res = self.cpu.get_int_value(deadframe, None, 0)
assert res == 3
assert fail.identifier == 1
@@ -151,7 +151,7 @@
deadframe = self.cpu.execute_token(looptoken,
longlong.getfloatstorage(2.8))
fail = self.cpu.get_latest_descr(deadframe)
- res = self.cpu.get_float_value(deadframe, 0)
+ res = self.cpu.get_float_value(deadframe, None, 0)
assert longlong.getrealfloat(res) == 5.1
fail = self.cpu.get_latest_descr(deadframe)
assert fail.identifier == 1
@@ -181,7 +181,8 @@
deadframe = self.cpu.execute_token(looptoken, 2)
fail = self.cpu.get_latest_descr(deadframe)
assert fail.identifier == 2
- res = self.cpu.get_int_value(deadframe, 0)
+ locs = rebuild_locs_from_resumedata(fail)
+ res = self.cpu.get_int_value(deadframe, locs, 0)
assert res == 10
def test_backends_dont_keep_loops_alive(self):
@@ -252,7 +253,8 @@
deadframe = self.cpu.execute_token(looptoken, 2)
fail = self.cpu.get_latest_descr(deadframe)
assert fail.identifier == 2
- res = self.cpu.get_int_value(deadframe, 0)
+ locs = rebuild_locs_from_resumedata(fail)
+ res = self.cpu.get_int_value(deadframe, locs, 0)
assert res == 20
assert self.cpu.tracker.total_compiled_loops == 1
@@ -290,18 +292,16 @@
descr=BasicFailDescr(3)))
bridge.append(ResOperation(rop.FINISH, [], None,
descr=BasicFinalDescr(4)))
- # XXX
- #bridge[-2].setfailargs(i1list)
-
- locs = rebuild_locs_from_resumedata(faildescr1)
- self.cpu.compile_bridge(None, faildescr1, [i0], locs, bridge, looptoken)
+
+ faillocs = rebuild_locs_from_resumedata(faildescr1)
+ self.cpu.compile_bridge(None, faildescr1, [i0], faillocs, bridge, looptoken)
deadframe = self.cpu.execute_token(looptoken, 1)
fail = self.cpu.get_latest_descr(deadframe)
locs = rebuild_locs_from_resumedata(fail)
assert fail.identifier == 3
for i in range(len(i1list)):
- res = self.cpu.get_int_value(deadframe, locs[i + 1])
+ res = self.cpu.get_int_value(deadframe, locs, i + 1)
assert res == 2 + i
def test_finish(self):
@@ -323,7 +323,7 @@
deadframe = self.cpu.execute_token(looptoken, 99)
fail = self.cpu.get_latest_descr(deadframe)
assert fail is faildescr
- res = self.cpu.get_int_value(deadframe, 0)
+ res = self.cpu.get_int_value(deadframe, None, 0)
assert res == 99
looptoken = JitCellToken()
@@ -334,7 +334,7 @@
deadframe = self.cpu.execute_token(looptoken)
fail = self.cpu.get_latest_descr(deadframe)
assert fail is faildescr
- res = self.cpu.get_int_value(deadframe, 0)
+ res = self.cpu.get_int_value(deadframe, None, 0)
assert res == 42
looptoken = JitCellToken()
@@ -357,7 +357,7 @@
deadframe = self.cpu.execute_token(looptoken, value)
fail = self.cpu.get_latest_descr(deadframe)
assert fail is faildescr
- res = self.cpu.get_float_value(deadframe, 0)
+ res = self.cpu.get_float_value(deadframe, None, 0)
assert longlong.getrealfloat(res) == -61.25
looptoken = JitCellToken()
@@ -368,7 +368,7 @@
deadframe = self.cpu.execute_token(looptoken)
fail = self.cpu.get_latest_descr(deadframe)
assert fail is faildescr
- res = self.cpu.get_float_value(deadframe, 0)
+ res = self.cpu.get_float_value(deadframe, None, 0)
assert longlong.getrealfloat(res) == 42.5
def test_execute_operations_in_env(self):
More information about the pypy-commit
mailing list