e6564f4efe74b2bb505a5810852141404b82a4a9 |
|
19-Mar-2018 |
David Sehr <sehr@google.com> |
Move some remaining dex utilities There were several utilities related to building/walking/testing dex files that were not in libdexfile. This change consolidates these. (cherry picked from commit 312f3b2fd0094c028a7d243b116947a35a745806) Bug: 22322814 Test: make -j 50 test-art-host Merged-In: Id76e9179d03b8ec7d67f7e0f267121f54f0ec2e0 Change-Id: Id76e9179d03b8ec7d67f7e0f267121f54f0ec2e0
|
67bf42e89592c3a1c648f927f2ce3ccb189a1161 |
|
27-Feb-2018 |
David Sehr <sehr@google.com> |
Header library to remove dependence on runtime/ Add a new header library to remove libdexfile and others' dependence on runtime (typically runtime/base) includes in libdexfile. Also a small step to tease dexlayout and profman away from relying on these as well. Bug: 22322814 Test: make -j 50 checkbuild make -j 50 test-art-host-gtest Change-Id: I38e2fe399a75f4bc6318c77a71954c00ea73ec2b
|
06bed3009b94b392ce6be43d72f4b10803565c72 |
|
13-Jul-2017 |
Mathieu Chartier <mathieuc@google.com> |
Revert "Revert "Record post startup methods in profile"" Test: test/run-test 595-profile-saving This reverts commit a867f7ab437dd6c1458088964986d0fe7275625c. Change-Id: I2826bdddda446925856991de4b0b786c8c05831e
|
a867f7ab437dd6c1458088964986d0fe7275625c |
|
13-Jul-2017 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Record post startup methods in profile" Breaks target tests. This reverts commit 5594f11fa8a8a1efc24d1b258592f68cf462eec8. Change-Id: I5ff4aab14bb241e287f042a9a90458e61306985e
|
5594f11fa8a8a1efc24d1b258592f68cf462eec8 |
|
08-Jun-2017 |
Mathieu Chartier <mathieuc@google.com> |
Record post startup methods in profile Record post startup methods in the profile by visiting the methods for all the loaded classes. This data will be used for layout optimizations and generating the boot image profile. The maps profile size doesn't seem to get larger after doing a basic post launch use case. The change in profile size is hard to reliably measure. Verified by dumping a profile with profman and confirming that there are post startup methods in the profile. Added test to 595-profile-saving. Did a test for maps to see how long we hold the class table lock. The results are 4ms in the longest case. This should be short enough to not cause jank if run every 20s or so. Test: test-art-host Bug: 36457259 Change-Id: I82e36957fcdc8d9e072c0193478bd1ef0ce09a67
|
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
|
cc3171ab3af35b4e4ad5671d7425aa8a6bfcc5f3 |
|
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 Change-Id: Ib656a8ac63600477ff553831087a83dc40d9c537
|
dcab19095959865f03f63ad39dfaa8769c704a72 |
|
13-May-2017 |
Calin Juravle <calin@google.com> |
Do not cache profiles in the ProfileSaver. Profiles with a lot of inline caches have a large memory footprint. Do not cache them in the saver anymore. The cache was useful to avoid doing unnecessary IO but it takes too much memory now. Disable it until we update the profile format to take less space. This trades off IO for memory. As an effect we will do one extra read to detect if we have enough new information worth saving. The saving period has been increased to 40secs (from 20) in a previous CL which also helps to balance the IO. Test: m test-art-host-gtest manual inspection with meminfo Bug: 37711886 Change-Id: I9cfdd6fb70c289221e74ccf1b6449f28a7fb693d
|
3dd18cf4781d76565fff3460bd4efeebd188b6c6 |
|
13-May-2017 |
Calin Juravle <calin@google.com> |
Do not cache profiles in the ProfileSaver. Profiles with a lot of inline caches have a large memory footprint. Do not cache them in the saver anymore. The cache was useful to avoid doing unnecessary IO but it takes too much memory now. Disable it until we update the profile format to take less space. This trades off IO for memory. As an effect we will do one extra read to detect if we have enough new information worth saving. The saving period has been increased to 40secs (from 20) in a previous CL which also helps to balance the IO. Test: m test-art-host-gtest manual inspection with meminfo Bug: 37711886 (cherry picked from commit ea220658bf6ff920c5a6c658e4643da09560d278) Change-Id: Iddf93b2f07faf4c897ac43931f41aa1e8c2a6bc4
|
5df637a64847f35e3ff2728c842887ab20b3fd6b |
|
06-May-2017 |
Calin Juravle <calin@google.com> |
Resolve the tracked locations in profile saver The profile saver takes the dex locations it has to track as they are. On the buildbot the locations are symlinked, but the dex file may be compiled with an absolute path. This may cause a mismatch and cause the dex file to not be profiled (test 595-profile-saving will fail). Note that this is a valid use case in production as well. It may happen for secondary dex files which can be loaded via symlinks. Test: test/run-test --output-path /tmp/link --always-clean --host --prebuild --interpreter --no-relocate --runtime-option -Xcheck:jni --no-image --64 595-profile-saving test/run-test --output-path /tmp/link --always-clean --host --no-prebuild --jit --no-relocate --runtime-option -Xcheck:jni --runtime-option -verbose:profiler --64 595-profile-saving Bug: 36605597 (cherry picked from commit 8b5d9b614ad9f13e2cb62d4956252677cd71add1) Change-Id: I43866c6cf7ce6f33ac4386bb4fe07b88bb35e793
|
8b5d9b614ad9f13e2cb62d4956252677cd71add1 |
|
06-May-2017 |
Calin Juravle <calin@google.com> |
Resolve the tracked locations in profile saver The profile saver takes the dex locations it has to track as they are. On the buildbot the locations are symlinked, but the dex file may be compiled with an absolute path. This may cause a mismatch and cause the dex file to not be profiled (test 595-profile-saving will fail). Note that this is a valid use case in production as well. It may happen for secondary dex files which can be loaded via symlinks. Test: test/run-test --output-path /tmp/link --always-clean --host --prebuild --interpreter --no-relocate --runtime-option -Xcheck:jni --no-image --64 595-profile-saving test/run-test --output-path /tmp/link --always-clean --host --no-prebuild --jit --no-relocate --runtime-option -Xcheck:jni --runtime-option -verbose:profiler --64 595-profile-saving Bug: 36605597 Change-Id: I0126d5255fd663d232a3f7fc50ce7d715072872a
|
07ea07ea30aa293fd9d4cc764ec27b1d769014f1 |
|
06-Apr-2017 |
Mathieu Chartier <mathieuc@google.com> |
Force save profiles for SIGUSR1 Force save profiles from signal catcher for SIGUSR1. Saving the profiles is expensive but we already do a GC which is also expensive for this signal. Test: adb shell ls -l /data/misc/profiles/cur/1000/system_server/ Test: adb shell kill -s SIGUSR1 `pid system_server` Test: adb shell ls -l /data/misc/profiles/cur/1000/system_server/ Bug: 36457259 Bug: 34927277 (cherry picked from commit 8f23d97af3b10ae56fb16d63fd2932098dac45c0) Change-Id: I810b66a7fe4b06efc7468d65ac737d74c5669abe
|
8f23d97af3b10ae56fb16d63fd2932098dac45c0 |
|
06-Apr-2017 |
Mathieu Chartier <mathieuc@google.com> |
Force save profiles for SIGUSR1 Force save profiles from signal catcher for SIGUSR1. Saving the profiles is expensive but we already do a GC which is also expensive for this signal. Test: adb shell ls -l /data/misc/profiles/cur/1000/system_server/ Test: adb shell kill -s SIGUSR1 `pid system_server` Test: adb shell ls -l /data/misc/profiles/cur/1000/system_server/ Bug: 36457259 Bug: 34927277 Change-Id: I1852bba1a7f47b378ba0321edf951bca942b3c39
|
a345d3144c56e510866848fd677b05adc7780189 |
|
15-Mar-2017 |
Calin Juravle <calin@google.com> |
Ensure the profile is written to disk at shutdown Force profile saving during shutdown. It will make benchmark automation much easier. Test: test-art-host Bug: 26719109 Change-Id: I529aa1a7b1192c53960fdb4ddc13b10b99e846cc
|
51e417b45fa13050318715d2ad3da99d90b5f334 |
|
15-Mar-2017 |
Calin Juravle <calin@google.com> |
Tweak ProfileSaver saving strategy To minimize the I/O, we used to store the number of methods/classes we last saved globally in the profiler saver. This is no longer viable once we want to track secondary dex files for profiling because each file might save a different set of methods. To make sure we do not miss data for secondary dex profiles, store the number of last saved methods separetely for each profile file. Test: test-art-host Bug: 26719109 Change-Id: I3a657f63d26f68c7ca83a754f6e4aa2c9d946176
|
77651c4bbd56d502bcf05347e641061bbebca099 |
|
04-Mar-2017 |
Calin Juravle <calin@google.com> |
ART: Clean up code related to foreign dex use We simplified the way we track whether or not a dex file is used by other apps. DexManager in the framework keeps track of the data and we no longer need file markers on disk. Test: device boots, foreign dex markers are not created anymore Bug: 32871170 (cherry picked from commit 868515e2606820ea96f8b9022b442f5bcc770867) Change-Id: If51b3301c845a8c3bbaf87d0e35a12c700e1d0aa Merged-In: I5a04d3bba29581dedf05e21b8b20d79afa9b405a
|
868515e2606820ea96f8b9022b442f5bcc770867 |
|
04-Mar-2017 |
Calin Juravle <calin@google.com> |
ART: Clean up code related to foreign dex use We simplified the way we track whether or not a dex file is used by other apps. DexManager in the framework keeps track of the data and we no longer need file markers on disk. Test: device boots, foreign dex markers are not created anymore Bug: 32871170 Change-Id: I5a04d3bba29581dedf05e21b8b20d79afa9b405a
|
33083d626dbf2c8b06badfd73f50e98114483059 |
|
19-Jan-2017 |
Calin Juravle <calin@google.com> |
Rename offline_profiling_info to profile_compilation_info This solves a long standing TODO to align the names of the files and the class. Bug: 32434870 Test: test-art-host Change-Id: I2707da8fef8736a7223189d894fc00ff11bfab12
|
138dbff9246c89ac9fbe0b086b54fdab3f4451fb |
|
28-Jun-2016 |
Calin Juravle <calin@google.com> |
Clean up profiler options - remove obsolete options - using ProfileSaverOptions instead of hard-coded values in the profile saver Bug: 24698874 Change-Id: I4ff535d29a644d1bd5509844f89615b70a723749 Test: cmdline_parser_test, gtest and run-tests pass.
|
27ed3a44e87690595f612f6ca03a6c8e6f38451c |
|
18-May-2016 |
Mathieu Chartier <mathieuc@google.com> |
Add methods with samples during launch to profile For the snapshot taken after application launch we look at all of the methods with one or more samples. Bug: 28750506 (cherry picked from commit c600eaa1089342db81ac1869437199efc1f6053b) Change-Id: Id8de4ee61c3f0b7594e638049fdd9d0848b49684
|
c600eaa1089342db81ac1869437199efc1f6053b |
|
18-May-2016 |
Mathieu Chartier <mathieuc@google.com> |
Add methods with samples during launch to profile For the snapshot taken after application launch we look at all of the methods with one or more samples. Launch time: books: 1933ms -> 1457ms (33% speedup). plus: 1361ms -> 1260ms (8% speedup) music: 3085ms -> 2963ms (4% speedup) maps: 1583ms -> 1390ms (14% speedup) Oat sizes: books: 10871424 -> 13365888 (+23%) plus: 17715624 -> 19493288 (+13%) music: 17076864 -> 18289280 (+7%) maps: 32264832 -> 35787392 (+12%) Bug: 28750506 Change-Id: I3a955dc74b41a96911254ac5087de77bea2267c7
|
a26389234ac66a4a5042c7bf7195c6531663d24d |
|
29-Apr-2016 |
Calin Juravle <calin@google.com> |
Adjust ProfileSaver strategy Change to a notification based strategy (instead of polling): - the JIT notifies the ProfileSaver everytime it attempts a compilation or generate (in a task) a ProfileInfo object for the method - once a certain number of hot methods notification are received, ProfileSaver wakes up the thread to do the analysis - a wake up does not equal to I/O since the during processing we might realized that's actually not enough new data. - ProfileSaver throtles the request and ensures it doesn't do the processing more often than kMinSavePeriodNs. The new strategy avoids waking the thread unnecessary during extended idle periods when we don't JIT. Bug: 26815940 (cherry picked from commit 5fbb0fe0625a1f76aa33cd78ccf1a17b00d8f6d1) Change-Id: Ifbac3a53c025e00a3faab6784bbfa679c6b42acb
|
5fbb0fe0625a1f76aa33cd78ccf1a17b00d8f6d1 |
|
29-Apr-2016 |
Calin Juravle <calin@google.com> |
Adjust ProfileSaver strategy Change to a notification based strategy (instead of polling): - the JIT notifies the ProfileSaver everytime it attempts a compilation or generate (in a task) a ProfileInfo object for the method - once a certain number of hot methods notification are received, ProfileSaver wakes up the thread to do the analysis - a wake up does not equal to I/O since the during processing we might realized that's actually not enough new data. - ProfileSaver throtles the request and ensures it doesn't do the processing more often than kMinSavePeriodNs. The new strategy avoids waking the thread unnecessary during extended idle periods when we don't JIT. Bug: 26815940 Change-Id: I24cb15daead5c5a5395ae6f5f79549e39e2f3011
|
ffc87076dda9878cb2cc098149bae441d38b9268 |
|
20-Apr-2016 |
Calin Juravle <calin@google.com> |
Split profile recording from jit compilation We still use ProfileInfo objects to record profile information. That gives us the flexibility to add the inline caches in the future and the convenience of the already implemented GC. If UseJIT is false and SaveProfilingInfo true, we will only record the ProfileInfo and never launch compilation tasks. Bug: 27916886 (cherry picked from commit e5de54cfab5f14ba0b8ff25d8d60901c7021943f) Change-Id: I68afc181d71447895fb12346c1806e99bcab1de2
|
e5de54cfab5f14ba0b8ff25d8d60901c7021943f |
|
20-Apr-2016 |
Calin Juravle <calin@google.com> |
Split profile recording from jit compilation We still use ProfileInfo objects to record profile information. That gives us the flexibility to add the inline caches in the future and the convenience of the already implemented GC. If UseJIT is false and SaveProfilingInfo true, we will only record the ProfileInfo and never launch compilation tasks. Bug: 27916886 Change-Id: I6e4768dc5d58f2f85f947b276b4244aa11ce3fca
|
20b7e3b4e801b06f0037651354f352523c93f5e3 |
|
18-Apr-2016 |
Calin Juravle <calin@google.com> |
Fix tracking foreign dex files Apps which share the same VM will have different application data directories. We used to store only the first one registered and miss subsequent registrations. Bug: 28012567 (cherry picked from commit 20ae79370a14c17dfb037914995d6430774fe492) Change-Id: I2c19de1406b38a376995f1524014cb8a1daa9d82
|
698f4d1102e772a9dd1c4a224bff0f3eec03e6cb |
|
30-Mar-2016 |
Calin Juravle <calin@google.com> |
Fix and tune ProfileSaver - the statement to mark the profile saved was not guarded by the right condition. - increase the backoff to 2x and maximum period time to 10 minutes. As part of this change also - fix typos - remove uneeded warning - add more VLOGs for easier debuging in the future Bug: 27914456 (cherry picked from commit 0cdaa6cdbeadceaee3a1acc641e7cc2548e125d9) Change-Id: I76ddc6ced897bb91cfbd2a0cb6614bdeeafb9ee9
|
6726546bf3fd6bdb96a34197119d210bccda7e01 |
|
18-Mar-2016 |
Calin Juravle <calin@google.com> |
Improve ProfileSaver to cache data and do minimal I/O This CLs introducing caching to further optimize the I/O performed by the ProfileSaver. The cache stats are also recorded. Resolved classes are captured and cached after 2 seconds but written later during application lifetime. Methods are also cached and the write got smarter to avoid reading/writing them if it's not needed. On non scientific experiments the size of the cache reaches just a few hundreds uint16_t values kept in set, so its impact is minimal. In terms of how much data we write. In the same non scientific experiments this reduces the total bytes written by at least 2-3x. In the first few minutes of after the boot gmscore writes ~3KB (down from 9kb) and quicksearchlauncher writes ~20KB (down from 40KB). Bug: 27600652 (cherry picked from commit 85f7bf3bbfa17d65ff77e3e826b5f7aff45838a9) Change-Id: I6ecb04ce81b281d1c1538060dbbaeeeb08906775
|
b9c1b9bdd7689c0e80c64c371581f99e53749e05 |
|
17-Mar-2016 |
Calin Juravle <calin@google.com> |
Improve resolved classes saving strategy If we already have a non empty profile file it means that we already saved once the resolved classes. So there's no need to hurry up and start the profile saver eagerly after 2s. Bug: 27600652 (cherry picked from commit c15e566b36170237f01ccefc12129c1578a02140) Change-Id: Iecc730c25eab779efccbbde66432dbbc61192e8a
|
b8e69994d10534e0f4f96878725bc53e531f2c6f |
|
09-Mar-2016 |
Calin Juravle <calin@google.com> |
Add ProfileSaver stats and dump them during SigQuit Bug: 27516906 (cherry picked from commit c19c1c2e1def1f4f5ab5fd9e71b1a6f76d42988f) Change-Id: I7d2b1091c3523805ef0f87df42feed1098678aad
|
20ae79370a14c17dfb037914995d6430774fe492 |
|
18-Apr-2016 |
Calin Juravle <calin@google.com> |
Fix tracking foreign dex files Apps which share the same VM will have different application data directories. We used to store only the first one registered and miss subsequent registrations. Bug: 28012567 Change-Id: I27c2aa2efa938b072be7c73bb778db82f80fcf1e
|
0cdaa6cdbeadceaee3a1acc641e7cc2548e125d9 |
|
30-Mar-2016 |
Calin Juravle <calin@google.com> |
Fix and tune ProfileSaver - the statement to mark the profile saved was not guarded by the right condition. - increase the backoff to 2x and maximum period time to 10 minutes. As part of this change also - fix typos - remove uneeded warning - add more VLOGs for easier debuging in the future Bug: 27914456 Change-Id: I877c3256aa96d727ac4f443dc6e1f2bdb33c56c6
|
85f7bf3bbfa17d65ff77e3e826b5f7aff45838a9 |
|
18-Mar-2016 |
Calin Juravle <calin@google.com> |
Improve ProfileSaver to cache data and do minimal I/O This CLs introducing caching to further optimize the I/O performed by the ProfileSaver. The cache stats are also recorded. Resolved classes are captured and cached after 2 seconds but written later during application lifetime. Methods are also cached and the write got smarter to avoid reading/writing them if it's not needed. On non scientific experiments the size of the cache reaches just a few hundreds uint16_t values kept in set, so its impact is minimal. In terms of how much data we write. In the same non scientific experiments this reduces the total bytes written by at least 2-3x. In the first few minutes of after the boot gmscore writes ~3KB (down from 9kb) and quicksearchlauncher writes ~20KB (down from 40KB). Bug: 27600652 Change-Id: I3a4e7051ccf04ac8fbd5896d328692db773e979d
|
c15e566b36170237f01ccefc12129c1578a02140 |
|
17-Mar-2016 |
Calin Juravle <calin@google.com> |
Improve resolved classes saving strategy If we already have a non empty profile file it means that we already saved once the resolved classes. So there's no need to hurry up and start the profile saver eagerly after 2s. Bug: 27600652 Change-Id: I92ac5869bf68c8d6cbac8fc1503fe3c4930241b4
|
c19c1c2e1def1f4f5ab5fd9e71b1a6f76d42988f |
|
09-Mar-2016 |
Calin Juravle <calin@google.com> |
Add ProfileSaver stats and dump them during SigQuit Bug: 27516906 Change-Id: I7d2b1091c3523805ef0f87df42feed1098678aad
|
c90bc92bc577020ff4d3caced4cee1cdf41fa5de |
|
24-Feb-2016 |
Calin Juravle <calin@google.com> |
Record foreign dex files loaded by the app in the profile A foreign dex file is a file which is not owned by the app (it's not part of its code paths or its private data directory). When such a dex file is loaded by the app, the runtime will record a marker in a dedicated profile folder (foreing_dex_profile_path). The marker is just a file named after the canonical location of the dex file where '/' is replaced by '@'. The markers will be used by the system server system server to decide if the apk should be fully or profile guide compiled. Bug: 27334750 Bug: 26080105 (cherry picked from commit 86a9ebe4197e963249ffbbaa1830da97ed642fa5) Change-Id: I8be1fd4d854fa1e23c3c1054c9c083ad7b27317b
|
86a9ebe4197e963249ffbbaa1830da97ed642fa5 |
|
24-Feb-2016 |
Calin Juravle <calin@google.com> |
Record foreign dex files loaded by the app in the profile A foreign dex file is a file which is not owned by the app (it's not part of its code paths or its private data directory). When such a dex file is loaded by the app, the runtime will record a marker in a dedicated profile folder (foreing_dex_profile_path). The marker is just a file named after the canonical location of the dex file where '/' is replaced by '@'. The markers will be used by the system server system server to decide if the apk should be fully or profile guide compiled. Bug: 27334750 Bug: 26080105 Change-Id: If4fa8208be4e2f6f0b748b8a5417c4ae9c2d5df6
|
c5dd319c574f67d11a71f1b60ac6c34bfe93b750 |
|
10-Dec-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add and use loaded class profiling Class profiling is a way to keep track of which classes are resolved. From here the compiler can use this information to generate a smaller app image. TODO: Add tests for profile stuff. Bug: 22858531 (cherry picked from commit 8913fc1a27df8cf3b37fd99e94d87f290591328e) Change-Id: Ifcd09230cbdc266305bc1247e0d31e7920eb353e
|
8913fc1a27df8cf3b37fd99e94d87f290591328e |
|
10-Dec-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add and use loaded class profiling Class profiling is a way to keep track of which classes are resolved. From here the compiler can use this information to generate a smaller app image. TODO: Add tests for profile stuff. Bug: 22858531 Change-Id: I91ccd686394cc2517512f66abb0e277f3d26d4da
|
b4eddd21c364c51b6fc5c439cda6958ae255dcd5 |
|
14-Jan-2016 |
Calin Juravle <calin@google.com> |
Add profile support for apps with shared runtime. - extend ProfileSaver to track different dex locations to different profile files. - allow repeated calls to Runtime::RegisterAppInfo() which will register a new pair <profile_file, locations_to_track> with the profile saver. Bug: 26080105 Change-Id: I58c4587d5f462c557411ad7126a00c29cd7db3a6
|
998c21661b5074c293cae818d0ab7c44dcda3a66 |
|
21-Dec-2015 |
Calin Juravle <calin@google.com> |
Perform profile file analysis in dex2oat Dex2oat can accept now multiple profile files to drive a profile based compilation. --profile-file and --reference-profile-file speficy a pair of profile files which will be evaluated for significant differences before starting the compilation. If the difference is insignificant (according to some internal metric) the compilation is skipped and a message is logged. Multiple pairs of --profile-file and --reference-profile-file can be specified. This effectively enables multi user support since profiles for different users will be kept separately. --reference-profile-file can be left out, case in which the decision is solely based on --profile-file. If both flags are present, then their repetition should form unique pairs. If the compilation is performed and --reference-profile-file is given then its data is merged with the data from the corresponding --profile- file and saved back to the file. If no profile flags are given, dex2oat proceeds as before and compiles the dex files unconditionally. As part of this change - merge ProfileCompilationInfo and OfflineProfilingInfo under the same object. There was no use to keep them separate anymore. - SaveProfilingInfo now merges the data with what was in the file before instead of overwriting it. Bug: 26080105 Change-Id: Ia8c8b55587d468bca5179f78941854285426234d
|
4d77b6a511659f26fdc711e23825ffa6e7feed7a |
|
01-Dec-2015 |
Calin Juravle <calin@google.com> |
Save profile information in a separate thread. Previously we would save the profiling information only when the app was sent to background. This missed on an important number of updates on the jit code cache and it didn't work for background processes. Bug: 26080105 Change-Id: I84075629870e69b3ed372f00f4806af1e9391e0f
|