Author: Anton Gulenko <[email protected]>
Branch: storage
Changeset: r877:307b424d7195
Date: 2014-07-09 13:59 +0200
http://bitbucket.org/pypy/lang-smalltalk/changeset/307b424d7195/
Log: Fixed the suppress_process_switch hack, using an array to store the
flag, making it modifiable.
diff --git a/spyvm/interpreter.py b/spyvm/interpreter.py
--- a/spyvm/interpreter.py
+++ b/spyvm/interpreter.py
@@ -86,7 +86,7 @@
s_new_context = s_sender
s_new_context.push(nlr.value)
except ProcessSwitch, p:
- assert not self.space.suppress_process_switch, "ProcessSwitch
should be disabled..."
+ assert not self.space.suppress_process_switch[0],
"ProcessSwitch should be disabled..."
if self.trace:
print "====== Switched process from: %s" %
s_new_context.short_str()
print "====== to: %s " % p.s_new_context.short_str()
diff --git a/spyvm/objspace.py b/spyvm/objspace.py
--- a/spyvm/objspace.py
+++ b/spyvm/objspace.py
@@ -23,7 +23,7 @@
self.make_bootstrap_objects()
# This is a hack; see compile_code() in targetimageloadingsmalltalk.py
- self.suppress_process_switch = False
+ self.suppress_process_switch = [False]
def find_executable(self, executable):
if os.sep in executable or (os.name == "nt" and ":" in executable):
diff --git a/spyvm/wrapper.py b/spyvm/wrapper.py
--- a/spyvm/wrapper.py
+++ b/spyvm/wrapper.py
@@ -93,7 +93,7 @@
active_priority = active_process.priority()
priority = self.priority()
if priority > active_priority:
- if not self.space.suppress_process_switch:
+ if not self.space.suppress_process_switch[0]:
active_process.deactivate(s_current_frame)
self.activate()
else:
@@ -104,7 +104,7 @@
def suspend(self, s_current_frame):
if self.is_active_process():
- if not self.space.suppress_process_switch:
+ if not self.space.suppress_process_switch[0]:
assert self.my_list().is_nil(self.space)
w_process =
scheduler(self.space).pop_highest_priority_process()
self.deactivate(s_current_frame, put_to_sleep=False)
diff --git a/targetimageloadingsmalltalk.py b/targetimageloadingsmalltalk.py
--- a/targetimageloadingsmalltalk.py
+++ b/targetimageloadingsmalltalk.py
@@ -178,7 +178,7 @@
# registered (primitive 136 not called), so the idle process will
never be left once it is entered.
# TODO - Find a way to cleanly initialize the image, without
executing the active_context of the image.
# Instead, we want to execute our own context. Then remove this
flag (and all references to it)
- interp.space.suppress_process_switch = True
+ interp.space.suppress_process_switch[0] = True
w_result = interp.perform(
w_receiver_class,
"compile:classified:notifying:",
@@ -187,7 +187,7 @@
space.w_nil]
)
finally:
- interp.space.suppress_process_switch = False
+ interp.space.suppress_process_switch[0] = False
# TODO - is this expected in every image?
if not isinstance(w_result, model.W_BytesObject) or
w_result.as_string() != selector:
print "Compilation failed, unexpected result: %s" %
result_string(w_result)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit