aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Backed out changeset f1c2880a6b49Carl Friedrich Bolz-Tereick2021-02-151-80/+0
| | | | (some test fails weirdly, trying to see what caused it)
* better reasoning about upper bounds of or and xor, and about lower bounds of orCarl Friedrich Bolz-Tereick2020-04-291-0/+80
|
* make the JIT reason about int_invert and int_negCarl Friedrich Bolz-Tereick2020-04-261-0/+78
|
* optimize chains of longlong2float(float2longlong(x)) and vice versaCarl Friedrich Bolz-Tereick2021-01-311-0/+22
|
* Issue #3297Armin Rigo2020-09-101-0/+158
| | | | | | | A corner case that produces a bogus loop containing getarrayitem_gc with index -1, or with whatever index is given in the initial value of 'pos'. Negative values would segfault; positive values would allocate '8 * pos' bytes of memory however large the value is. Try to fix all these cases.
* Disable the work done on optimize_UINT_LT & friends, with explanationArmin Rigo2020-09-031-0/+14
|
* Some intbound checking around the 'uint' comparisonsArmin Rigo2020-09-021-0/+326
|
* Fixes for 560856d4f545: need to add an ARRAYMOVE operation in the jit, similarArmin Rigo2020-06-251-0/+15
| | | | to ARRAYCOPY
* Revert 18443d3a74d5: the branch int-test-is-zero is maybe a nice ideaArmin Rigo2019-11-171-30/+0
| | | | | | | | | but it doesn't really work. E.g. when we write "if a & 3:" at app-level then the value "a & 3" is anyway passed around as failargs. So this branch makes the CPU compute twice this value, basically. This is an almost-complete-revert: I'm keeping the new TEST_xx instructions in rx86.py because the next time they're needed we'll already have them.
* Generate more compact code for bit tests using the TEST instruction:Armin Rigo2019-11-161-0/+30
| | | | | | | | | | | | i1 = int_and(i0, 7); i2 = int_is_zero(i1); guard_true(i2) => i2 = int_test_is_zero(i0, 7); guard_true(i2) The more compact version doesn't need to allocate a register, copy a value there, AND a constant, and then CMP the result with zero. Instead a single TEST instruction suffices.
* kill BaseTest._do_optimize_loop()Ronan Lamy2019-05-171-2/+3
|
* simplify metainterp_sd creation in optimizeopt testsRonan Lamy2019-05-151-2/+2
|
* LoopCompileData.optimize() is only called with unroll=True; simplify ↵Ronan Lamy2019-04-131-3/+1
| | | | optimize() and optimize_trace()
* Pull use_unrolling() call out of optimize_trace()Ronan Lamy2019-04-131-2/+3
|
* Simplify LLtypeMixinRonan Lamy2019-04-111-1/+6
|
* code cleanup in optimizeopt, simplify test class structureRonan Lamy2019-04-101-22/+13
|
* Redo d7e235d0e787 with the missing get_box_replacement() callsArmin Rigo2018-12-061-1/+0
|
* It turns out re-enabling this optimization shows a failure in the metainterpArmin Rigo2018-12-051-0/+1
| | | | tests. Need to investigate (but later).
* Re-enable this intbounds optimization. Found that tracking resops that areArmin Rigo2018-12-051-1/+0
| | | | | *not* in the current loop is hard and error-prone; instead, track resops that *are* in the current loop, and it's OK if we occasionally miss some.
* fix an oversight: also deserialize bridge optimizer knowledge for bridges thatCarl Friedrich Bolz-Tereick2018-02-221-2/+2
| | | | | end with finish. Previously only those that used unroll (ie those that end with a jump) did that, which made finish bridges less good.
* some passing cases, and comments how they workCarl Friedrich Bolz-Tereick2017-10-111-0/+49
|
* optimize this sequence:Carl Friedrich Bolz-Tereick2017-08-281-1/+16
| | | | | | | | | i2 = int_is_zero(i0) guard_false(i2) i1 = int_is_true(i0) guard_true(i1) (happens quite often in rpython list code, it seems)
* a small improvement to getarrayitem cachingCarl Friedrich Bolz2017-08-021-0/+40
| | | | | when invalidating getarrayitem caches due to a setarrayitem, don't invalidate items that are at other indexes.
* Another case where we read .upper without checking .has_upperArmin Rigo2017-04-041-0/+45
|
* Issue #2528: test and fix for int_and() propagating wrong boundsArmin Rigo2017-04-041-0/+20
|
* I think we no longer need the 'create_ops' flag. It was added asArmin Rigo2017-02-251-0/+15
| | | | | | | replacement for a limitation of the previous state of the world, but there is no reason to keep that logic. Added a test that shows better results without it (it's a case I've seen in pypy, and the removed 'strlen' means a guard afterwards will be dropped)
* Propagate debug.ll_assert_not_none() through the JIT, using the sameArmin Rigo2016-12-171-0/+13
| | | | | technique as jit.record_exact_class(). If we use it a bit inside PyPy it could remove a good number of guard_nonnull or guard_nonnull_class.
* Reintroduce some JIT support for int_mod(). Add rarithmetic.int_c_mod().Armin Rigo2016-06-081-0/+19
|
* Reintroduce some JIT support for int_floordiv() in a way that makesArmin Rigo2016-06-081-0/+41
| | | | | it at least half efficient. Add rarithmetic.int_c_div() as an explicit interface.
* Handle modulo-by-constant tooArmin Rigo2016-05-271-13/+16
|
* Division by a constant: can be replaced with some carefully-computedArmin Rigo2016-05-271-6/+10
| | | | multiplication-and-keep-the-high-word.
* tweaksArmin Rigo2016-05-271-15/+0
|
* Re-enable some optimizations for int_py_div and int_py_modArmin Rigo2016-05-261-15/+41
|
* Finish 1ad01ba1173b for the front-endArmin Rigo2016-05-101-0/+3
|
* fix fix fixArmin Rigo2016-05-081-62/+31
|
* fix more testsfijal2016-03-251-1/+1
|
* whack enough tests to passfijal2016-03-231-4/+2
|
* fix some testsfijal2016-03-211-1/+1
|
* start fighting with unrolling, make most of the tests pass in ↵fijal2016-03-071-3/+1
| | | | test_optimizeopt by simplifying what CompileData stores
* pass the first tests of optimizeopt, yay!fijal2016-03-041-1/+1
|
* write snapshot iteratorfijal2016-03-041-63/+8
|
* merge defaultfijal2016-03-011-1/+1
|\
| * fix some testsfijal2016-02-231-1/+1
| |
* | merge defaultfijal2016-02-141-435/+23
|\|
| * Merge with defaultSpenser Andrew Bauman2016-01-081-419/+8
| |\
| | * review the skips in test_optimizebasicCarl Friedrich Bolz2016-01-081-419/+8
| | | | | | | | | | | | | | | | | | - killed the really old tests that relied on optimizefindnode machinery - fixed and enabled a few - the remaining ones look actually useful
| * | Initial merge attemptSpenser Andrew Bauman2015-12-221-9/+13
| |\|
| * | merge defaultCarl Friedrich Bolz2015-11-231-1/+1
| |\ \
| * | | Remove GETFIELD_PURE_* operations from the JITSpenser Bauman2015-10-161-6/+6
| | | | | | | | | | | | | | | | - That information is now entirely encoded in the field descriptor
| * | | fix some more test casesSpenser Bauman2015-10-081-2/+2
| | | |