Author: Ronan Lamy <[email protected]>
Branch: framestate
Changeset: r74702:ac3ec0b9b518
Date: 2014-11-24 02:12 +0000
http://bitbucket.org/pypy/pypy/changeset/ac3ec0b9b518/
Log: make prepare_flow() methods explicit for flow opcodes
diff --git a/rpython/flowspace/bytecode.py b/rpython/flowspace/bytecode.py
--- a/rpython/flowspace/bytecode.py
+++ b/rpython/flowspace/bytecode.py
@@ -358,6 +358,15 @@
block.operations[-1] = SWITCH_BOOL(on_False, on_True, offset=self.offset)
block.set_exits([on_False, on_True])
+def prepare(self, reader):
+ block = reader.curr_block
+ block.operations.append(self)
+ if self.has_jump():
+ new_block = reader.new_block()
+ reader.enter_next_block(new_block)
+ reader.get_block_at(self.arg)
+POP_JUMP_IF_FALSE.prepare_flow = prepare
+
@flow_opcode
def POP_JUMP_IF_TRUE(self, reader):
block = reader.curr_block
@@ -367,6 +376,15 @@
block.operations[-1] = SWITCH_BOOL(on_False, on_True, offset=self.offset)
block.set_exits([on_False, on_True])
+def prepare(self, reader):
+ block = reader.curr_block
+ block.operations.append(self)
+ if self.has_jump():
+ new_block = reader.new_block()
+ reader.enter_next_block(new_block)
+ reader.get_block_at(self.arg)
+POP_JUMP_IF_TRUE.prepare_flow = prepare
+
class SWITCH_BOOL(BCInstruction):
def __init__(self, on_False, on_True, offset=-1):
self.on_False = on_False
@@ -387,6 +405,15 @@
target_block = reader.get_block_at(self.arg)
graph.add_jump(block, target_block)
+def prepare(self, reader):
+ block = reader.curr_block
+ block.operations.append(self)
+ if self.has_jump():
+ new_block = reader.new_block()
+ reader.enter_next_block(new_block)
+ reader.get_block_at(self.arg)
+JUMP_ABSOLUTE.prepare_flow = prepare
+
@flow_opcode
def JUMP_FORWARD(self, reader):
block = reader.curr_block
@@ -394,6 +421,15 @@
target_block = reader.get_block_at(self.arg)
graph.add_jump(block, target_block)
+def prepare(self, reader):
+ block = reader.curr_block
+ block.operations.append(self)
+ if self.has_jump():
+ new_block = reader.new_block()
+ reader.enter_next_block(new_block)
+ reader.get_block_at(self.arg)
+JUMP_FORWARD.prepare_flow = prepare
+
@bc_reader.register_opcode
class SETUP_EXCEPT(BCInstruction):
def eval(self, ctx):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit