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