summaryrefslogtreecommitdiff
path: root/compiler
AgeCommit message (Collapse)Author
2016-08-23Revert "x86/x86-64: Avoid temporary for read barrier field load." Vladimir Marko
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
2016-08-23x86/x86-64: Avoid temporary for read barrier field load. Vladimir Marko
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
2016-08-23Merge "Use full pass name when building optimizations" Treehugger Robot
2016-08-23Merge "MIPS32: Optimize R6 round(float) intrinsic." Treehugger Robot
2016-08-23Use full pass name when building optimizations Wojciech Staszkiewicz
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
2016-08-22Fix build Colin Cross
Move instruction_simplifier_arm.cc to the arm source list to fix full-eng builds. Change-Id: Ic7fc884f5cc2acec5579dc417acece21b7e674aa
2016-08-22Merge "ART: Add thread offset printing hook to disassembler" Treehugger Robot
2016-08-19ART: Add thread offset printing hook to disassembler Andreas Gampe
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
2016-08-19Merge "ART: Fixing build breakage (sharpening DCHECK)." Mathieu Chartier
2016-08-19ART: Fixing build breakage (sharpening DCHECK). Christina Wadsworth
Change-Id: I7ba19808dde0712739a278075da57f724166a233
2016-08-19Merge "Fix building tests with partial arch codegen support" Colin Cross
2016-08-19Fix building tests with partial arch codegen support Colin Cross
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
2016-08-19Merge "ART: Implement a fixed size string dex cache" Mathieu Chartier
2016-08-19Merge "Add support for Baker read barriers in SystemArrayCopy intrinsics." Roland Levillain
2016-08-19Add support for Baker read barriers in SystemArrayCopy intrinsics. Roland Levillain
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
2016-08-19Merge "Color spill slots in gc regalloc" Treehugger Robot
2016-08-18Merge "Log optimization passes in verbose mode" Aart Bik
2016-08-18ART: Implement a fixed size string dex cache Christina Wadsworth
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
2016-08-18Fix optimizing compiler not building for svelte Wojciech Staszkiewicz
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
2016-08-18Log optimization passes in verbose mode Wojciech Staszkiewicz
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
2016-08-17Color spill slots in gc regalloc Matthew Gharrity
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
2016-08-16Merge "jni: Fast path for @FastNative annotated java methods" Treehugger Robot
2016-08-16jni: Fast path for @FastNative annotated java methods Igor Murashkin
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
2016-08-15Merge "Revert "Enable IntermediateAddress for primitive arrays with read ↵ Treehugger Robot
barriers.""
2016-08-15Revert "Enable IntermediateAddress for primitive arrays with read barriers." Roland Levillain
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
2016-08-15Merge "ARM64: VIXL: Support a newer version of VIXL." Roland Levillain
2016-08-12Merge "Revert "Revert "Iterative move coalescing for gc regalloc""" Treehugger Robot
2016-08-12Merge "Use TestCodeGeneratorX86 in codegen unit tests" Treehugger Robot
2016-08-12Revert "Revert "Iterative move coalescing for gc regalloc"" Matthew Gharrity
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
2016-08-12Merge "Fix duplicate checks in JNI macro assemblers." Treehugger Robot
2016-08-12Merge "Adjust spacing before NOLINT comments in ART." Roland Levillain
2016-08-12Fix duplicate checks in JNI macro assemblers. Vladimir Marko
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
2016-08-12ARM64: VIXL: Support a newer version of VIXL. Artem Serov
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
2016-08-12Adjust spacing before NOLINT comments in ART. Roland Levillain
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
2016-08-12Merge "ARM: Add vldm/vstm assembler support." Vladimir Marko
2016-08-12Merge "Revert "Iterative move coalescing for gc regalloc"" Treehugger Robot
2016-08-12Revert "Iterative move coalescing for gc regalloc" Andreas Gampe
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
2016-08-12Merge "Remove kRestrictCompilationFiltersToImage" Treehugger Robot
2016-08-12Merge "Iterative move coalescing for gc regalloc" Andreas Gampe
2016-08-11Use TestCodeGeneratorX86 in codegen unit tests Matthew Gharrity
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
2016-08-11Iterative move coalescing for gc regalloc Matthew Gharrity
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
2016-08-11Merge "x86/x86-64: Shorter fast-path for read barrier field load." Treehugger Robot
2016-08-11Merge "ARM64: Use libvixld when compiling for debug mode." Treehugger Robot
2016-08-11Merge "Full enable new round implementation on x86/x86_64" Aart Bik
2016-08-11ARM: Add vldm/vstm assembler support. Artem Serov
Change-Id: Id97417de8ebd07fc1fbee5d17e4b1c620a2c44cc
2016-08-11ARM64: Use libvixld when compiling for debug mode. Alexandre Rames
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
2016-08-11x86/x86-64: Shorter fast-path for read barrier field load. Vladimir Marko
Test: Tested with ART_USE_READ_BARRIER=true on host. Bug: 29966877 Bug: 12687968 Change-Id: I73359495910dacb2cc28f1a21ef9e610bab5a476
2016-08-10Full enable new round implementation on x86/x86_64 Aart Bik
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
2016-08-10Merge "Rename callee save enumerators." Vladimir Marko
2016-08-10Merge "ARM: Embed constants in add/sub-long." Vladimir Marko