| Age | Commit message (Collapse) | Author |
|
Fault handler does not recognize the instruction
F6 /0 ib TEST r/m8, imm8
so we get crashes instead of NPEs.
Bug: 29966877
Bug: 12687968
This reverts commit ccf06d8f19a37432de4a3b768747090adfbd18ec.
Change-Id: Ib7db3b59f44c0d3ed5e24a20b6c6ee596a89d709
|
|
Add TEST instructions for memory and immediate. Use the byte
version to avoid a temporary in read barrier field load.
Test: Tested with ART_USE_READ_BARRIER=true on host.
Test: Tested with ART_USE_READ_BARRIER=true ART_HEAP_POISONING=true on host.
Bug: 29966877
Bug: 12687968
Change-Id: Ia415d3c2e1ae1ff6dff11d72bbb7d96d5deed6ee
|
|
|
|
|
|
If possible, use full pass name provided in --run-passes rather
than its base version.
Test: m test-art-host -j32
1. Prepare a run-passes file with content:
dead_code_elimination$initial
instruction_simplifier
x86_memory_operand_generation
2. Run art for a dex file like:
art -Xcompiler-option --run-passes=run-passes -Xcompiler-option
--dump-passes -classpath classes.dex Test
3. Verify that dead_code_elimination$initial string is present in
dump-passes output.
Change-Id: I92d9ed0c8b919ea03f625f549123f546dffe546b
|
|
Move instruction_simplifier_arm.cc to the arm source list to fix
full-eng builds.
Change-Id: Ic7fc884f5cc2acec5579dc417acece21b7e674aa
|
|
|
|
To prepare separation of disassembler from libart, add a function
hook to the disassembler options for thread offset name printing.
Bug: 15436106
Change-Id: I9e9b7e565ae923952c64026f675ac527b560f51b
|
|
|
|
Change-Id: I7ba19808dde0712739a278075da57f724166a233
|
|
|
|
Add conditionals around more code that is only used for codegen for
specific architectures, and move a few more files into the
architecture-specific codegen lists.
Tests: ART_HOST_CODEGEN_ARCHS="x86_64 mips" m -j ART_TARGET_CODEGEN_ARCHS=svelte test-art-host
Bug: 30928847
Change-Id: I0444d15e1cafe4c9b13ff78718c3b13b544270e7
|
|
|
|
|
|
Benchmarks (ARM64) score variations on Nexus 5X with CPU
cores clamped at 960000 Hz (aosp_bullhead-userdebug build):
- Ritzperf - average (lower is better): -3.03% (slightly better)
- CaffeineMark - average (higher is better): +1.26% (slightly better)
- DeltaBlue (lower is better): -10.50% (better)
- Richards - average (lower is better): -3.36% (slightly better)
- SciMark2 - average (higher is better): +0.26% (virtually unchanged)
Details about Ritzperf benchmarks with meaningful variations
(lower is better):
- FormulaEvaluationActions.EvaluateAndApplyChanges: -13.26% (better)
- FormulaEvaluationActions.EvaluateCascadingSums: -10.94% (better)
- FormulaEvaluationActions.EvaluateComplexFormulas: -15.50% (better)
- FormulaEvaluationActions.EvaluateFibonacci: -10.41% (better)
- FormulaEvaluationActions.EvaluateLargeSums: +6.02% (worse)
Boot image code size variation on Nexus 5X
(aosp_bullhead-userdebug build):
- total ARM64 framework Oat files size change:
107047632 bytes -> 107154128 bytes (+0.10%)
- total ARM framework Oat files size change:
90932028 bytes -> 91009852 bytes (+0.09%)
Test: ART host and target (ARM, ARM64) tests + Nexus 5X boot.
Bug: 29516905
Bug: 29506760
Bug: 12687968
Change-Id: I85431368d09965687a0301ae2eb3c991f276ce5d
|
|
|
|
|
|
Previously, the string dex cache was dex_file->NumStringIds() size, and
@ruhler found that only ~1% of that cache was ever getting filled. Since
many of these string dex caches were previously 100,000+ indices in
length, we're wasting a few hundred KB per app by storing null pointers.
The intent of this project was to reduce the space the string dex cache
is using, while not regressing on time that much. This is the first of a
few CLs, which implements the new fixed size array and disables the
compiled code so it always goes slow path. In four other CLs, I
implemented a "medium path" that regresses from the previous "fast path"
only a bit in assembly in the entrypoints. @vmarko will introduce new
compiled code in the future so that we ultimately won't be regressing on
time at all. Overall, space savings have been confirmed as on the order
of 100 KB per application.
A 4-5% slow down in art-opt on Golem, and no noticeable slow down in the
interpreter. The opt slow down should be diminished once the new
compiled code is introduced.
Test: m test-art-host
Bug: 20323084
Change-Id: Ic654a1fb9c1ae127dde59290bf36a23edb55ca8e
|
|
Fixes compiler not building when some of the codegen paths
are disabled.
Test: mmma -j art ART_TARGET_CODEGEN_ARCHS=svelte
m -j32 test-art-host
BUG=30928847
Change-Id: I52c78e8a4e507f74b1f2a39352970079721b737e
|
|
Introduce verbose logging of optimization passes run during
compilation.
Test: m test-art-host -j32
art -Xcompiler-option --runtime-arg -Xcompiler-option -verbose:compiler
-classpath classes.dex Test
Change-Id: Iae98ce9dcafc252f2d0eec138aa05b34e424bd2a
|
|
Coloring spill slots avoids pathologically large stack
sizes by reusing spill slots when possible.
Test: ART_TEST_OPTIMIZING_GRAPH_COLOR=true m test-art-host
Change-Id: I4b4aea859c78b0515758f8b057ee870dbbfc2300
|
|
|
|
Adds a faster path for java methods annotated with
dalvik.annotation.optimization.FastNative .
Intended to replace usage of fast JNI (registering with "!(FOO)BAR" descriptors).
Performance Microbenchmark Results (Angler):
* Regular JNI cost in nanoseconds: 115
* Fast JNI cost in nanoseconds: 60
* @FastNative cost in nanoseconds: 36
Summary: Up to 67% faster (vs fast jni) JNI transition cost
Change-Id: Ic23823ae0f232270c068ec999fd89aa993894b0e
|
|
barriers.""
|
|
This CL breaks the angler-userdebug build with
`ART_USE_READ_BARRIER=true`.
Test: Build angler-userdebug with `ART_USE_READ_BARRIER=true`.
Bug: 30762467
Bug: 26601270
Bug: 12687968
This reverts commit 12ecf0800d465acdaa3deccd383ff8ed3428a183.
Change-Id: Ia2069ac9436d2336311dd8d0f183c02e587586ae
|
|
|
|
|
|
|
|
This reverts commit 6f61ee5623a676ce983ccfa1aba9b2ae1237e163,
and fixes the arena allocator issues in the original CL.
Functionality from the original CL has not changed.
Test: m valgrind-test-art-host-gtest-register_allocator_test
Test: ART_TEST_OPTIMIZING_GRAPH_COLOR=true m test-art-host-run-test
Change-Id: Idd979f4e03f0c2800e0c07a0a7d392c8a4230aab
|
|
|
|
|
|
Instead of checking one register twice, check the other
register passed to the function.
Test: Run ART test suite on host and Nexus 5.
Bug: 30739460
Change-Id: If868ea14f5c192982488ed065b279a019b5b7cf4
|
|
Please note that compiling VIXL with -Wshadow is a known VIXL issue.
This will be resolved in a later version of VIXL, when we can drop
the deprecated API for getters and setters.
For more info take a look at VIXL_DEPRECATED in the VIXL source code.
Change-Id: Iea30b1a7b065f9b16a92c6cc7ebdc50ef068b348
|
|
Note that neither clang-tidy nor cpplint.py complain about
these style "issues", precisely because of the NOLINT
comments.
Test: WITH_TIDY=1 WITH_TIDY_CHECKS='-*,misc-macro-parentheses' mmma art
Change-Id: Id692fd394ffbd4fe208cbbe4407b4d5e208462bb
|
|
|
|
|
|
There are lifetime issues with allocators and coloring
iterations that got flagged by valgrind.
This reverts commit 465ed699e810868fe5bb39730e6d149a4734372d.
Change-Id: I9e08172321af61d109c116a4f0742fa809e8094b
Test: m test-art-host
|
|
|
|
|
|
The codegen unit tests are supposed to use special "test" code
generators when targeting ARM and x86 (due to differing calling
conventions between the C++ source code and the generated code),
yet TestCodeGeneratorX86 was not being used. This fixes that.
(The tests were only succeeding because the register allocator happened
to not assign the EBX register.)
Test: m test-art-host-gtest-codegen_test
Change-Id: Ia3dd6998c38e9ff27b8c2734457f86b3fed44ab4
|
|
Implement iterative move coalescing for graph coloring
register allocation. Based on Andrew Appel's implementation
in "Modern Compiler Implementation in Java", modified to
support constraints such as pair intervals.
Test: ART_TEST_OPTIMIZING_GRAPH_COLOR=true m test-art-host
Change-Id: I8642297d3bd798a4fc4de4b356ac3304098471a5
|
|
|
|
|
|
|
|
Change-Id: Id97417de8ebd07fc1fbee5d17e4b1c620a2c44cc
|
|
VIXL debug mode checks are valuable to catch dangerous code that can
lead to bugs.
This patch includes a couple of fixes for issues spotted by VIXL in debug mode.
Change-Id: I388ae1ffd9256ad74d0b6ce06f79cc7927a5f28a
|
|
Test: Tested with ART_USE_READ_BARRIER=true on host.
Bug: 29966877
Bug: 12687968
Change-Id: I73359495910dacb2cc28f1a21ef9e610bab5a476
|
|
Rationale:
Running JIT on Fugu does not always provide a constant area.
In such cases, we need to construct FP constants through stack.
This only applies to x86.
Test: 580-checker-round
BUG=26327751
Change-Id: I7e2c80dafbafbe647cfe9ecb039920bb534c666a
|
|
|
|
|