[pypy-svn] r31447 - in pypy/dist/pypy/jit/timeshifter: . test
arigo at codespeak.net
arigo at codespeak.net
Mon Aug 21 17:32:59 CEST 2006
Author: arigo
Date: Mon Aug 21 17:32:57 2006
New Revision: 31447
Modified:
pypy/dist/pypy/jit/timeshifter/rtyper.py
pypy/dist/pypy/jit/timeshifter/test/test_timeshift.py
pypy/dist/pypy/jit/timeshifter/timeshift.py
Log:
(pedronis, arre, arigo)
Make the simple calling test pass.
Modified: pypy/dist/pypy/jit/timeshifter/rtyper.py
==============================================================================
--- pypy/dist/pypy/jit/timeshifter/rtyper.py (original)
+++ pypy/dist/pypy/jit/timeshifter/rtyper.py Mon Aug 21 17:32:57 2006
@@ -219,6 +219,13 @@
return v
else:
bk = self.annotator.bookkeeper
+ # first close the current block
+ ts = self.timeshifter
+ v_jitstate = hop.llops.getjitstate()
+ hop.llops.genmixlevelhelpercall(rtimeshift.leave_block,
+ [ts.s_JITState],
+ [v_jitstate],
+ ts.s_JITState)
hop.r_s_popfirstarg()
args_hs = hop.args_s[:]
# fixed is always false here
@@ -227,11 +234,15 @@
args_v = hop.inputargs(*args_r)
fnptr = self.getcallable(graph)
self.timeshifter.schedule_graph(graph)
- v_jitstate = hop.llops.getjitstate()
- args_v.insert(0, v_jitstate)
+ v_builder = hop.llops.getcurbuilder()
+ args_v.insert(0, v_builder)
args_v.insert(0, hop.llops.genconst(fnptr))
- v = hop.genop('direct_call', args_v, hop.r_result.lowleveltype)
- return v
+ v = hop.genop('direct_call', args_v,
+ resulttype = ts.r_ResidualGraphBuilder.lowleveltype)
+
+ c_name = inputconst(lltype.Void, 'inst_valuebox')
+ return hop.genop('getfield', [v, c_name],
+ resulttype = hop.r_result.lowleveltype)
def handle_highlevel_operation(self, fnobj, hop):
from pypy.jit.timeshifter.oop import OopSpecDesc, Index
@@ -320,12 +331,19 @@
assert self.originalblock is not None
return self.timeshifter.block2jitstate[self.originalblock]
+ def getcurbuilder(self):
+ v_jitstate = self.getjitstate()
+ c_name = inputconst(lltype.Void, 'inst_curbuilder')
+ return self.genop('getfield', [v_jitstate, c_name],
+ self.timeshifter.r_ResidualGraphBuilder.lowleveltype)
+
# ____________________________________________________________
class __extend__(pairtype(HintTypeSystem, hintmodel.SomeLLAbstractConstant)):
def rtyper_makerepr((ts, hs_c), hrtyper):
- if hs_c.is_fixed() or hs_c.eager_concrete:
+ if (hs_c.is_fixed() or hs_c.eager_concrete or
+ hs_c.concretetype is lltype.Void):
return hrtyper.getgreenrepr(hs_c.concretetype)
else:
return hrtyper.getredrepr(hs_c.concretetype)
Modified: pypy/dist/pypy/jit/timeshifter/test/test_timeshift.py
==============================================================================
--- pypy/dist/pypy/jit/timeshifter/test/test_timeshift.py (original)
+++ pypy/dist/pypy/jit/timeshifter/test/test_timeshift.py Mon Aug 21 17:32:57 2006
@@ -562,7 +562,6 @@
assert insns == {'int_is_true': 1, 'int_add': 1}
def test_call_simple():
- py.test.skip("in-progress")
def ll_add_one(x):
return x + 1
def ll_function(y):
Modified: pypy/dist/pypy/jit/timeshifter/timeshift.py
==============================================================================
--- pypy/dist/pypy/jit/timeshifter/timeshift.py (original)
+++ pypy/dist/pypy/jit/timeshifter/timeshift.py Mon Aug 21 17:32:57 2006
@@ -22,8 +22,6 @@
self.rtyper = rtyper
self.hrtyper = HintRTyper(hannotator, self)
self.latestexitindex = -1
- self.block2jitstate = {}
- self.return_cache = None
self.annhelper = annlowlevel.MixLevelHelperAnnotator(rtyper)
self.s_ResidualGraphBuilder, self.r_ResidualGraphBuilder = self.s_r_instanceof(ResidualGraphBuilder)
@@ -161,9 +159,12 @@
self.annhelper.finish()
def timeshift_graph(self, graph):
+ #print 'timeshift_graph START', graph
self.graph = graph
self.dispatch_to = []
self.statecaches = []
+ self.block2jitstate = {}
+ self.return_cache = None
entering_links = flowmodel.mkentrymap(graph)
originalblocks = list(graph.iterblocks())
@@ -219,6 +220,7 @@
annmodel.s_None)
self.insert_start_setup()
+ #print 'timeshift_graph END', graph
def insert_start_setup(self):
newstartblock = self.insert_before_block(self.graph.startblock, None, closeblock=True)
More information about the Pypy-commit
mailing list