[pypy-commit] pypy framestate: move disassemble() to BytecodeReader
rlamy
noreply at buildbot.pypy.org
Mon Nov 24 17:29:44 CET 2014
Author: Ronan Lamy <ronan.lamy at gmail.com>
Branch: framestate
Changeset: r74675:2309d510d8bb
Date: 2014-05-10 20:30 +0100
http://bitbucket.org/pypy/pypy/changeset/2309d510d8bb/
Log: move disassemble() to BytecodeReader
diff --git a/rpython/flowspace/bytecode.py b/rpython/flowspace/bytecode.py
--- a/rpython/flowspace/bytecode.py
+++ b/rpython/flowspace/bytecode.py
@@ -58,25 +58,9 @@
self.signature = cpython_code_signature(self)
self.build_flow()
- def disassemble(self):
- contents = []
- offsets = []
- jumps = {}
- pos = 0
- i = 0
- while pos < len(self.co_code):
- offsets.append(pos)
- next_pos, op = self.decode(pos)
- contents.append(op)
- if op.has_jump():
- jumps[pos] = op.arg
- pos = next_pos
- i += 1
- return contents, offsets, jumps
-
def build_flow(self):
next_pos = pos = 0
- contents, offsets, jumps = self.disassemble()
+ contents, offsets, jumps = bc_reader.disassemble(self)
self.contents = zip(offsets, contents)
self.pos_index = dict((offset, i) for i, offset in enumerate(offsets))
# add end marker
@@ -109,8 +93,6 @@
next_offset = self.contents[i+1][0]
return next_offset, op
- def decode(self, offset):
- return bc_reader.read(self, offset)
class BytecodeReader(object):
def __init__(self, opnames):
@@ -129,6 +111,22 @@
cls.num = self.register_name(name, cls)
return cls
+ def disassemble(self, code):
+ contents = []
+ offsets = []
+ jumps = {}
+ pos = 0
+ i = 0
+ while pos < len(code.co_code):
+ offsets.append(pos)
+ next_pos, op = self.read(code, pos)
+ contents.append(op)
+ if op.has_jump():
+ jumps[pos] = op.arg
+ pos = next_pos
+ i += 1
+ return contents, offsets, jumps
+
def read(self, code, offset):
"""
Decode the instruction starting at position ``offset``.
More information about the pypy-commit
mailing list