[pypy-svn] r35237 - in pypy/branch/jit-real-world/pypy/jit: codegen/llgraph timeshifter
arigo at codespeak.net
arigo at codespeak.net
Mon Dec 4 00:11:38 CET 2006
Author: arigo
Date: Mon Dec 4 00:11:35 2006
New Revision: 35237
Modified:
pypy/branch/jit-real-world/pypy/jit/codegen/llgraph/rgenop.py
pypy/branch/jit-real-world/pypy/jit/timeshifter/oop.py
pypy/branch/jit-real-world/pypy/jit/timeshifter/vdict.py
pypy/branch/jit-real-world/pypy/jit/timeshifter/vlist.py
Log:
(pedronis, arigo)
Bugs left behind by arigo in removing None arguments to genop_call().
Modified: pypy/branch/jit-real-world/pypy/jit/codegen/llgraph/rgenop.py
==============================================================================
--- pypy/branch/jit-real-world/pypy/jit/codegen/llgraph/rgenop.py (original)
+++ pypy/branch/jit-real-world/pypy/jit/codegen/llgraph/rgenop.py Mon Dec 4 00:11:35 2006
@@ -91,7 +91,7 @@
if ARGS_gv[i] is gv_Void:
gv_arg = gv_dummy_placeholder
else:
- gv_arg = LLVar(llimpl.cast(self.b, ARGS_gv[i].v, args_gv[j]))
+ gv_arg = LLVar(llimpl.cast(self.b, ARGS_gv[i].v, args_gv[j].v))
j += 1
vars_gv.append(gv_arg)
if gv_callable.is_const:
Modified: pypy/branch/jit-real-world/pypy/jit/timeshifter/oop.py
==============================================================================
--- pypy/branch/jit-real-world/pypy/jit/timeshifter/oop.py (original)
+++ pypy/branch/jit-real-world/pypy/jit/timeshifter/oop.py Mon Dec 4 00:11:35 2006
@@ -32,16 +32,16 @@
self.argtuple = eval(args, d)
# end of rather XXX'edly hackish parsing
- self.argpositions = []
+ arg_llsig_to_oopsig = {}
for i, obj in enumerate(self.argtuple):
if isinstance(obj, Index):
- self.argpositions.append(obj.n)
- else:
- self.argpositions.append(-1)
+ arg_llsig_to_oopsig[obj.n] = i
+ self.residualargsources = []
for i in range(nb_args):
ARGTYPE = FUNCTYPE.ARGS[i]
- assert (i in self.argpositions) == (ARGTYPE is not lltype.Void)
+ if ARGTYPE is not lltype.Void:
+ self.residualargsources.append(arg_llsig_to_oopsig[i])
RGenOp = hrtyper.RGenOp
self.args_gv = [None] * nb_args
@@ -70,7 +70,7 @@
else:
typename, method = operation_name.split('.')
method = 'oop_%s_%s' % (typename, method)
- SELFTYPE = FUNCTYPE.ARGS[self.argpositions[0]].TO
+ SELFTYPE = FUNCTYPE.ARGS[self.argtuple[0].n].TO
self.is_method = True
vmodule = __import__('pypy.jit.timeshifter.v%s' % (typename,),
@@ -87,15 +87,20 @@
if self.couldfold:
ARGS = FUNCTYPE.ARGS
- argpos = unrolling_iterable(enumerate(self.argpositions))
+ residualargsources = self.residualargsources
+ unrolling_ARGS = unrolling_iterable(ARGS)
def do_call(jitstate, argboxes):
- args = (None,)*nb_args
- for i, pos in argpos:
- if pos >= 0:
- T = ARGS[pos]
- v = rvalue.ll_getvalue(argboxes[i], T)
- args = args[:pos] +(v,) + args[pos+1:]
+ args = ()
+ j = 0
+ for ARG in unrolling_ARGS:
+ if ARG == lltype.Void:
+ v = None
+ else:
+ argsrc = residualargsources[j]
+ j = j + 1
+ v = rvalue.ll_getvalue(argboxes[argsrc], ARG)
+ args += (v,)
result = fnptr(*args)
if FUNCTYPE.RESULT == lltype.Void:
return None
@@ -110,15 +115,12 @@
def residual_call(self, jitstate, argboxes, deepfrozen=False):
builder = jitstate.curbuilder
- args_gv = self.args_gv[:]
- argpositions = self.argpositions
+ args_gv = []
fold = deepfrozen
- for i in range(len(argpositions)):
- pos = argpositions[i]
- if pos >= 0:
- gv_arg = argboxes[i].getgenvar(builder)
- args_gv[pos] = gv_arg
- fold &= gv_arg.is_const
+ for argsrc in self.residualargsources:
+ gv_arg = argboxes[argsrc].getgenvar(builder)
+ args_gv.append(gv_arg)
+ fold &= gv_arg.is_const
if fold:
try:
return self.do_call(jitstate, argboxes)
Modified: pypy/branch/jit-real-world/pypy/jit/timeshifter/vdict.py
==============================================================================
--- pypy/branch/jit-real-world/pypy/jit/timeshifter/vdict.py (original)
+++ pypy/branch/jit-real-world/pypy/jit/timeshifter/vdict.py Mon Dec 4 00:11:35 2006
@@ -203,7 +203,7 @@
typedesc = self.typedesc
items = self.getitems_and_makeempty(builder.rgenop)
- args_gv = [None]
+ args_gv = []
gv_dict = builder.genop_call(typedesc.tok_ll_newdict,
typedesc.gv_ll_newdict,
args_gv)
Modified: pypy/branch/jit-real-world/pypy/jit/timeshifter/vlist.py
==============================================================================
--- pypy/branch/jit-real-world/pypy/jit/timeshifter/vlist.py (original)
+++ pypy/branch/jit-real-world/pypy/jit/timeshifter/vlist.py Mon Dec 4 00:11:35 2006
@@ -112,7 +112,7 @@
boxes = self.item_boxes
self.item_boxes = None
- args_gv = [None, builder.rgenop.genconst(len(boxes))]
+ args_gv = [builder.rgenop.genconst(len(boxes))]
gv_list = builder.genop_call(typedesc.tok_ll_newlist,
typedesc.gv_ll_newlist,
args_gv)
More information about the Pypy-commit
mailing list