c482d383593ad5202c9a4d7c2042cdc27d4c7c50 |
|
26-Oct-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add HashSet::Reserve Reserves enough room to insert n elements without expanding. Motivation is to use this for cases where we know how many elements will be inserted. Change-Id: I3c51fc7f4601903411fc90b0f1bf270fe9a30919
|
32cc9ee0cdffecb0ec8d80a7fd55d7dccae3a7ee |
|
15-Oct-2015 |
Mathieu Chartier <mathieuc@google.com> |
Change hash table load factors Changed class table and intern table load factors to query the runtime. The runtime returns load factors based on whether or not we are a low ram device. DescriptorEquals time for class linking goes from 10% -> 1.2% for compiling GmsCore with interpret only. Added test. Bug: 24917584 Change-Id: Iaaf5d2eab1b0c2d188d299e4bc1852cdb3801173
|
cf7792d4789b98e4a44674f1b0a96c5e63349a85 |
|
27-Aug-2015 |
Richard Uhler <ruhler@google.com> |
Test HashSet lookup by alternate key type. The test case demonstrates and verifies looking up a HashSet element by an alternate key type. Change-Id: I833d572fb6105bf4d7c343ce50de873f27e4311f
|
e2facc5b18cd756a8b5500fb3d90da69c9ee0fb7 |
|
10-Jul-2015 |
Igor Murashkin <iam@google.com> |
runtime: Add lambda box/unbox object equality A lambda that is boxed with box-lambda is now stored as a weak reference in a global runtime table (lambda::BoxTable). Repeatedly boxing the same lambda closure value will always return the same java.lang.Object back. Since there is no way to observe the address of an object, a GC can happen and clean up the table of any dead boxed lambdas, which can also shrink the table to prevent the memory use from growing too much. (Note that a lambda closure is immutable, so hashing over it is guaranteed safe.) Change-Id: I786c1323ff14eed937936b303d511875f9642524
|
3552d96086c75523a76f399a13dd85d65eaa2d19 |
|
23-Jun-2015 |
Igor Murashkin <iam@google.com> |
base: Fix an infinite loop in HashSet::Insert Also adds a test for HashSet::ShrinkToMaximumLoad (This bug was only reachable when using ShrinkToMaximumLoad, which is not called from anywhere other than the new test) Change-Id: I5276b4b3f4ecf6090bb545ddd1752758b11609dd
|
47f867a0ae34d743f6159c2261e5b11e39693e15 |
|
18-Mar-2015 |
Mathieu Chartier <mathieuc@google.com> |
Clean up hash set Added vertical whitespace, const iterators, made some functions const. Change-Id: I188dc0384a98d6dae2822f0ac38b740f2356c23d
|
e7c9a8c2b8481aafbc6af4ce6229bd361ba24742 |
|
07-Nov-2014 |
Mathieu Chartier <mathieuc@google.com> |
Add hash map, reduce excessive hashing Changed the class def index to use a HashMap instead of unordered_map so that we can use FindWithHash to reduce how often we need to compute hashes. Fixed a bug in ClassLinker::UpdateClass where we didn't properly handle classes with the same descriptor but different class loaders. Introduced by previous CL. Before (fb launch): 1.74% art::ComputeModifiedUtf8Hash(char const*) After: 0.95% art::ComputeModifiedUtf8Hash(char const*) Bug: 18054905 Bug: 16828525 Change-Id: Iba2ee37c9837289e0ea187800ba4af322225a994 (cherry picked from commit 564ff985184737977aa26c485d0c1a413e530705)
|
564ff985184737977aa26c485d0c1a413e530705 |
|
07-Nov-2014 |
Mathieu Chartier <mathieuc@google.com> |
Add hash map, reduce excessive hashing Changed the class def index to use a HashMap instead of unordered_map so that we can use FindWithHash to reduce how often we need to compute hashes. Fixed a bug in ClassLinker::UpdateClass where we didn't properly handle classes with the same descriptor but different class loaders. Introduced by previous CL. Before (fb launch): 1.74% art::ComputeModifiedUtf8Hash(char const*) After: 0.95% art::ComputeModifiedUtf8Hash(char const*) Bug: 18054905 Bug: 16828525 Change-Id: Iba2ee37c9837289e0ea187800ba4af322225a994
|
c2e20629c7dfdb0f679fa30c14b41fe68588697f |
|
03-Nov-2014 |
Mathieu Chartier <mathieuc@google.com> |
Add hash set More memory efficient than libcxx since we do not box the values. Change intern table to use new hash set. Clean up intern table by removing const casts and deleting unnecessary code. Changed the class linker to use a hash set, also added a pre-zygote class table. 5 samples of: adb shell stop && adb shell start && sleep 60 && adb shell dumpsys meminfo Before: 165929 kB: Native 175859 kB: Native 168434 kB: Native 166559 kB: Native 169958 kB: Native After: 160972 kB: Native 159439 kB: Native 157204 kB: Native 165093 kB: Native 163039 kB: Native TODO: Add HashTable which is implemented by using a HashSet. TODO: Use for DexFile::find_class_def_misses_. TODO: Investigate using mem maps instead of native heap. Bug: 17808975 Change-Id: I93e376cf6eb9628cf52f4aefdadb6157acfb799a (cherry picked from commit e05d1d5fd86867afc7513b1c546375dba11eee50)
|
e05d1d5fd86867afc7513b1c546375dba11eee50 |
|
03-Nov-2014 |
Mathieu Chartier <mathieuc@google.com> |
Add hash set More memory efficient than libcxx since we do not box the values. Change intern table to use new hash set. Clean up intern table by removing const casts and deleting unnecessary code. Changed the class linker to use a hash set, also added a pre-zygote class table. 5 samples of: adb shell stop && adb shell start && sleep 60 && adb shell dumpsys meminfo Before: 165929 kB: Native 175859 kB: Native 168434 kB: Native 166559 kB: Native 169958 kB: Native After: 160972 kB: Native 159439 kB: Native 157204 kB: Native 165093 kB: Native 163039 kB: Native TODO: Add HashTable which is implemented by using a HashSet. TODO: Use for DexFile::find_class_def_misses_. TODO: Investigate using mem maps instead of native heap. Bug: 17808975 Change-Id: I93e376cf6eb9628cf52f4aefdadb6157acfb799a
|