[pypy-svn] pypy default: make parse() a classmethod of SimpleParser: this way, it's easier to subclass it
antocuni
commits-noreply at bitbucket.org
Fri Feb 25 14:58:53 CET 2011
Author: Antonio Cuni <anto.cuni at gmail.com>
Branch:
Changeset: r42280:7231f9b4e4d8
Date: 2011-02-25 14:39 +0100
http://bitbucket.org/pypy/pypy/changeset/7231f9b4e4d8/
Log: make parse() a classmethod of SimpleParser: this way, it's easier to
subclass it
diff --git a/pypy/module/pypyjit/test_pypy_c/model.py b/pypy/module/pypyjit/test_pypy_c/model.py
--- a/pypy/module/pypyjit/test_pypy_c/model.py
+++ b/pypy/module/pypyjit/test_pypy_c/model.py
@@ -1,7 +1,7 @@
import py
import re
import os.path
-from pypy.tool.jitlogparser.parser import parse, Function, TraceForOpcode
+from pypy.tool.jitlogparser.parser import SimpleParser, Function, TraceForOpcode
from pypy.tool.jitlogparser.storage import LoopStorage
@@ -40,7 +40,7 @@
class Log(object):
def __init__(self, func, rawtraces):
storage = LoopStorage()
- traces = [parse(rawtrace) for rawtrace in rawtraces]
+ traces = [SimpleParser.parse_from_input(rawtrace) for rawtrace in rawtraces]
traces = storage.reconnect_loops(traces)
self.loops = [LoopWithIds.from_trace(trace, storage) for trace in traces]
diff --git a/pypy/tool/jitlogparser/parser.py b/pypy/tool/jitlogparser/parser.py
--- a/pypy/tool/jitlogparser/parser.py
+++ b/pypy/tool/jitlogparser/parser.py
@@ -51,6 +51,11 @@
# factory method
Op = Op
+
+ @classmethod
+ def parse_from_input(cls, input):
+ return cls(input, None, {}, 'lltype', None,
+ nonstrict=True).parse()
def parse_args(self, opname, argspec):
if not argspec.strip():
@@ -73,6 +78,8 @@
def create_op(self, opnum, args, res, descr):
return self.Op(intern(opname[opnum].lower()), args, res, descr)
+
+
class NonCodeError(Exception):
pass
@@ -246,10 +253,6 @@
print >>out, " ", source
chunk.pretty_print(out)
-def parse(input):
- return SimpleParser(input, None, {}, 'lltype', None,
- nonstrict=True).parse()
-
def adjust_bridges(loop, bridges):
""" Slice given loop according to given bridges to follow. Returns a plain
diff --git a/pypy/tool/jitlogparser/test/test_parser.py b/pypy/tool/jitlogparser/test/test_parser.py
--- a/pypy/tool/jitlogparser/test/test_parser.py
+++ b/pypy/tool/jitlogparser/test/test_parser.py
@@ -1,10 +1,13 @@
from pypy.jit.metainterp.resoperation import ResOperation, rop
from pypy.jit.metainterp.history import ConstInt, Const
-from pypy.tool.jitlogparser.parser import parse, TraceForOpcode, Function,\
+from pypy.tool.jitlogparser.parser import SimpleParser, TraceForOpcode, Function,\
adjust_bridges
from pypy.tool.jitlogparser.storage import LoopStorage
import py
+def parse(input):
+ return SimpleParser.parse_from_input(input)
+
def test_parse():
ops = parse('''
diff --git a/pypy/module/pypyjit/test_pypy_c/test_model.py b/pypy/module/pypyjit/test_pypy_c/test_model.py
--- a/pypy/module/pypyjit/test_pypy_c/test_model.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_model.py
@@ -83,8 +83,8 @@
class TestOpMatcher(object):
def match(self, src1, src2):
- from pypy.tool.jitlogparser.parser import parse
- loop = parse(src1)
+ from pypy.tool.jitlogparser.parser import SimpleParser
+ loop = SimpleParser.parse_from_input(src1)
matcher = OpMatcher(loop.operations)
return matcher.match(src2)
More information about the Pypy-commit
mailing list