Source

pypy / pypy / jit / metainterp / optimize.py

Author Commit Message Labels Comments Date
Armin Rigo
Instead of storing the memo on the single global instance of Logger, create a new instance of LogOperations for each loop that we want to log, and attach it to the logged loop. This allows us to print later an operation from the loop, without the need for the global 'memo' field which breaks test_free_object.
Branches
jitypes2
Maciej Fijalkowski
Implement "enable_opts" as a replacement for various ad-hoc enabling/disabling of optimizations. Export this at applevel as --jit enable_opts=...:...:...
Branches
enable-opts
Hakan Ardo
This should prevent the short preamble from beeing inlined if the virtuals needed to call the loop cannot be virtuals (ie some pointer to them have escaped). Instead the loop will be retraced and a new specialized version generated. If this too fails, jump to the preamble instead. Also short preambles are nolonger generated for cases with virtuals in the arguments with members that are constants. To handle that case we need to also check that the values of those constants are the same at the end of the bridge.
Hakan Ardo
Reordering the snapshot boxes correctly
Branches
jit-short-preamble
Hakan Ardo
When possible, create a short preamble as the operations in the preamble but not in the loop, making this short preamble followed by one iteration of the loop equivalent to the original preamble. The short preamble is stored in the loop_token and inlined at the end of each bridge, which then can jump to the loop directly instead of jumping to the preamble. When it was not possible to create such a short preamble the bridge will fall back to jumping to the original preamble. Bridges inherits virtuals from the loop and this approach now allows them to stay virtual and part of the inlined short preamble to be optimized away. However other loop invariant operations are currently not inherited which results in them being recalculated at the end of each guard.
Branches
jit-unroll-loops
Armin Rigo
Fix? This file is really the same as optimize_nopspec right now.
Branches
jit-unroll-loops
Carl Friedrich Bolz
kill perfect specialization and specnodes
Branches
jit-unroll-loops
Amaury Forgeot d'Arc
Merge from trunk
Branches
fast-forward
Samuele Pedroni
move the loggers to the static data
Armin Rigo
Merge the 'kill-jumptarget' branch. Removes jumptarget from JUMP operations, replacing it with a descr. This descr is still the LoopToken, now unified with the executable_token.
Samuele Pedroni
kill the specialize options, unused, later we really want to unify simple and full optimizing
Armin Rigo
(pedronis, arigo) Fix the logging of operations.
Armin Rigo
Merge the optimize-novaluedep branch: rewrite the optimize*.py files so that it no longer needs to read the .value stored in Boxes. Apart from cleaning up things, this allows a couple of rare bugs to be fixed.
Maciej Fijalkowski
Change logger to use oparser storage type. Additionally add a viewer for that and make everyone adapt.
Armin Rigo
Push and pull all over the place to get the logger class to optimize.py.
Armin Rigo
An RPython-friendly way to dump a loop.
Armin Rigo
Merge the pyjitpl5-optimize4 branch: a clean-up and rewrite of optimize.py.
Armin Rigo
Revert antocuni's optimizer_name (r65918, r65920, r65921). It has no chance to work because space.wrap(pypyjitdriver.optimizer_name) just returns a constant before even seeing the jit. Will do something much simpler for now.
Antonio Cuni
add a way to get the optimize*.py used from the compiled pypy
Armin Rigo
Remove the 'guard_nonvirtualized' operation. We'll introduce a different way to do this...
Maciej Fijalkowski
Copy -experiments to pyjitpl5 at point where it made sense
Maciej Fijalkowski
A pretty experimental checkin. Basically I'm toying with the idea of extending args of virtualizables when we discover new nodes in bridges.
Maciej Fijalkowski
A test and a fix
Armin Rigo
Fix optimize.py to call getnode() on all arguments, just to make sure the nodes are created.
Antonio Cuni
emit ootype's new as NEW_WITH_VTABLE, so that optimize.py can correctly recognize it. This fixes a few tests in test_send and test_exception
Armin Rigo
Add an assert. (Lots of fishing in the graph viewer...)
Armin Rigo
Generate code for leaving a function too.
Maciej Fijalkowski
some translation fixes
Maciej Fijalkowski
fix translation
Armin Rigo
Add a warning style of comment.
  1. Prev
  2. 1
  3. 2
  4. 3
  5. Next