Author: Christian Tismer <tis...@stackless.com> Branch: win64-stage1 Changeset: r50001:422cff143e9b Date: 2011-11-30 03:54 +0100 http://bitbucket.org/pypy/pypy/changeset/422cff143e9b/
Log: Merge with default diff --git a/pypy/jit/codewriter/effectinfo.py b/pypy/jit/codewriter/effectinfo.py --- a/pypy/jit/codewriter/effectinfo.py +++ b/pypy/jit/codewriter/effectinfo.py @@ -241,12 +241,15 @@ return op.opname == 'jit_force_quasi_immutable' class RandomEffectsAnalyzer(BoolGraphAnalyzer): - def analyze_direct_call(self, graph, seen=None): - if hasattr(graph, "func") and hasattr(graph.func, "_ptr"): - if graph.func._ptr._obj.random_effects_on_gcobjs: + def analyze_external_call(self, op, seen=None): + try: + funcobj = op.args[0].value._obj + if funcobj.random_effects_on_gcobjs: return True - return super(RandomEffectsAnalyzer, self).analyze_direct_call(graph, - seen) + except (AttributeError, lltype.DelayedPointer): + pass + return super(RandomEffectsAnalyzer, self).analyze_external_call( + op, seen) def analyze_simple_operation(self, op, graphinfo): return False diff --git a/pypy/jit/codewriter/test/test_call.py b/pypy/jit/codewriter/test/test_call.py --- a/pypy/jit/codewriter/test/test_call.py +++ b/pypy/jit/codewriter/test/test_call.py @@ -192,3 +192,21 @@ [op] = block.operations call_descr = cc.getcalldescr(op) assert call_descr.extrainfo.has_random_effects() + +def test_random_effects_on_stacklet_switch(): + from pypy.jit.backend.llgraph.runner import LLtypeCPU + from pypy.rlib._rffi_stacklet import switch, thread_handle, handle + @jit.dont_look_inside + def f(): + switch(rffi.cast(thread_handle, 0), rffi.cast(handle, 0)) + + rtyper = support.annotate(f, []) + jitdriver_sd = FakeJitDriverSD(rtyper.annotator.translator.graphs[0]) + cc = CallControl(LLtypeCPU(rtyper), jitdrivers_sd=[jitdriver_sd]) + res = cc.find_all_graphs(FakePolicy()) + + [f_graph] = [x for x in res if x.func is f] + [block, _] = list(f_graph.iterblocks()) + op = block.operations[-1] + call_descr = cc.getcalldescr(op) + assert call_descr.extrainfo.has_random_effects() diff --git a/pypy/jit/codewriter/test/test_longlong.py b/pypy/jit/codewriter/test/test_longlong.py --- a/pypy/jit/codewriter/test/test_longlong.py +++ b/pypy/jit/codewriter/test/test_longlong.py @@ -78,7 +78,7 @@ oplist = tr.rewrite_operation(op) assert len(oplist) == 2 assert oplist[0].opname == 'residual_call_irf_f' - assert oplist[0].args[0].value == 'llong_from_int' + assert oplist[0].args[0].value == opname.split('_')[0]+'_from_int' assert oplist[0].args[1] == 'calldescr-84' assert list(oplist[0].args[2]) == [const(0)] assert list(oplist[0].args[3]) == [] diff --git a/pypy/jit/metainterp/gc.py b/pypy/jit/metainterp/gc.py --- a/pypy/jit/metainterp/gc.py +++ b/pypy/jit/metainterp/gc.py @@ -7,6 +7,9 @@ self.config = config +class GC_none(GcDescription): + malloc_zero_filled = True + class GC_boehm(GcDescription): malloc_zero_filled = True diff --git a/pypy/rlib/_stacklet_n_a.py b/pypy/rlib/_stacklet_n_a.py --- a/pypy/rlib/_stacklet_n_a.py +++ b/pypy/rlib/_stacklet_n_a.py @@ -1,4 +1,5 @@ from pypy.rlib import _rffi_stacklet as _c +from pypy.rlib import objectmodel, debug from pypy.rpython.annlowlevel import llhelper from pypy.tool.staticmethods import StaticMethods @@ -21,6 +22,9 @@ def destroy(thrd, h): _c.destroy(thrd._thrd, h) + if objectmodel.we_are_translated(): + debug.debug_print("not using a framework GC: " + "stacklet_destroy() may leak") is_empty_handle = _c.is_empty_handle diff --git a/pypy/translator/backendopt/constfold.py b/pypy/translator/backendopt/constfold.py --- a/pypy/translator/backendopt/constfold.py +++ b/pypy/translator/backendopt/constfold.py @@ -37,8 +37,9 @@ except (KeyboardInterrupt, SystemExit): raise except Exception, e: - log.WARNING('constant-folding %r:' % (spaceop,)) - log.WARNING(' %s: %s' % (e.__class__.__name__, e)) + pass # turn off reporting these as warnings: useless + #log.WARNING('constant-folding %r:' % (spaceop,)) + #log.WARNING(' %s: %s' % (e.__class__.__name__, e)) else: # success in folding this space operation if spaceop.opname in fixup_op_result: _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit