db8e62dca9232634daecb548bd51f3186004535c |
|
30-Mar-2016 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Clean up after const-string sharpening. Do not look up the String for JIT, just check if it's in the dex cache. Strings on hot paths should already be resolved and we don't want to unnecessarily increase JIT compile time to have a chance of improving a cold path. Also, change the enum LinkerPatchType to be an inner enum class of LinkerPatch and clean up casts between pointers and uint64_t. Change-Id: Ia6e0513af1a84ce94a3b30edac0c592157d374ec
|
944da603cde59a4277f3bbc31d860a90842a1a2a |
|
19-Feb-2016 |
Vladimir Marko <vmarko@google.com> |
ART: Allow method references across oat files for multi-image, 2nd attempt. These were disabled because we didn't have sufficient information about the multi-image layout when processing link-time patches in OatWriter. This CL refactors the ELF file creation so that the information is available. Also clean up ImageWriter to use oat file indexes instead of filenames and avoid reopening the oat file to retrieve the checksum. Change-Id: Icc7b528deca29da1e473c8f079521a36d6c4892f
|
131980fc9aeb2b4d03480443e0fb494c76ce03a2 |
|
03-Dec-2015 |
Vladimir Marko <vmarko@google.com> |
Add ElfWriter::GetStream(). This will be used for writing the OatHeader which is currently oddly written through the .text stream. Also move the error delaying output stream out of the ElfBuilder<> to its own file and move all output stream files to compiler/linker/. Change-Id: I00db4e33ed80ac4757ec459946c7b5ae014a3a2e
|
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
|
71b0ddf988208c9f77e7d2c1e75066cc3fe20c61 |
|
02-Apr-2015 |
Vladimir Marko <vmarko@google.com> |
Split RelativePatcher::ReserveSpace() into two. Instead of passing nullptr and MethodReference(nullptr, 0u) to ReserveSpace() at the end, call a newly created function ReserveSpaceEnd(). Change-Id: I38815fe9464b4e1a919878b6e8577614f1058d00
|
4d23c9d01b7a609813345eec95167a4dbc4fbae4 |
|
02-Apr-2015 |
Vladimir Marko <vmarko@google.com> |
Add tests for Thumb2RelativePatcher. Also make the thumb2/arm64 thunk allocation precise instead of eagerly allocating thunk space. This allows the calls to use the maximum positive offset. Change-Id: Ifa95b0bb00bd73eeab0c2905d21e2f3078f4b0a8
|
b163bb742a099c1808907b513ae39068b63b1692 |
|
31-Mar-2015 |
Vladimir Marko <vmarko@google.com> |
Refactor RelativePatcher out of OatWriter. Move the relative patcher classes to compiler/linker/ and compiler/linker/<arch>/ . Refactor them to avoid OatWriter dependency so that they can be unit tested. Add tests for x86 and x86-64. Change-Id: I1b42baa9fc431378e4cce1399bec590c5b5a409f
|