Author: Lars Wassermann <[email protected]>
Branch: 
Changeset: r122:ea61821e69dd
Date: 2013-03-06 21:03 +0100
http://bitbucket.org/pypy/lang-smalltalk/changeset/ea61821e69dd/

Log:    removed the mark-variable by saving the needed information prior to
        calling c-loop

diff --git a/spyvm/interpreter.py b/spyvm/interpreter.py
--- a/spyvm/interpreter.py
+++ b/spyvm/interpreter.py
@@ -28,7 +28,7 @@
     _last_indent = ""
     jit_driver = jit.JitDriver(
         greens=['pc', 'self', 'method'],
-        reds=['mark', 's_context'],
+        reds=['s_context'],
         #virtualizables=['s_context'],
         get_printable_location=get_printable_location
     )
@@ -59,29 +59,31 @@
         self._loop = True
         s_new_context = w_active_context.as_context_get_shadow(self.space)
         while True:
+            s_sender = s_new_context.s_sender()
             try:
-                s_new_context = self.c_loop(s_new_context, mark=False)
+                s_new_context = self.c_loop(s_new_context)
             except StackOverflow, e:
                 self.remaining_stack_depth = self.max_stack_depth
                 s_new_context = e.s_context
             except Return, nlr:
                 while s_new_context is not nlr.s_target_context:
-                    s_new_context, _ = s_new_context.s_sender(), 
s_new_context.mark_returned()
+                    s_new_context.mark_returned()
+                    s_new_context = s_sender
                 s_new_context.push(nlr.value)
 
-    def c_loop(self, s_context, mark=True):
+    def c_loop(self, s_context):
         while True:
             pc = s_context._pc
             method = s_context.s_method()
 
             self.jit_driver.jit_merge_point(
                 pc=pc, self=self, method=method,
-                mark=mark, s_context=s_context)
+                s_context=s_context)
             try:
                 self.step(s_context)
             except Return, nlr:
                 if nlr.s_target_context is not s_context:
-                    if mark: s_context.mark_returned()
+                    s_context.mark_returned()
                     raise nlr
                 else:
                     s_context.push(nlr.value)
@@ -707,7 +709,6 @@
         code.append("    %sif %s:" % (prefix, cond, ))
         code.append("        return context.%s(self, bytecode)" % (entry[-1], 
))
         prefix = "el"
-    # code.append("bytecode_step_translated._always_inline_ = True")
     source = py.code.Source("\n".join(code))
     #print source
     miniglob = {}
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to