e276589f2f14f217018f323f5457790b84569fb4 |
|
20-May-2017 |
Calin Juravle <calin@google.com> |
Use arena allocation for profiles By using our arena allocator we can madvise the memory used during profile processing right way. jemalloc may defer the release based on unpredictable native allocation. The other advantage of arenas is a much simpler way to measure the memory needed by profiles. Test: m test-art-host Test: manual inspection with meminfo and heaptrack Bug: 37711886 (cherry picked from commit cc3171ab3af35b4e4ad5671d7425aa8a6bfcc5f3) This change also squashes 2 fixes on the orginal submit. (cherry picked from commit 798ba16bda747d74a27b7a748d3bb5deb2ccbf68) (cherry picked from commit e6f87cc95e5351f3872a4c50e18915a282578ff8) (partial cherry picked from commit 55232f13e4a34ab36c13f337642b57f9def00da8 to fix dexdiag formating and please the bot) Merged-In: I2066b6654438474c10b17d5d92538a6095748684 Change-Id: I91741229a807c777631ef324fc3f397c9a0c18e3 Bug: 37711886
|
d38ba0a3abd7f6140f0851d826449afec5689d57 |
|
13-Apr-2017 |
Vladimir Marko <vmarko@google.com> |
Fix Arena allocation tracking. Add missing allocation kind name and try to avoid bit-rot in future by explicitly instantiating ArenaAllocatorStatsImpl<true> in debug builds. Bug: 34083438 Test: Rely on TreeHugger. Change-Id: Ibe78a9f15d04b2ca2f03143fb4f49c01ae18471e
|
d9911eeca13f609c885e0f6a5ce81af9b6340bfa |
|
27-Mar-2017 |
Andreas Gampe <agampe@google.com> |
ART: Clean up field initialization Add explicit field initialization to default value where necessary. Also clean up interpreter intrinsics header. Test: m Change-Id: I7a850ac30dcccfb523a5569fb8400b9ac892c8e5
|
f44d36c8423f81cbb5e9f55d8813e26ffa1a7f3b |
|
14-Mar-2017 |
Vladimir Marko <vmarko@google.com> |
Revert^2 "Hash-based DexCache field array." Test: testrunner.py --host --interpreter Bug: 30627598 This reverts commit 6374c58f2ea403b3a05fb27376110fe4d0fc8e3f. Change-Id: I275508e288a85d3aa08f7405a1a4f362af43b775
|
9042ae3c8db8a9f7b825c4702322d58e232619f4 |
|
13-Mar-2017 |
Vladimir Marko <vmarko@google.com> |
Revert "Hash-based DexCache field array." Reverting to allow rebasing the revert https://android-review.googlesource.com/351689 without too many conflicts. Bug: 30627598 This reverts commit 1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64. Change-Id: I4af65e9f41c8bad8106c028947eca7c5a9534c53 (cherry picked from commit 6374c58f2ea403b3a05fb27376110fe4d0fc8e3f)
|
6374c58f2ea403b3a05fb27376110fe4d0fc8e3f |
|
13-Mar-2017 |
Vladimir Marko <vmarko@google.com> |
Revert "Hash-based DexCache field array." Reverting to allow rebasing the revert https://android-review.googlesource.com/351689 without too many conflicts. Bug: 30627598 This reverts commit 1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64. Change-Id: I4af65e9f41c8bad8106c028947eca7c5a9534c53
|
1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64 |
|
08-Dec-2016 |
Vladimir Marko <vmarko@google.com> |
Hash-based DexCache field array. Test: m test-art-host, both AOT and interpreter Test: m test-art-target, both AOT and interpreter Test: m valgrind-test-art-host Bug: 30627598 Change-Id: If992f091aadd862d17b09928d21659573dd285a0
|
5f9da555e69e7a2e1b4cadd87bbdfcce54c1395d |
|
02-Feb-2017 |
Jayant Chowdhary <jchowdhary@google.com> |
Fix issues due to updated toolchain. Supress -Winstantiation-after-specialization for clang_major >= 4. Test: mma -j64. Change-Id: I644c900999b07d62b7e13ef8c551f7af6f26ea48
|
47b22472b25d4b0d23df9ea99ae4ba7cd8a08f87 |
|
26-Jan-2017 |
Stephen Hines <srhines@google.com> |
Revert "Revert "Ignore warning for instantiation after specialization."" This reverts commit ee7a1c5d327e132c923cd45b5b2de091204f07dd. Bug: http://b/31532493 Test: Manual validation
|
ee7a1c5d327e132c923cd45b5b2de091204f07dd |
|
26-Jan-2017 |
Stephen Hines <srhines@google.com> |
Revert "Ignore warning for instantiation after specialization." This reverts commit 445584d3d1f8e3a9a7d12eded3b2dce5f8691d8c. Reason for revert: <INSERT REASONING HERE> Change-Id: I911049f64c4e963cfa47fd8bc7f16ed14e25b057
|
22aa54bf8469689c7c6c33f15ff4df2ffba8fa15 |
|
18-Oct-2016 |
Alexandre Rames <alexandre.rames@linaro.org> |
AArch64: Add HInstruction scheduling support. This commit adds a new `HInstructionScheduling` pass that performs basic scheduling on the `HGraph`. Currently, scheduling is performed at the block level, so no `HInstruction` ever leaves its block in this pass. The scheduling process iterates through blocks in the graph. For blocks that we can and want to schedule: 1) Build a dependency graph for instructions. It includes data dependencies (inputs/uses), but also environment dependencies and side-effect dependencies. 2) Schedule the dependency graph. This is a topological sort of the dependency graph, using heuristics to decide what node to schedule first when there are multiple candidates. Currently the heuristics only consider instruction latencies and schedule first the instructions that are on the critical path. Test: m test-art-host Test: m test-art-target Change-Id: Iec103177d4f059666d7c9626e5770531fbc5ccdc
|
445584d3d1f8e3a9a7d12eded3b2dce5f8691d8c |
|
14-Dec-2016 |
Stephen Hines <srhines@google.com> |
Ignore warning for instantiation after specialization. Bug: http://b/31532493 The false template specialization is indeed a duplicate, so we can remove it, but the ART team would prefer to keep this explicit. art/runtime/base/arena_allocator.cc:147:16: error: explicit instantiation of 'ArenaAllocatorStatsImpl<false>' that occurs after an explicit specialization has no effect [-Werror,-Winstantiation-after-specialization] template class ArenaAllocatorStatsImpl<kArenaAllocatorCountAllocations>; ^ art/runtime/base/arena_allocator.h:105:7: note: previous template specialization is here class ArenaAllocatorStatsImpl<false> { ^ Test: Builds correctly with latest toolchain. Change-Id: Ifbcb3b98ff4451b9860a6c6c6b085745f89c0a64
|
4e335d0279038d9a33628e7174eecbd1e540ab6e |
|
19-Dec-2016 |
Vladimir Marko <vmarko@google.com> |
Fix arena allocation counting. Add the "CHA" allocation kind description. Move the statistics to the heap to avoid excessively large frames triggering errors with -Werror, -Wframe-larger-than=. Test: m test-art-host Test: m test-art-host with arena allocation counting. Change-Id: I7947a3a17b4c1ed773742516b1f7ab9a58c92150
|
9620230700d4b451097c2163faa70627c9d8088a |
|
05-Oct-2016 |
Aart Bik <ajcbik@google.com> |
Refactoring of graph linearization and linear order. Rationale: Ownership of graph's linear order and iterators was a bit unclear now that other phases are using it. New approach allows phases to compute their own order, while ssa_liveness is sole owner for graph (since it is not mutated afterwards). Also shortens lifetime of loop's arena. Test: test-art-host Change-Id: Ib7137d1203a1e0a12db49868f4117d48a4277f30
|
f6dd829292b451a0eaaf339964fcf9ebc804897b |
|
20-Aug-2016 |
Andreas Gampe <agampe@google.com> |
ART: Enforce arena alignment in Realloc Enforce the expected alignment in Realloc when the given buffer can be expanded. Add debug checks to prove alignment guarantees. Change-Id: I7dbaf3ca0896f714cff07ff08f067a7c088a6c8d Test: m test-art-host
|
46ea0147b49e3539492be160e1631e73f58d2c3c |
|
22-Apr-2016 |
Vladimir Marko <vmarko@google.com> |
Reduce memory lost by ArenaAllocator for large allocations. When allocating from a new arena, check if the old arena has more remaining space than the new one after the current allocation. If so, keep using the old arena to reduce the amount of "lost" arena memory. This can happen when we try to allocate more than half the default arena size. If the allocation exceeds the default arena size, it's very likely to happen even though the ArenaPool could still provide some much larger previously allocated arena. Also avoid artithmetic overflow when checking if the request can be satisfied from the current arena. And abort immediately if calloc() fails. Bug: 28173563 Bug: 28256882 In addition to the initial CL (cherry picked from commit 3e0e7173c0cdfc57dba39fe781e30d187d50fa9c) this contains a squashed subsequent fix Fix valgrind tests: mark allocated space as defined. (cherry picked from commit 3f84f2cb3cadc25d75e1e3e2c1bc26c1a671f336) Change-Id: Id80d5601874e8e28d930c0dd47a51c73c4810094
|
3f84f2cb3cadc25d75e1e3e2c1bc26c1a671f336 |
|
25-Apr-2016 |
Vladimir Marko <vmarko@google.com> |
Fix valgrind tests: mark allocated space as defined. Follow-up to https://android-review.googlesource.com/219700 Bug: 28173563 Bug: 28256882 Change-Id: I4e8e8d3202fd01ab48d86b3a6b92302524df66bb
|
3e0e7173c0cdfc57dba39fe781e30d187d50fa9c |
|
22-Apr-2016 |
Vladimir Marko <vmarko@google.com> |
Reduce memory lost by ArenaAllocator for large allocations. When allocating from a new arena, check if the old arena has more remaining space than the new one after the current allocation. If so, keep using the old arena to reduce the amount of "lost" arena memory. This can happen when we try to allocate more than half the default arena size. If the allocation exceeds the default arena size, it's very likely to happen even though the ArenaPool could still provide some much larger previously allocated arena. Also avoid artithmetic overflow when checking if the request can be satisfied from the current arena. And abort immediately if calloc() fails. Bug: 28173563 Bug: 28256882 Change-Id: I1b4bda5d3f32ecd95fbd11addd1f0ca6dcc33e45
|
d1ee80948144526b985afb44a0574248cf7da58a |
|
13-Apr-2016 |
Vladimir Marko <vmarko@google.com> |
Move Assemblers to the Arena. And clean up some APIs to return std::unique_ptr<> instead of raw pointers that don't communicate ownership. (cherry picked from commit 93205e395f777c1dd81d3f164cf9a4aec4bde45f) Bug: 27505766 Change-Id: I3017302307a0253d661240750298802fb0d9585e
|
93205e395f777c1dd81d3f164cf9a4aec4bde45f |
|
13-Apr-2016 |
Vladimir Marko <vmarko@google.com> |
Move Assemblers to the Arena. And clean up some APIs to return std::unique_ptr<> instead of raw pointers that don't communicate ownership. Change-Id: I3017302307a0253d661240750298802fb0d9585e
|
3a40bf2fc1b9823e3bc8fcf96d5242668b5c088b |
|
22-Mar-2016 |
Vladimir Marko <vmarko@google.com> |
ART: Clean up arena allocation memory tracking. Remove unused allocation types, mostly from removed Quick. Move logging one level up to capture memory used by stack maps during AOT compilation. Raise the reporting threshold to 8MiB to limit the output to the worst offenders. Change-Id: I8c7a01bfa90bc8ec5eab66187eb6850a022f3543
|
f6a35de9eeefb20f6446f1b4815b4dcb0161d09c |
|
21-Mar-2016 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Fix register allocator validation memory usage. Also attribute ArenaBitVector allocations to appropriate passes. This was used to track down the source of the excessive memory alloactions. Bug: 27690481 Change-Id: Ib895984cb7c04e24cbc7abbd8322079bab8ab100
|
32ce2adefb8a3d0eda59a29f5e87c1eb43eef796 |
|
04-Mar-2016 |
Mathieu Chartier <mathieuc@google.com> |
Add more systracing everywhere Added to: JIT DexFile functions Oat file manager Added helper ScopedTrace to prevent errors and reduce excess code. Bug: 27502458 (cherry picked from commit dabdc0fe183d4684f3cf4d70cb09d318cff81b42) Change-Id: Ifaeff8913d79eefc797380987d13cc00456266f8
|
dabdc0fe183d4684f3cf4d70cb09d318cff81b42 |
|
04-Mar-2016 |
Mathieu Chartier <mathieuc@google.com> |
Add more systracing everywhere Added to: JIT DexFile functions Oat file manager Added helper ScopedTrace to prevent errors and reduce excess code. Bug: 27502458 Change-Id: Ifaeff8913d79eefc797380987d13cc00456266f8
|
25e0456b6ea13eba290b63ea88b6b7120ed89413 |
|
01-Mar-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Give the JIT its own arena pool to avoid lock contentions. Sharing it with the verifier and the class loader is not ideal, especially at startup time. bug:27398183 bug:23128949 Change-Id: I1b91663a13f6c5b33ad3b4be780d93eb7fe445b4
|
ca76a1a0c1737b3e04961ba382c113102fdc00bf |
|
02-Feb-2016 |
Jean-Philippe Halimi <jean-philippe.halimi@intel.com> |
Dex-wide ArenaPool scoping for AOT compilation The Arena Pool is a structure that holds memory allocated by the Arena Allocator, preventing system allocations and deallocations to occur too often during AOT compilation. Currently, the Arena Pool holds memory it allocates during the whole AOT compilation process. Unfortunately, such a behavior generates memory usage overhead, which is exacerbated by bigger applications such as Facebook. In this particular app, method size imbalance provokes unnecessary memory pressure, as one method might require a lot of arena allocations that won't be used in the remaining compilation. Because the compiler memory footprint keeps increasing during AOT compilation, the memory pressure becomes very high. The proposed patch is an attempt to find a tradeoff between allocations / deallocations time overhead, and the aforementioned memory pressure overhead resulting of the allocations being held by the Arena Pool. The patch adds a feature freeing up all memory allocated in the Arena Pool after each dex file is done compiling. We have measured no significant AOT compile-time overhead with the patch (<0.3%), because the selected dex-file granularity is coarse enough. In the meantime, it provides significant memory footprint improvements. The impact is especially big with Facebook, because this app has a few methods generating huge memory footprint peaks (peak native heap footprint goes down 34%). Change-Id: I27e867e6a20b8a6c28a82cb83140941a8c2b5847 Signed-off-by: Jean-Philippe Halimi <jean-philippe.halimi@intel.com>
|
75001934af9fa3f2538f564bb4073d711809f1ff |
|
10-Nov-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Fix arena allocation for valgrind. Move the zero-initialization check after marking the newly allocated chunk as defined and check only the allocated space without the red zone. Also mark unallocated space as inaccessible instead of just undefined. Change-Id: I74fc65f5b53acb74cec4e5a0146f41dacf4a1470
|
de40d478930d0889a2aea5cbf58aa63da24e5dfa |
|
16-Oct-2015 |
Mathieu Chartier <mathieuc@google.com> |
Use arenas for the verifier Improvements are from using arenas for verifier. The things that were moved into arenas are register lines, reg types, and reg type descriptors. Also some minor cleanup. Fixed double space formatting error in string piece. ======================================== Before: ======================================= compile GmsCore 50x on host -j1: real 3m5.510s user 2m48.139s sys 0m11.753s 50 random APKs: real 1m18.157s user 1m8.167s sys 0m8.071s RAM (GmsCore): (threads: 1) arena alloc=0B java alloc=27MB native alloc=64MB free=792KB (threads: 4) arena alloc=0B java alloc=27MB native alloc=64MB free=397KB Perf: ============================= After: ============================= compile GmsCore 50x on host -j1: real 2m31.455s user 2m14.784s sys 0m10.888s 50 random APKs: Speed up from arena allocating: real 1m12.094s user 1m2.325s sys 0m7.872s Speed up from areans + CreateFindClassDefIndex + unordered_map for DexFileVerifier. real 1m8.654s user 0m58.955s sys 0m7.777s RAM (GmsCore): (threads: 1) arena alloc=1049KB java alloc=27MB native alloc=65MB free=538KB (threads: 4) arena alloc=4MB java alloc=27MB native alloc=69MB free=650KB Perf on host key results: _int_malloc: 3.60% -> 1.39% malloc: 1.48% -> 0.65% _int_free: 1.59% -> 0.61% RegTypeCache::FromClass: 1.47% -> 0.86% malloc_consolidate: 0.89% -> 0.63% Real speed up is ~22% on GmsCore, ~14% on the set of 60 APKs. Bug: 10921004 Change-Id: If13d4ab4284a176f93a26a412549b6b1149dfb16
|
655e585073ac271cc9afa7c9d6ff5ab4dbe4b72e |
|
12-Oct-2015 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Move GraphChecker memory allocations to arena. Bug: 18120045 Change-Id: I3934158e6ea4868d9baa1dfcc53b603ca6c521e2
|
7bda3b600d74c9a5746840ebb8534443e486615a |
|
07-Oct-2015 |
Vladimir Marko <vmarko@google.com> |
Revert "Quick: Work around large frame sizes for x86_64." Instead, move the MEMORY_TOOL_MAKE_* calls out-of-line. Bug: 24729377 This reverts commit d4cf1e4fe0624b99df22ed5556dc1d042b32a7e0. Change-Id: I9bccc8bd4a691a2d018b84de8b95bc68fafad4e1
|
2a408a3bef330551818f9cec9a7c5aa7a3f1129e |
|
18-Sep-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Mark deallocated arena memory as inaccessible. Mark arena and scoped arena memory freed by allocator adapters as inaccessible. This can help catch accesses to old storage of a container, for example the old data of an ArenaVector<> that's been resized. Together with debug-mode enforcement of destruction of all scoped arena containers, this provides strong verification of their memory usage. However, this does not apply to the normal (non-scoped) arena memory held by arena containers as they are typically not destroyed if they are themselves located in the arena. ArenaBitVector memory, whether in normal or scoped arena, isn't marked either. Change-Id: I4d2a80fedf7ceb7d4ce24ee8e7bcd53513171388
|
5233f93ee336b3581ccdb993ff6342c52fec34b0 |
|
29-Sep-2015 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Tag even more arena allocations. Tag previously "Misc" arena allocations with more specific allocation types. Move some native heap allocations to the arena in BCE. Bug: 23736311 Change-Id: If8ef15a8b614dc3314bdfb35caa23862c9d4d25c
|
225b6464a58ebe11c156144653f11a1c6607f4eb |
|
28-Sep-2015 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Tag arena allocations in code generators. And completely remove the deprecated GrowableArray. Replace GrowableArray with ArenaVector in code generators and related classes and tag arena allocations. Label arrays use direct allocations from ArenaAllocator because Label is non-copyable and non-movable and as such cannot be really held in a container. The GrowableArray never actually constructed them, instead relying on the zero-initialized storage from the arena allocator to be correct. We now actually construct the labels. Also avoid StackMapStream::ComputeDexRegisterMapSize() being passed null references, even though unused. Change-Id: I26a46fdd406b23a3969300a67739d55528df8bf4
|
2aaa4b5532d30c4e65d8892b556400bb61f9dc8c |
|
17-Sep-2015 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Tag more arena allocations. Replace GrowableArray with ArenaVector and tag arena allocations with new allocation types. As part of this, make the register allocator a bit more efficient, doing bulk insert/erase. Some loops are now O(n) instead of O(n^2). Change-Id: Ifac0871ffb34b121cc0447801a2d07eefd308c14
|
71bf8090663d02869cafafdd530976f7f2a9db7f |
|
15-Sep-2015 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Tag arena allocations in SsaBuilder. Replace GrowableArray with ArenaVector in SsaBuilder and tag allocations with a new arena allocation type. Change-Id: I27312c51d7be9d2ad02a974cce93b365c65c5fc4
|
fa6b93c4b69e6d7ddfa2a4ed0aff01b0608c5a3a |
|
15-Sep-2015 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Tag arena allocations in HGraph. Replace GrowableArray with ArenaVector in HGraph and related classes HEnvironment, HLoopInformation, HInvoke and HPhi, and tag allocations with new arena allocation types. Change-Id: I3d79897af405b9a1a5b98bfc372e70fe0b3bc40d
|
6058455d486219994921b63a2d774dc9908415a2 |
|
03-Sep-2015 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Tag basic block allocations with their source. Replace GrowableArray with ArenaVector in HBasicBlock and, to track the source of allocations, assign one new and two Quick's arena allocation types to these vectors. Rename kArenaAllocSuccessor to kArenaAllocSuccessors. Bug: 23736311 Change-Id: Ib52e51698890675bde61f007fe6039338cf1a025
|
145acc5361deb769eed998f057bc23abaef6e116 |
|
03-Sep-2015 |
Vladimir Marko <vmarko@google.com> |
Revert "Optimizing: Tag basic block allocations with their source." Reverting so that we can have more discussion about the STL API. This reverts commit 91e11c0c840193c6822e66846020b6647de243d5. Change-Id: I187fe52f2c16b6e7c5c9d49c42921eb6c7063dba
|
91e11c0c840193c6822e66846020b6647de243d5 |
|
02-Sep-2015 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Tag basic block allocations with their source. Replace GrowableArray with ArenaVector in HBasicBlock and, to track the source of allocations, assign one new and two Quick's arena allocation types to these vectors. Rename kArenaAllocSuccessor to kArenaAllocSuccessors. Bug: 23736311 Change-Id: I984aef6e615ae2380a532f5c6726af21015f43f5
|
f9f6441c665b5ff9004d3ed55014f46d416fb1bb |
|
02-Sep-2015 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Tag Arena allocations with their source. This adds the ability to track where we allocate memory when the kArenaAllocatorCountAllocations flag is turned on. Also move some allocations from native heap to the Arena and remove some unnecessary utilities. Bug: 23736311 Change-Id: I1aaef3fd405d1de444fe9e618b1ce7ecef07ade3
|
1e13374baf7dfaf442ffbf9809c37c131d681eaf |
|
20-May-2015 |
Evgenii Stepanov <eugenis@google.com> |
Generalize Valgrind annotations in ART to support ASan. Also add redzones around non-fixed mem_map(s). Also extend -Wframe-larger-than limit to enable arm64 ASan build. Change-Id: Ie572481a25fead59fc8978d2c317a33ac418516c
|
3d21bdf8894e780d349c481e5c9e29fe1556051c |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move mirror::ArtMethod to native Optimizing + quick tests are passing, devices boot. TODO: Test and fix bugs in mips64. Saves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS. Some of the savings are from removal of virtual methods and direct methods object arrays. Bug: 19264997 (cherry picked from commit e401d146407d61eeb99f8d6176b2ac13c4df1e33) Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d Fix some ArtMethod related bugs Added root visiting for runtime methods, not currently required since the GcRoots in these methods are null. Added missing GetInterfaceMethodIfProxy in GetMethodLine, fixes --trace run-tests 005, 044. Fixed optimizing compiler bug where we used a normal stack location instead of double on ARM64, this fixes the debuggable tests. TODO: Fix JDWP tests. Bug: 19264997 Change-Id: I7c55f69c61d1b45351fd0dc7185ffe5efad82bd3 ART: Fix casts for 64-bit pointers on 32-bit compiler. Bug: 19264997 Change-Id: Ief45cdd4bae5a43fc8bfdfa7cf744e2c57529457 Fix JDWP tests after ArtMethod change Fixes Throwable::GetStackDepth for exception event detection after internal stack trace representation change. Adds missing ArtMethod::GetInterfaceMethodIfProxy call in case of proxy method. Bug: 19264997 Change-Id: I363e293796848c3ec491c963813f62d868da44d2 Fix accidental IMT and root marking regression Was always using the conflict trampoline. Also included fix for regression in GC time caused by extra roots. Most of the regression was IMT. Fixed bug in DumpGcPerformanceInfo where we would get SIGABRT due to detached thread. EvaluateAndApplyChanges: From ~2500 -> ~1980 GC time: 8.2s -> 7.2s due to 1s less of MarkConcurrentRoots Bug: 19264997 Change-Id: I4333e80a8268c2ed1284f87f25b9f113d4f2c7e0 Fix bogus image test assert Previously we were comparing the size of the non moving space to size of the image file. Now we properly compare the size of the image space against the size of the image file. Bug: 19264997 Change-Id: I7359f1f73ae3df60c5147245935a24431c04808a [MIPS64] Fix art_quick_invoke_stub argument offsets. ArtMethod reference's size got bigger, so we need to move other args and leave enough space for ArtMethod* and 'this' pointer. This fixes mips64 boot. Bug: 19264997 Change-Id: I47198d5f39a4caab30b3b77479d5eedaad5006ab
|
e401d146407d61eeb99f8d6176b2ac13c4df1e33 |
|
22-Apr-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move mirror::ArtMethod to native Optimizing + quick tests are passing, devices boot. TODO: Test and fix bugs in mips64. Saves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS. Some of the savings are from removal of virtual methods and direct methods object arrays. Bug: 19264997 Change-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d
|
3481ba2c4e4f3aa80d8c6d50a9f85dacb56b508b |
|
13-Apr-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Clean up includes. Reduce dependencies to improve incremental build times. Break up circular dependency involving class_linker-inl.h. Change-Id: I4be742c5c2b5cd9855beea86630fd68aab76b0db
|
c785344b87221f5e4e6473e5b762e4e61fe65dcf |
|
27-Mar-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move ArtField to native Add linear alloc. Moved ArtField to be native object. Changed image writer to put ArtFields after the mirror section. Savings: 2MB on low ram devices 4MB on normal devices Total PSS measurements before (normal N5, 95s after shell start): Image size: 7729152 bytes 23112 kB: .NonMoving 23212 kB: .NonMoving 22868 kB: .NonMoving 23072 kB: .NonMoving 22836 kB: .NonMoving 19618 kB: .Zygote 19850 kB: .Zygote 19623 kB: .Zygote 19924 kB: .Zygote 19612 kB: .Zygote Avg: 42745.4 kB After: Image size: 7462912 bytes 17440 kB: .NonMoving 16776 kB: .NonMoving 16804 kB: .NonMoving 17812 kB: .NonMoving 16820 kB: .NonMoving 18788 kB: .Zygote 18856 kB: .Zygote 19064 kB: .Zygote 18841 kB: .Zygote 18629 kB: .Zygote 3499 kB: .LinearAlloc 3408 kB: .LinearAlloc 3424 kB: .LinearAlloc 3600 kB: .LinearAlloc 3436 kB: .LinearAlloc Avg: 39439.4 kB No reflection performance changes. Bug: 19264997 Bug: 17643507 Change-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c
|
850cd16a683d724b41687074a49504996d8e8e3e |
|
17-Mar-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Fix build for counting arena allocations. Change-Id: I1fbb8cc9c4934cc81cb80c5c2107c63fd16a0a05
|
c6201fa2ec66a218c4d0320fbcddd2fbb65cfa4a |
|
12-Mar-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add way to select arena type at runtime We now use MemMap for JIT, and malloc for everything else. This should help fix the allegedly regressed compile times. Change-Id: I6a6552738933f9d7ee3bd23f45e310818b19b70d
|
9b34b244ecddd8a35c922ed87bc3df0ca4db0282 |
|
09-Mar-2015 |
Mathieu Chartier <mathieuc@google.com> |
Trim arenas for JIT Moved arena pool into the runtime. Added arena trimming to arena pool. When called, this madvises the used memory. Changed the JIT compiler to trim arenas after compilation. Changed the arena mmap name to dalvik-LinearAlloc. Native PSS before: 80353 kB: Native 80775 kB: Native 78116 kB: Native After: 73357 kB: Native 70181 kB: Native 70306 kB: Native Bug: 17950037 Bug: 17643507 Bug: 19264997 Change-Id: I63e7a898fd6e909c2c677fa57b5917a7b1398930
|
5c42c29b89286e5efa4a4613132b09051ce5945b |
|
25-Feb-2015 |
Vladimir Marko <vmarko@google.com> |
Add support for .bss section in oat files. Change-Id: I779b80b8139d9afdc28373f8c68edff5df7726ce
|
b666f4805c8ae707ea6fd7f6c7f375e0b000dba8 |
|
18-Feb-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move arenas into runtime Moved arena pool into the runtime. Motivation: Allow GC to use arena allocators, recycle arena pool for linear alloc. Bug: 19264997 Change-Id: I8ddbb6d55ee923a980b28fb656c758c5d7697c2f
|