a354053541f478ff4f6dcba4dc7cc236e1718aaa |
|
25-Jan-2018 |
Mingyao Yang <mingyao@google.com> |
Revert "Revert "More general store elimination"" This reverts commit e97949e878bb364adadc167ac158ffc9660ce996. A store before an invocation that only has write side effects (true for some intrinsics) needs to be kept since the store isn't used to track the heap value anymore. Test: ART_TEST_OPTIMIZING=true ./test.py -j20 --host --run-test -b Test: using the device (marlin) with the CL. Bug: 35745320 Bug: 72440777 Change-Id: I0d1ce499008553e48ecca50f9ad94bb7c8c07583
|
5b7686259ea61d4742285e6bc831226a382cfd26 |
|
25-Jan-2018 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "More general store elimination" bug: 35745320 Got a few failures: bug: 72440777 bug: 72480435 This reverts commit aec4e73779e5034b6f84032a1649023c1333bad2. Change-Id: I32f0a80a590c4558bf252c2d426ee2e78a2296b7 (cherry picked from commit e97949e878bb364adadc167ac158ffc9660ce996)
|
e97949e878bb364adadc167ac158ffc9660ce996 |
|
25-Jan-2018 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "More general store elimination" bug: 35745320 Got a few failures: bug: 72440777 bug: 72480435 This reverts commit aec4e73779e5034b6f84032a1649023c1333bad2. Change-Id: I32f0a80a590c4558bf252c2d426ee2e78a2296b7
|
aec4e73779e5034b6f84032a1649023c1333bad2 |
|
08-Jan-2018 |
Mingyao Yang <mingyao@google.com> |
More general store elimination Expand store elimination to non-singleton instance fields and static fields. See the added comments in load_store_elimination.cc for more details on how LSE works now. Bug: 35745320 Test: ART_TEST_OPTIMIZING=true ./test.py -j20 --host --run-test -b Test: using the device (marlin) with the CL. Change-Id: I66ac4eacea593c3ee843ed5e26cdcfe2135947f6
|
79d8fa7c52c1810d4618c9bd1d43994be5abb53d |
|
18-Apr-2017 |
Igor Murashkin <iam@google.com> |
optimizing: Build HConstructorFence for HNewArray/HNewInstance nodes Also fixes: * LSE, code_sinking to keep optimizing new-instance if it did so before * Various tests to expect constructor fences after new-instance Sidenote: new-instance String does not get a ConstructorFence; the special StringFactory calls are assumed to be self-fencing. Metric changes on go/lem: * CodeSize -0.262% in ART-Compile (ARMv8) * RunTime -0.747% for all (linux-armv8) (No changes expected to x86, constructor fences are no-op). The RunTime regression is temporary until art_quick_alloc_* entrypoints have their DMBs removed in a follow up CL. Test: art/test.py Bug: 36656456 Change-Id: I6a936a6e51c623e1c6b5b22eee5c3c72bebbed35
|
b813ca14be33f7db8b7049c3b08a1eb776f25d1b |
|
16-Feb-2017 |
Nicolas Geoffray <ngeoffray@google.com> |
Implement code sinking. Small example of what the optimization does: Object o = new Object(); if (test) { throw new Error(o.toString()); } will be turned into (note that the first user of 'o' is the 'new Error' allocation which has 'o' in its environment): if (test) { Object o = new Obect(); throw new Error(o.toString()); } There are other examples in 639-checker-code-sinking. Ritz individual benchmarks improve on art-jit-cc from 5% (EvaluateComplexFormulas) to 23% (MoveFunctionColumn) on all platforms. Test: 639-checker-code-sinking Test: test-art-host Test: borg job run Test: libcore + jdwp bug:35634932 bug:30933338 Change-Id: Ib99c00c93fe76ffffb17afffb5a0e30a14310652
|