[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