Author: Eric Seckler <[email protected]>
Branch:
Changeset: r751:81165d5663ee
Date: 2014-01-14 16:13 +0100
http://bitbucket.org/pypy/lang-smalltalk/changeset/81165d5663ee/
Log: moar stm
diff --git a/spyvm/interpreter.py b/spyvm/interpreter.py
--- a/spyvm/interpreter.py
+++ b/spyvm/interpreter.py
@@ -135,7 +135,7 @@
jit_driver = jit.JitDriver(
greens=[],
reds=['pc', 's_context', 'self', 'method'],
- virtualizables=['s_context'],
+ # virtualizables=['s_context'],
stm_do_transaction_breaks=True
# get_printable_location=get_printable_location
)
@@ -238,9 +238,9 @@
if jit.we_are_jitted():
self.quick_check_for_interrupt(s_context,
dec=self._get_adapted_tick_counter())
- self.jit_driver.can_enter_jit(
- pc=pc, self=self, method=method,
- s_context=s_context)
+ #self.jit_driver.can_enter_jit(
+ # pc=pc, self=self, method=method,
+ # s_context=s_context)
old_pc = pc
# STM-ONLY JITDRIVER!
diff --git a/spyvm/primitives.py b/spyvm/primitives.py
--- a/spyvm/primitives.py
+++ b/spyvm/primitives.py
@@ -522,38 +522,38 @@
return hasattr(rgc, "stm_is_enabled") and rgc.stm_is_enabled()
USES_STM = stm_enabled()
-if USES_STM:
- def get_instances_array(space, s_frame, w_class):
- return []
-else:
- def get_instances_array(space, s_frame, w_class):
- # This primitive returns some instance of the class on the stack.
- # Not sure quite how to do this; maintain a weak list of all
- # existing instances or something?
- match_w = s_frame.instances_array(w_class)
- if match_w is None:
- match_w = []
- from rpython.rlib import rgc
-
- roots = [gcref for gcref in rgc.get_rpy_roots() if gcref]
- pending = roots[:]
- while pending:
- gcref = pending.pop()
- if not rgc.get_gcflag_extra(gcref):
- rgc.toggle_gcflag_extra(gcref)
- w_obj = rgc.try_cast_gcref_to_instance(model.W_Object,
gcref)
- if (w_obj is not None and w_obj.has_class()
- and w_obj.getclass(space) is w_class):
- match_w.append(w_obj)
- pending.extend(rgc.get_rpy_referents(gcref))
-
- while roots:
- gcref = roots.pop()
- if rgc.get_gcflag_extra(gcref):
- rgc.toggle_gcflag_extra(gcref)
- roots.extend(rgc.get_rpy_referents(gcref))
- s_frame.store_instances_array(w_class, match_w)
- return match_w
+#if USES_STM:
+def get_instances_array(space, s_frame, w_class):
+ return []
+#else:
+# def get_instances_array(space, s_frame, w_class):
+# # This primitive returns some instance of the class on the stack.
+# # Not sure quite how to do this; maintain a weak list of all
+# # existing instances or something?
+# match_w = s_frame.instances_array(w_class)
+# if match_w is None:
+# match_w = []
+# from rpython.rlib import rgc
+#
+# roots = [gcref for gcref in rgc.get_rpy_roots() if gcref]
+# pending = roots[:]
+# while pending:
+# gcref = pending.pop()
+# if not rgc.get_gcflag_extra(gcref):
+# rgc.toggle_gcflag_extra(gcref)
+# w_obj = rgc.try_cast_gcref_to_instance(model.W_Object, gcref)
+# if (w_obj is not None and w_obj.has_class()
+# and w_obj.getclass(space) is w_class):
+# match_w.append(w_obj)
+# pending.extend(rgc.get_rpy_referents(gcref))
+#
+# while roots:
+# gcref = roots.pop()
+# if rgc.get_gcflag_extra(gcref):
+# rgc.toggle_gcflag_extra(gcref)
+# roots.extend(rgc.get_rpy_referents(gcref))
+# s_frame.store_instances_array(w_class, match_w)
+# return match_w
@expose_primitive(SOME_INSTANCE, unwrap_spec=[object])
def func(interp, s_frame, w_class):
diff --git a/targetimageloadingsmalltalk.py b/targetimageloadingsmalltalk.py
--- a/targetimageloadingsmalltalk.py
+++ b/targetimageloadingsmalltalk.py
@@ -59,7 +59,7 @@
except error.Exit, e:
print e.msg
-def _run_code(interp, code, as_benchmark=False):
+def _run_code(interp, code, as_benchmark=False, use_stm=False):
import time
selector = "codeTest%d" % int(time.time())
try:
@@ -93,7 +93,7 @@
print w_result.as_repr_string().replace('\r', '\n')
return 0
else:
- return _run_benchmark(interp, 0, selector, "")
+ return _run_benchmark(interp, 0, selector, "", use_stm)
space = objspace.ObjSpace()
@@ -208,7 +208,7 @@
print "Running Benchmark"
return _run_benchmark(interp, number, benchmark, stringarg, use_stm)
elif code is not None:
- return _run_code(interp, code, as_benchmark=as_benchmark)
+ return _run_code(interp, code, as_benchmark=as_benchmark,
use_stm=use_stm)
else:
print "Running Image"
_run_image(interp)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit