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

Reply via email to