1. Pypy
  2. Untitled project
  3. pypy

Source

pypy / pypy / translator / backendopt / graphanalyze.py

Author Commit Message Date Builds
Alex Gaynor
Made the graphanalzyer code faster. It now requires less copying, and bails out sooner upon realizing that a result includes everything.
Alex Gaynor
Remove some dead imports.
Armin Rigo
Use a UnionFind to do the "right" thing algorithmically.
Armin Rigo
Trying to improve the performance of the GraphAnalyzer in case of recursion: clean up the various caches and consolidate them in a single DependencyTracker class.
Armin Rigo
Don't cache bogus results in case one of the analyze_direct_call() returned a non-cached result (because of 'seen').
Maciej Fijalkowski
Add yet another layer of caching. This is useful when we have to merge a few direct calls way too often
Armin Rigo
Translation fix
Armin Rigo
(fijal, arigo) Start an optimization step that helps the JIT: when writing fields to a fresh new structure, don't record them in the WriteAnalyzer.
Carl Friedrich Bolz
Found a bug in the graph analyzer's handling of recursive functions (!). It does not actually matter for the canraise analyzer (because of stackcheck insertion every recursive function can raise) but for more complex ones (e.g. the cancollect analyzer of the framework GCs) it might. Fix it by being a bit inefficient by not caching results too aggressively. In theory it would be necessary to do the full reflowing, abstract-interpretationy thing, but I didn't feel like adding that complexity here, and it should still not be slow in practise.
Carl Friedrich Bolz
Refactor the graph analyzer to be able to use a general lattice instead of just bools. I want to use it to find all the fields of structs that are modified by a graph.
Antonio Cuni
don't crash when trying to analyze recursive methods
Antonio Cuni
properly analyze oosends. This makes test_canraise.test_method and test_inline.test_list_iteration passing again.
Armin Rigo
(pedronis, arigo) Remove the unsafe_call operation because its C equivalent is really unsafe: passing less arguments than expected in a C call is not really valid and crashes on some platforms with some optimization levels. Whacked instead at the stackless transform to avoid the operation. The principle of conservation of mess means that we had to introduce another similar operation, though, 'adr_call'. Don't use…
Armin Rigo
(pedronis, arigo) Ouah! A whole evening of installing Electric Fence and then Valgrind to get at the roots of this problem. Trivial, as usual: the unsafe_call operation is not considered as a call, so the GC roots are not pushed/popped around it. Bouh.
Samuele Pedroni
bug in graphanalyzer
Michael Hudson-Doyle
don't stackless transform graphs that don't need it, and don't protect calls to such graphs.
Michael Hudson-Doyle
fix docstring.
Carl Friedrich Bolz
factor out class to analyze graphs in a generic way