1d011d9306fd4ff57d72411775d415a86f5ed398 |
|
04-Apr-2016 |
Bill Buzbee <buzbee@google.com> |
Revert "Revert "Revert "Revert "ART: Improve JitProfile perf in arm/arm64 mterp"""" Bug: 28081559 This reverts commit 961ea9fe42edcc2c57469bf451d1ca421da5cd59. Change-Id: I98a5bb8112646706ae7bd73bf6393cb956466be3
|
961ea9fe42edcc2c57469bf451d1ca421da5cd59 |
|
01-Apr-2016 |
Hiroshi Yamauchi <yamauchi@google.com> |
Revert "Revert "Revert "ART: Improve JitProfile perf in arm/arm64 mterp""" This reverts commit 4a8ac9cee4312ac910fabf31c64d28d4c8362836. 570-checker-osr intermittently failing. Bug: 27939339
|
d6190dcdfb1f247ff0bf8268dacf413c93b58cf5 |
|
31-Mar-2016 |
Calin Juravle <calin@google.com> |
Revert "Revert "Revert "ART: Improve JitProfile perf in arm/arm64 mterp""" This reverts commit 4a8ac9cee4312ac910fabf31c64d28d4c8362836. Bug: 27939339
|
4a8ac9cee4312ac910fabf31c64d28d4c8362836 |
|
25-Mar-2016 |
Bill Buzbee <buzbee@google.com> |
Revert "Revert "ART: Improve JitProfile perf in arm/arm64 mterp"" Ready for review. This reverts commit 6aef867f4d1a98a12bcdd65e9bf2ff894f0f2d7e. Change-Id: I5d53ed2bedc7e429ce7d3cdf80b6696a9628740e
|
6aef867f4d1a98a12bcdd65e9bf2ff894f0f2d7e |
|
25-Mar-2016 |
Calin Juravle <calin@google.com> |
Revert "ART: Improve JitProfile perf in arm/arm64 mterp" This reverts commit c1d6b341eed646e5adafc6c4fd4e3748f0292368.
|
c1d6b341eed646e5adafc6c4fd4e3748f0292368 |
|
02-Mar-2016 |
buzbee <buzbee@google.com> |
ART: Improve JitProfile perf in arm/arm64 mterp ART currently requires two profiling-related things from the interpreters: hotness updates and OSR switch checks. The hotness updates previously used the existing instrumentation framework - which is flexible, but quite heavyweight. For most things, the instrumentation framework overhead is acceptable, but because we do a hotness update on every backwards branch the overhead is unacceptable. Prior to this CL, branch profiling dominates interpreter cost. Here, we bypass the instrumentation framework for hotness updates and deliver a significant performance improvement. Running interpreter-only (dalvikvm -Xint) on a Nexus 6, we see the logic subtest of Caffeinemark improving from 2600 to 9200, and the overall score going from 1979 to over 3000. Compared to the C++ switch interpreter, we see a 6x improvement on the branchy logic subtest and a 2.6x improvement overall. Compared with the previous mterp which did not have support for jit profiling, we see a few (1% to 5%) performance loss on the standard command-line benchmarks. I consider this acceptable (we could create an alternate non-profiling mterp which would have no penalty, but I don't consider this overhead big enough to justify that). Change-Id: I50b5b8c5ed8ebda3c8b4e65d27ba7393c3feae04
|
058231ef584776ca4d5f800e8b10dc654107c029 |
|
16-Mar-2016 |
buzbee <buzbee@google.com> |
ART: Mterp arm64 2-operand double rem fix An instruction ordering bug caused 2-operand double-precision rem operations to be performed incorrectly on the arm64 fast interpreter. Also, fixes the existing omnibus-opcodes smoke test to better catch 2-operand float and double operation problems (the problem was masked in the existing test). Bug: 27604215 (cherry picked from commit 908c0b28517c2d21f9ddd231e91cdd2c339aeb16) Change-Id: I1856d914a0cb76c6034d0c0e021525b095e33452
|
8b80f7174e8a780af938fbabd7e0ccfdd5ba4eeb |
|
16-Mar-2016 |
buzbee <buzbee@google.com> |
ART: Mterp arm64 2-operand double rem fix An instruction ordering bug caused 2-operand double-precision rem operations to be performed incorrectly on the arm64 fast interpreter. Also, fixes the existing omnibus-opcodes smoke test to better catch 2-operand float and double operation problems (the problem was masked in the existing test). Bug: 27604215 (cherry picked from commit 908c0b28517c2d21f9ddd231e91cdd2c339aeb16) Change-Id: I1856d914a0cb76c6034d0c0e021525b095e33452
|
908c0b28517c2d21f9ddd231e91cdd2c339aeb16 |
|
16-Mar-2016 |
buzbee <buzbee@google.com> |
ART: Mterp arm64 2-operand double rem fix An instruction ordering bug caused 2-operand double-precision rem operations to be performed incorrectly on the arm64 fast interpreter. Also, fixes the existing omnibus-opcodes smoke test to better catch 2-operand float and double operation problems (the problem was masked in the existing test). Bug: 27604215 Change-Id: I9fac1e61d9defe7d623c611406c35921abb65b04
|
ace690f5e440930d7bbad97fdbfdc3eb65e230be |
|
11-Mar-2016 |
buzbee <buzbee@google.com> |
ART: mterp arm/arm64 cleanup Assembly code cleanup in response to comments from already-submitted CL: https://android-review.googlesource.com/#/c/188977/ Change-Id: I0ea85c5759a08cb50ef3e97dc5cf79b3ba041640
|
f1dcaccfac4a9e022ea49752a774552b2f791489 |
|
24-Feb-2016 |
buzbee <buzbee@google.com> |
ART: Profile all branches for on-stack replacement Change the switch, goto and mterp interpreters to profile not-taken as well as taken branches. This allows for on-stack replacement when the cfg has been rearranged such that the loop header was originally the fallthrough of a Dalvik byte-code branch. Note that this increases the already-heavy cost of branch profiling. Measuring on a Nexus 6 using a very branchy benchmark (logic subtest from Caffeinemark), we see: No profiling Taken only Taken & not-taken mterp 9728 3434 2384 C++ goto 3914 2422 2037 C++ switch 2986 2411 2112 As measured, the cost of branch profiling is dominating execution time. This will be addressed in follow-up CLs. Change-Id: Ibc858f317398dd991ed8e4f3c3d72bd4c9a60594
|
fd522f9039befff986701ff05054ffdd1be1dd33 |
|
11-Feb-2016 |
Bill Buzbee <buzbee@google.com> |
Revert "Revert "Revert "Revert "ART: Enable Jit Profiling in Mterp for arm/arm64"""" This reverts commit 5d03317a834efdf3b5240c401f1bc2ceac7a2f25. We need to catch all possible cases in which new instrumentation appears or the debugger is attached, and then switch to the reference interpreter if necessary. We may, in a future CL, use the alt-mterp mechanism to accompish this (as did Dalvik). Only enables Arm64 for now. Once it survives extended testing, will enable arm and update x86. Updated OSR handling to match other interpreters. Change-Id: I076f1d752d6f59899876bab26b18e2221cd92f69
|
5d03317a834efdf3b5240c401f1bc2ceac7a2f25 |
|
11-Feb-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Revert "Revert "ART: Enable Jit Profiling in Mterp for arm/arm64""" Unfortunately, run-test interpreter on arm32 are still timing out, and the following jdwp tests on armv8 are failing: org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testBreakpoint_BeforeException (no test history available) org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testFieldAccess (no test history available) org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testFieldModification (no test history available) org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testMethodExit (no test history available) org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testMethodExitWithReturnValue (no test history available) org.apache.harmony.jpda.tests.jdwp.Events.FieldAccessTest#testFieldAccessEvent (no test history available) org.apache.harmony.jpda.tests.jdwp.Events.FieldModification002Test#testFieldModifyEvent (no test history available) org.apache.harmony.jpda.tests.jdwp.Events.FieldModificationTest#testFieldModifyEvent (no test history available) org.apache.harmony.jpda.tests.jdwp.Events.MethodExitWithReturnValueTest#testMethodExitWithReturnValueException (no test history available) This reverts commit 9687f244bdb5dd0b4d9dd804a7c8c7b4a911d364. Change-Id: Iadac4902ab8d7eb574cc4abeba5f93388d59dcb4
|
9687f244bdb5dd0b4d9dd804a7c8c7b4a911d364 |
|
05-Feb-2016 |
Bill Buzbee <buzbee@google.com> |
Revert "Revert "ART: Enable Jit Profiling in Mterp for arm/arm64"" Fixes: missing sign extension in iget template Call to wrong branch profiling helper in arm/goto_16 and arm/goto_32 Missing export PCs Reworks: Branch handlers to reduce cost of branch profiling. Re-enables Jit profiling for both Arm and Arm64. Performance note: Branch profiling is relatively expensive, though the real cost will depend on branch frequency. Taking a very branch intensive benchmark, CaffeineMark's logic test, we see the following scores (higher is better): Mterp (profiling off) 6187 Mterp (profiling on) 4305 Switch (profiling off) 3931 Switch (profiling on) 2032 This reverts commit 95717f0010e7a9445450f4d39babfaf3a83e29b5. Change-Id: Ia2ef8b54ce95bfa86178b89c43f8a703316b2944
|
95717f0010e7a9445450f4d39babfaf3a83e29b5 |
|
05-Feb-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "ART: Enable Jit Profiling in Mterp for arm/arm64" Not super happy to revert this, but unfortunately, too many problems when testing: arm: tests timeout when running run-tests with the interpreter. arm64 failures: test-art-target-run-test-ndebug-prebuild-jit-relocate-ntrace-cms-checkjni-image-npictest-ndebuggable-003-omnibus-opcodes64 test-art-target-run-test-ndebug-prebuild-jit-relocate-ntrace-cms-checkjni-image-npictest-ndebuggable-005-annotations64 test-art-target-run-test-ndebug-prebuild-jit-relocate-ntrace-cms-checkjni-image-npictest-ndebuggable-064-field-access64 test-art-target-run-test-ndebug-prebuild-jit-relocate-ntrace-cms-checkjni-image-npictest-ndebuggable-406-fields64 org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testBreakpoint_BeforeException org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testFieldAccess org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testFieldModification org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testMethodExit org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testMethodExitWithReturnValue org.apache.harmony.jpda.tests.jdwp.Events.FieldAccessTest#testFieldAccessEvent org.apache.harmony.jpda.tests.jdwp.Events.FieldModification002Test#testFieldModifyEvent org.apache.harmony.jpda.tests.jdwp.Events.FieldModificationTest#testFieldModifyEvent org.apache.harmony.jpda.tests.jdwp.Events.MethodExitWithReturnValueTest#testMethodExitWithReturnValueException This reverts commit a0a16105423459287497a98129dcba2828ccd7f0. Change-Id: I8ff0512265ed0a422be67e7410998ad02639509c
|
a0a16105423459287497a98129dcba2828ccd7f0 |
|
04-Feb-2016 |
buzbee <buzbee@google.com> |
ART: Enable Jit Profiling in Mterp for arm/arm64 Adds the hooks for branch profiling to arm and arm64. The other Jit profiling modes are handled in common code. Stubbed out support for on-stack replacement. Change-Id: Ic298a81139108c3d7f1325b59d97e14a9de08de6
|
3b0b4b9d09baae7234fc26b7970b3ec55560735e |
|
02-Feb-2016 |
Bill Buzbee <buzbee@google.com> |
Revert "Revert "ART: Mterp for arm64"" Looks like some of our assemblers disagree on valid arm64 assembly syntax Force use of clang for art runtime. In a subsequent CL, will use form that both gcc and clang accept. This reverts commit 43f3fb960bce978df699c8a68a972be2a0d0d221. Change-Id: Ice83072171ab502c43d492e2238b446c4814ea67
|
43f3fb960bce978df699c8a68a972be2a0d0d221 |
|
02-Feb-2016 |
Sebastien Hertz <shertz@google.com> |
Revert "ART: Mterp for arm64" This reverts commit e0c269e0a5f50b1a551ddba1205f6e5b4b5e6c98. The CL is causing build breakages on arm64 targets. Change-Id: I7402fe34869258ae870c57308b2062e50d801bdd
|
e0c269e0a5f50b1a551ddba1205f6e5b4b5e6c98 |
|
27-Jan-2016 |
buzbee <buzbee@google.com> |
ART: Mterp for arm64 Ready for review. All opcodes handled. All applicable run-tests pass. Device boots to desktop in interpret-only mode. Change-Id: I937d8bcf848a831e04d4b9de8d1914667a197d75
|