be10e8e99a78caae01fb65769218800d465144ae |
|
22-Jan-2016 |
Vladimir Marko <vmarko@google.com> |
Optimizing: Try pattern substitution when we cannot inline. Change-Id: I7c01f4494bac8498accc0f087044ec509fee4c98
|
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
|
d8f69b086baf6717ce949d1c4de90d73b91083b0 |
|
10-Sep-2014 |
Ian Rogers <irogers@google.com> |
Revert "Add read barriers for the roots in the verifier." This reverts commit 7da9586b559290e1c16207c6513ffe485de61655. Bug: 17398101 Change-Id: I1d6110fdf0d3a3c9241c8e7e7f4b85a298f9dd8e
|
bf99f77dda749e2b653e8c45259b1fb56e7bb012 |
|
24-Aug-2014 |
Mathieu Chartier <mathieuc@google.com> |
Clean up Handle usage. Prefer using ConstHandle instead of Handle as function arguments since you can't assign new references to ConstHandle which helps prevent bugs. Changed NullHandle to be a ConstHandle so that you can never modify it to be a non null reference. Change-Id: I81cb979f6f8d5b49e5614966a2caf28c3701dd4f
|
7da9586b559290e1c16207c6513ffe485de61655 |
|
30-Jul-2014 |
Hiroshi Yamauchi <yamauchi@google.com> |
Add read barriers for the roots in the verifier. Note: Because the roots (the class references in RegType objects) can be updated by the read barriers, a lot of uses of type "const RegType" were replaced with "RegType". Bug: 12687968 Change-Id: I6cf37a87f352938d43fb51560a8d927ada104f50
|
eb8167a4f4d27fce0530f6724ab8032610cd146b |
|
08-May-2014 |
Mathieu Chartier <mathieuc@google.com> |
Add Handle/HandleScope and delete SirtRef. Delete SirtRef and replaced it with Handle. Handles are value types which wrap around StackReference*. Renamed StackIndirectReferenceTable to HandleScope. Added a scoped handle wrapper which wraps around an Object** and restores it in its destructor. Renamed Handle::get -> Get. Bug: 8473721 Change-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a
|
c645f1ddb7c40bea6a38eda4b3f83f6b6dec405b |
|
07-Mar-2014 |
Mathieu Chartier <mathieuc@google.com> |
Add more VerifyObject calls. Added verify object calls to SirtRef, IndirectReferenceTable, ReferenceTable. Removed un-needed verify object in ScopedObjectAccess / DecodeJObject since object sources are handled. Bug: 12934910 Change-Id: I55a46a8ea61fed2a77526eda27fd2cce97a9b125
|
0f98205f10b982e3a5fd8c421d6f3332b5e46873 |
|
21-Jan-2014 |
Vladimir Marko <vmarko@google.com> |
Mark methods in method_verifier-inl.h as inline. This allows method_verifier-inl.h to be included from multiple translation units. Change-Id: I2f4789b565de3af37dc26d925167551f9e11f132
|
2b5eaa2b49f7489bafdadc4b4463ae27e4261817 |
|
13-Dec-2013 |
Vladimir Marko <vmarko@google.com> |
Move compiler code out of method verifier. We want to detect small methods for inlining at the end of the method verification. Instead of adding more compiler code to the runtime, we create a callback from the runtime into the compiler, so that we can keep the code there. Additionally, we move the compiler-related code that was already in the method verifier to the compiler since it doesn't really belong to the runtime in the first place. Change-Id: I708ca13227c809e07917ff3879a89722017e83a9
|