[pypy-svn] r67886 - pypy/trunk/pypy/jit/metainterp/test
arigo at codespeak.net
arigo at codespeak.net
Fri Sep 25 15:49:47 CEST 2009
Author: arigo
Date: Fri Sep 25 15:49:47 2009
New Revision: 67886
Added:
pypy/trunk/pypy/jit/metainterp/test/oparser.py.merge.tmp
- copied, changed from r67880, pypy/trunk/pypy/jit/metainterp/test/oparser.py
Log:
merging of svn+ssh://codespeak.net/svn/pypy/branch/remove-plfbid/pypy/jit/metainterp/test/oparser.py
revisions 67829 to 67880:
------------------------------------------------------------------------
r67862 | pedronis | 2009-09-24 11:40:52 +0200 (Thu, 24 Sep 2009) | 4 lines
(micke, pedronis) test_finish was failing, fix it by clarifying a bit more the role of AbstractFailDescr
and introducing a convenience BasicFailDescr
------------------------------------------------------------------------
r67859 | pedronis | 2009-09-23 20:24:08 +0200 (Wed, 23 Sep 2009) | 3 lines
(arigo, pedronis) getting somewhere in terms of a saner backend interface
------------------------------------------------------------------------
r67851 | pedronis | 2009-09-23 15:09:23 +0200 (Wed, 23 Sep 2009) | 3 lines
(arigo, pedronis) we don't keep loop around anymore, just loop tokens
------------------------------------------------------------------------
r67830 | arigo | 2009-09-21 18:11:04 +0200 (Mon, 21 Sep 2009) | 2 lines
A branch in which we try to remove PrepareLoopFromBridgeIsDisabled.
------------------------------------------------------------------------
Copied: pypy/trunk/pypy/jit/metainterp/test/oparser.py.merge.tmp (from r67880, pypy/trunk/pypy/jit/metainterp/test/oparser.py)
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/test/oparser.py (original)
+++ pypy/trunk/pypy/jit/metainterp/test/oparser.py.merge.tmp Fri Sep 25 15:49:47 2009
@@ -4,7 +4,7 @@
"""
from pypy.jit.metainterp.history import TreeLoop, BoxInt, ConstInt,\
- ConstAddr, ConstObj, ConstPtr, Box
+ ConstAddr, ConstObj, ConstPtr, Box, BasicFailDescr
from pypy.jit.metainterp.resoperation import rop, ResOperation
from pypy.jit.metainterp.typesystem import llhelper
from pypy.rpython.lltypesystem import lltype, llmemory
@@ -48,7 +48,7 @@
getattr(boxes, name).value = value
class OpParser(object):
- def __init__(self, descr, cpu, namespace, type_system, boxkinds, jump_targets):
+ def __init__(self, descr, cpu, namespace, type_system, boxkinds, jump_targets, invent_fail_descrs=True):
self.descr = descr
self.vars = {}
self.cpu = cpu
@@ -58,6 +58,7 @@
self.jumps = []
self.jump_targets = jump_targets
self._cache = namespace.setdefault('_CACHE_', {})
+ self.invent_fail_descrs = invent_fail_descrs
def box_for_var(self, elem):
try:
@@ -142,30 +143,32 @@
endnum = line.rfind(')')
if endnum == -1:
raise ParseError("invalid line: %s" % line)
- argspec = line[num + 1:endnum]
- if not argspec.strip():
- return opnum, [], None
- if opname == 'debug_merge_point':
- allargs = [argspec]
- else:
- allargs = argspec.split(",")
args = []
descr = None
- poss_descr = allargs[-1].strip()
- if poss_descr.startswith('descr='):
- if poss_descr.startswith('descr=<'):
- descr = None
+ argspec = line[num + 1:endnum]
+ if argspec.strip():
+ if opname == 'debug_merge_point':
+ allargs = [argspec]
else:
- descr = self.consts[poss_descr[len('descr='):]]
- allargs = allargs[:-1]
- for arg in allargs:
- arg = arg.strip()
- try:
- args.append(self.getvar(arg))
- except KeyError:
- raise ParseError("Unknown var: %s" % arg)
- if hasattr(descr, '_oparser_uses_descr'):
- descr._oparser_uses_descr(self, args)
+ allargs = argspec.split(",")
+
+ poss_descr = allargs[-1].strip()
+ if poss_descr.startswith('descr='):
+ if poss_descr.startswith('descr=<'):
+ descr = None
+ else:
+ descr = self.consts[poss_descr[len('descr='):]]
+ allargs = allargs[:-1]
+ for arg in allargs:
+ arg = arg.strip()
+ try:
+ args.append(self.getvar(arg))
+ except KeyError:
+ raise ParseError("Unknown var: %s" % arg)
+ if hasattr(descr, '_oparser_uses_descr'):
+ descr._oparser_uses_descr(self, args)
+ if opnum == rop.FAIL and descr is None and self.invent_fail_descrs:
+ descr = BasicFailDescr()
return opnum, args, descr
def parse_result_op(self, line):
@@ -221,11 +224,9 @@
raise ParseError("Wrong number of jump targets")
if self.jump_targets is None:
for jump in self.jumps:
- jump.jump_target = loop
+ jump.jump_target = None
else:
for jump, jump_target in zip(self.jumps, self.jump_targets):
- if jump_target == 'self':
- jump_target = loop
jump.jump_target = jump_target
loop.operations = ops
loop.inputargs = inpargs
@@ -260,10 +261,14 @@
return base_indent, inpargs
def parse(descr, cpu=None, namespace=None, type_system='lltype',
- boxkinds=None, jump_targets=None):
+ boxkinds=None, jump_targets=None, invent_fail_descrs=True):
if namespace is None:
namespace = {}
- return OpParser(descr, cpu, namespace, type_system, boxkinds, jump_targets).parse()
+ return OpParser(descr, cpu, namespace, type_system, boxkinds, jump_targets, invent_fail_descrs).parse()
+
+def pure_parse(*args, **kwds):
+ kwds['invent_fail_descrs'] = False
+ return parse(*args, **kwds)
def _box_counter_more_than(s):
if s.isdigit():
More information about the Pypy-commit
mailing list