History log of /art/test/639-checker-code-sinking/src/Main.java
Revision Date Author Comments
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