f4f2daafb38c9c07ea74044a0fb89a2a19288b7a |
|
20-Mar-2017 |
Vladimir Marko <vmarko@google.com> |
ARM64: Use link-time generated thunks for Baker CC read barrier. Remaining work for follow-up CLs: - array loads, - volatile field loads, - use implicit null check in field thunk. Test: Added tests to relative_patcher_arm64 Test: New run-test 160-read-barrier-stress Test: m test-art-target-gtest on Nexus 6P. Test: testrunner.py --target on Nexus 6P. Bug: 29516974 Bug: 30126666 Bug: 36141117 Change-Id: Id68ff171c55a3f1bf1ac1b657f480531aa7b3710
|
1a0de6acd03b43a03678b58f47b2f21b5215cc22 |
|
27-Aug-2016 |
Chih-Hung Hsieh <chh@google.com> |
Fix clang-tidy warnings in art. * Add parentheses around macro parameters, or use NOLINT to suppress warning. Bug: 28705665 Test: build with WITH_TIDY=1 Change-Id: Ifc922c2e66215772042bac372754ea70074f0053
|
0c737df58fd4796df6c79837f409c40595168db5 |
|
01-Aug-2016 |
Vladimir Marko <vmarko@google.com> |
Align method code rather than method header in oat files. This has always been the intent. For example, the function name CompiledMethod::AlignCode() shows this intent. Test: Run ART test suite on host and Nexus 9. Change-Id: I11ae8963fc537fee853fe82e3aca22e77907eae7
|
cac5a7e871f1f346b317894359ad06fa7bd67fba |
|
22-Feb-2016 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Improve const-string code generation. For strings in the boot image, use either direct pointers or pc-relative addresses. For other strings, use PC-relative access to the dex cache arrays for AOT and direct address of the string's dex cache slot for JIT. For aosp_flounder-userdebug: - 32-bit boot.oat: -692KiB (-0.9%) - 64-bit boot.oat: -948KiB (-1.1%) - 32-bit dalvik cache total: -900KiB (-0.9%) - 64-bit dalvik cache total: -3672KiB (-1.5%) (contains more files than the 32-bit dalvik cache) For aosp_flounder-userdebug forced to compile PIC: - 32-bit boot.oat: -380KiB (-0.5%) - 64-bit boot.oat: -928KiB (-1.0%) - 32-bit dalvik cache total: -468KiB (-0.4%) - 64-bit dalvik cache total: -1928KiB (-0.8%) (contains more files than the 32-bit dalvik cache) Bug: 26884697 Change-Id: Iec7266ce67e6fedc107be78fab2e742a8dab2696
|
d1eaf0dc9abc42dbcbbd9c4b98bf930ae5f394f3 |
|
29-Oct-2015 |
Vladimir Marko <vmarko@google.com> |
Keep list of dex files for oat file in CompilerDriver. Use this list to improve invoke-static/-direct dispatch for intra-oat calls. Also fix a latent ArmBaseRelativePatcher::ReserveSpaceEnd() bug exposed by a buggy early version of this CL: when we have unresolved patches at the end of all code, we need to emit a final thunk. Though the OatWriter will try to patch the unresolved call to a trampoline at the beginning of the oat file, that trampoline may be too far and the relative patcher doesn't know about it anyway, so it needs to assume that a thunk is needed. This reduces the overall size of oat files present in dalvik cache on Nexus 9 after first boot by over 1MiB, AOSP ToT, aosp_flounder-userdebug build. Change-Id: I98604b70cb17377eed057c1c23971865cf344e43
|
35831e8bfa1c0944d4c978d99c4c5b9577945170 |
|
11-Sep-2015 |
Vladimir Marko <vmarko@google.com> |
Reduce memory used by CompiledMethods. Use LengthPrefixedArray<>s instead of SwapVector<>s to store CompiledMethod data and get rid of the unnecessary members of CompiledMethod to reduce dex2oat memory usage. Refactor the deduplication from CompilerDriver to a new class. Use HashSet<> instead of std::set<> for the DedupeSet<> to further decrease the memory usage and improve performance. This reduces the dex2oat memory usage when compiling boot image on Nexus 5 (with Optimizing, -j1) by ~6.75MiB (5%). This also reduces the compile time by ~2.2% (~1.6% dex2oat time; with Optimizing, without -j). Change-Id: I974f1f5e58350de2bf487a2bca3907fa05fb80ea
|
524e7ea8cd17bad17bd9f3e0ccbb19ad0d4d9c02 |
|
16-Oct-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Remove ArtCode. - Instead use OatQuickMethodHeader. - Various cleanups now that we don't have all those ArtMethod -> ArtCode -> OatQuickMethodHeader indirections. As a consequence of this cleanup, exception handling got a bit faster. ParserCombinators benchmark (exception intensive) on x64: (lower is better) Before: ParserCombinators(RunTime): 1062500.0 us. After: ParserCombinators(RunTime): 833000.0 us. Change-Id: Idac917b6f1b0dc254ad68fb3781cd61bccadb0f3
|
14d90579f013b374638b599361970557ed4b3f09 |
|
16-Jul-2015 |
Roland Levillain <rpl@google.com> |
Use (D)CHECK_ALIGNED more. Change-Id: I9d740f6a88d01e028d4ddc3e4e62b0a73ea050af
|
345f93e8533e5b5af1e567d1c9d2e21f96c69258 |
|
14-Jul-2015 |
Vladimir Marko <vmarko@google.com> |
Avoid unexpected conversions to ArrayRef. Make single-parameter constructors explicit, except for the default copy constructor. Change-Id: If7c8db643b22a4c36e244830154fc699b39c9016
|
97e2f26524f4d08796a0a224b17e082734cceb5f |
|
02-Apr-2015 |
Matteo Franchin <matteo.franchin@arm.com> |
Refine erratum 843419 check for linker workaround. The check is extended to avoid patching sequences where the adrp is followed by a load which can easily be proved to be aligned. Change-Id: Ia5741e3d73bc143c29bf0e301f767012d7598171
|
b207e1473dda1730604a28db2b4fa52f2998aeae |
|
02-Apr-2015 |
Vladimir Marko <vmarko@google.com> |
Pass linker patches around as const. Change-Id: I0eabd713d29475db9eb6e186f331dbfb00e0cf6b
|
3f311cfa86af18ccbd6f1607f037401244ad4d56 |
|
02-Apr-2015 |
Vladimir Marko <vmarko@google.com> |
Add tests for Arm64RelativePatcher. Change-Id: I9d2c21d323137ac143eabb8fdf6ca075bae45c51
|