Author: Anton Gulenko <[email protected]>
Branch: storage
Changeset: r816:5654d57f2f04
Date: 2014-05-12 13:04 +0200
http://bitbucket.org/pypy/lang-smalltalk/changeset/5654d57f2f04/

Log:    Moved the step-method inside the interpreter like a regular method.

diff --git a/spyvm/interpreter.py b/spyvm/interpreter.py
--- a/spyvm/interpreter.py
+++ b/spyvm/interpreter.py
@@ -126,7 +126,20 @@
             self.loop_bytecodes(s_new_frame, may_context_switch)
         finally:
             self.remaining_stack_depth += 1
-
+       
+       def step(self, context):
+               bytecode = context.fetch_next_bytecode()
+               for entry in UNROLLING_BYTECODE_RANGES:
+                       if len(entry) == 2:
+                               bc, methname = entry
+                               if bytecode == bc:
+                                       return getattr(context, methname)(self, 
bytecode)
+                       else:
+                               start, stop, methname = entry
+                               if start <= bytecode <= stop:
+                                       return getattr(context, methname)(self, 
bytecode)
+               assert 0, "unreachable"
+       
     # ============== Methods for handling user interrupts ==============
     
     def jitted_check_for_interrupt(self, s_frame):
@@ -820,6 +833,8 @@
             (208, 255, "sendLiteralSelectorBytecode"),
             ]
 
+from rpython.rlib.unroll import unrolling_iterable
+UNROLLING_BYTECODE_RANGES = unrolling_iterable(BYTECODE_RANGES)
 
 def initialize_bytecode_names():
     result = [None] * 256
@@ -849,23 +864,6 @@
 # this table is only used for creating named bytecodes in tests and printing
 BYTECODE_TABLE = initialize_bytecode_table()
 
-from rpython.rlib.unroll import unrolling_iterable
-unrolling_ranges = unrolling_iterable(BYTECODE_RANGES)
-def bytecode_step_translated(self, context):
-    bytecode = context.fetch_next_bytecode()
-    for entry in unrolling_ranges:
-        if len(entry) == 2:
-            bc, methname = entry
-            if bytecode == bc:
-                return getattr(context, methname)(self, bytecode)
-        else:
-            start, stop, methname = entry
-            if start <= bytecode <= stop:
-                return getattr(context, methname)(self, bytecode)
-    assert 0, "unreachable"
-
-Interpreter.step = bytecode_step_translated
-
 # Smalltalk debugging facilities, patching Interpreter and ContextPartShadow
 # in order to enable tracing/jumping for message sends etc.
 def debugging():
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to