[pypy-commit] lang-smalltalk storage: Renamed c_loop to loop_bytecodes. Added Exception as documentation.

anton_gulenko noreply at buildbot.pypy.org
Wed May 7 21:16:20 CEST 2014


Author: Anton Gulenko <anton.gulenko at googlemail.com>
Branch: storage
Changeset: r808:550297e474ff
Date: 2014-05-07 15:43 +0200
http://bitbucket.org/pypy/lang-smalltalk/changeset/550297e474ff/

Log:	Renamed c_loop to loop_bytecodes. Added Exception as documentation.

diff --git a/spyvm/interpreter.py b/spyvm/interpreter.py
--- a/spyvm/interpreter.py
+++ b/spyvm/interpreter.py
@@ -62,14 +62,15 @@
         self.trace_proxy = False
 
     def loop(self, w_active_context):
-        # just a trampoline for the actual loop implemented in c_loop
+        # just a trampoline for the actual loop implemented in loop_bytecodes
         s_new_context = w_active_context.as_context_get_shadow(self.space)
         while True:
             assert self.remaining_stack_depth == self.max_stack_depth
-            # Need to save s_sender, c_loop will nil this on return
+            # Need to save s_sender, loop_bytecodes will nil this on return
             s_sender = s_new_context.s_sender()
             try:
-                s_new_context = self.c_loop(s_new_context)
+                self.loop_bytecodes(s_new_context)
+                raise Exception("loop_bytecodes left without raising...")
             except StackOverflow, e:
                 s_new_context = e.s_context
             except Return, nlr:
@@ -86,7 +87,7 @@
                     print "====== Switch from: %s to: %s ======" % (s_new_context.short_str(), p.s_new_context.short_str())
                 s_new_context = p.s_new_context
 
-    def c_loop(self, s_context, may_context_switch=True):
+    def loop_bytecodes(self, s_context, may_context_switch=True):
         old_pc = 0
         if not jit.we_are_jitted() and may_context_switch:
             self.quick_check_for_interrupt(s_context)
@@ -113,17 +114,17 @@
                     raise nlr
                 else:
                     s_context.push(nlr.value)
-
+    
+    # This is just a wrapper around loop_bytecodes that handles the remaining_stack_depth mechanism
     def stack_frame(self, s_new_frame, may_context_switch=True):
         if self.remaining_stack_depth <= 1:
             raise StackOverflow(s_new_frame)
 
         self.remaining_stack_depth -= 1
         try:
-            retval = self.c_loop(s_new_frame, may_context_switch)
+            self.loop_bytecodes(s_new_frame, may_context_switch)
         finally:
             self.remaining_stack_depth += 1
-        return retval
 
     # ============== Methods for handling user interrupts ==============
     
diff --git a/spyvm/test/test_interpreter.py b/spyvm/test/test_interpreter.py
--- a/spyvm/test/test_interpreter.py
+++ b/spyvm/test/test_interpreter.py
@@ -1009,7 +1009,7 @@
     try:
         interp = TestInterpreter(space, image_name="", max_stack_depth=10)
         interp._loop = True
-        interp.c_loop(w_method.create_frame(space, space.wrap_int(0), []))
+        interp.loop_bytecodes(w_method.create_frame(space, space.wrap_int(0), []))
     except interpreter.StackOverflow, e:
         assert isinstance(e.s_context, shadow.MethodContextShadow)
     except interpreter.ReturnFromTopLevel, e:
@@ -1019,7 +1019,7 @@
     def stack_frame(self, w_frame, may_interrupt=True):
         stack_depth = self.max_stack_depth - self.remaining_stack_depth
         for i in range(stack_depth + 1):
-            assert sys._getframe(4 + i * 6).f_code.co_name == 'c_loop'
+            assert sys._getframe(4 + i * 6).f_code.co_name == 'loop_bytecodes'
         assert sys._getframe(5 + stack_depth * 6).f_code.co_name == 'loop'
         return interpreter.Interpreter.stack_frame(self, w_frame)
 


More information about the pypy-commit mailing list