8f4b056427a9d2321e3aa4f21ca8ffb18b3e5ae6 |
|
02-Mar-2018 |
David Sehr <sehr@google.com> |
Move most of runtime/base to libartbase/base Enforce the layering that code in runtime/base should not depend on runtime by separating it into libartbase. Some of the code in runtime/base depends on the Runtime class, so it cannot be moved yet. Also, some of the tests depend on CommonRuntimeTest, which itself needs to be factored (in a subsequent CL). Bug: 22322814 Test: make -j 50 checkbuild make -j 50 test-art-host Change-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2 Merged-In: c431b9dc4b23cc950eb313695258df5d89f53b22 (cherry picked from commit c431b9dc4b23cc950eb313695258df5d89f53b22)
|
e45b3b18c97ba00ec2c0b79c9cda9f05799189f3 |
|
27-Feb-2018 |
Roland Levillain <rpl@google.com> |
Fix a dead lock between garbage colletion and sample-based tracing. We have been observing some rare deadlock in run-test 099-vmdebug between - a thread doing garbage collection, which had disabled weak references access and was trying to (re-)acquire the mutator lock; - a sampling profiling thread used in sample-based tracing, which had acquired the mutator lock exclusively and was blocking on a condition variable regarding weak references access. This change prevents garbage collection from occurring when sampling the thread stacks in order to avoid this deadlock. Test: for i in $(seq 1 10); do art/test/testrunner/testrunner.py --ndebuggable --debuggable --host --64 --verbose --debug --ndebug --gcstress -t 099-vmdebug; done Bug: 73624630 Change-Id: I73272c2b1d7aa2554a88bb128d3646193bd1db04
|
b2ec9f5c128673c43f776cbe12c8eeb0a6884ebb |
|
21-Feb-2018 |
David Sehr <sehr@google.com> |
Remove duplication, split tests The code move to libdexfile/dex/descriptors_names.cc apparently did not remove the original code from runtime/utils.cc. Fix that duplication and all the header mentions needed. Also, split the test files to go along with the new locations for the code to be tested. Bug: 22322814 Test: make -j 50 checkbuild make -j 50 test-art-host-gtest flash & boot marlin Change-Id: Ie734672c4bca2c647d8016291f910b5608674545
|
9e734c7ab4599d7747a05db0dc73c7b668cb6683 |
|
05-Jan-2018 |
David Sehr <sehr@google.com> |
Create dex subdirectory Move all the DexFile related source to a common subdirectory dex/ of runtime. Bug: 71361973 Test: make -j 50 test-art-host Change-Id: I59e984ed660b93e0776556308be3d653722f5223
|
4557b3858a66aa20e42bce937e1f0620aad880a2 |
|
03-Jan-2018 |
Orion Hodson <oth@google.com> |
ART: Rename Atomic::CompareExchange methods Renames Atomic::CompareExchange methods to Atomic::CompareAndSet equivalents. These methods return a boolean and do not get the witness value. This makes space for Atomic::CompareAndExchange methods in a later commit that will return a boolean and get the witness value. This is pre-work for VarHandle accessors which require both forms. Bug: 65872996 Test: art/test.py --host -j32 Change-Id: I9c691250e5556cbfde7811381b06d2920247f1a1
|
772099a8976cb8341475c42bfc595373778217dd |
|
21-Nov-2017 |
Alex Light <allight@google.com> |
Add remaining DDMS messages into DdmPublishChunk This ensures that one can get notified of every DDMS chunk that would be published. Add a test to ensure that appropriate ddms events are sent. We also refactor the underlying code so that the only way these events are sent is through the DdmPublishChunk callback. Test: ./test.py --host -j50 Bug: 62821960 Change-Id: I0c4a60b75615c206a27aff17df853b53cf5e8c96
|
373a9b5c718a45ac484afcf4fe6ce84f4bb562b3 |
|
18-Oct-2017 |
Andreas Gampe <agampe@google.com> |
ART: Depend on libnativehelper headers only Depend on header-only versions where possible. Move projects excluding libart to libnativehelper_header_only. Bug: 65522645 Test: mmma art Change-Id: I53dd3b2a97e94ee685f72de007ed3858f7f5c6b6
|
05f47743e604e9b3b1de9ec930c6af6d9780c440 |
|
14-Sep-2017 |
Alex Light <allight@google.com> |
Revert "Revert "Make WatchedFramePop instrumentation event pure-virtual"" Forgot to revert this. This reverts commit b2c8fc62f4e7889300da2d26294537194e37b926. Reason for revert: Fixed issue with tests Change-Id: I1fd5a2759c67a906d55137e2b6548726af2c8e4f Test: treehugger
|
9fb1ab1f6bb58bdaccef78bc81b3202d0121e2ed |
|
05-Sep-2017 |
Alex Light <allight@google.com> |
Revert "Revert "JVMTI Exception and ExceptionCatch events"" Fixed error where we were incorrectly not updating a ShadowFrame dex_pc causing deoptimization errors. Bug: 62821960 Bug: 65049545 Test: ./test.py --host -j50 Test: ./art/tools/run-libcore-tests.sh \ --mode=host --variant-X32 --debug This reverts commit 959742483885779f106e000df6dd422fc8657931. Change-Id: I91ab2bc3e645ddf0359c189b19a59a3ecf0d8921
|
959742483885779f106e000df6dd422fc8657931 |
|
04-Sep-2017 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "JVMTI Exception and ExceptionCatch events" Breaks tests. Bug: 62821960 Bug: 65049545 This reverts commit 798eab03120f6189e8f6aa804d67af1b1d9f00b0. Change-Id: Ie96903df06bbbe41f288f5b75a5114b142998fac
|
b2c8fc62f4e7889300da2d26294537194e37b926 |
|
04-Sep-2017 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Make WatchedFramePop instrumentation event pure-virtual" Builds on top of a change that breaks tests. This reverts commit a0e0f103956fab23d1bfb08a69dadb0bc81d1a35. Change-Id: I6a35fc2f4a099e807b5ed81b93a3f9a8d8beeea2
|
a0e0f103956fab23d1bfb08a69dadb0bc81d1a35 |
|
01-Sep-2017 |
Alex Light <allight@google.com> |
Make WatchedFramePop instrumentation event pure-virtual All the other events are pure virtual but this one had an (empty) default implementation. Change the event to make it consistent with all the others. Test: Builds Test: Treehugger Change-Id: I3d81914d067b305f09d4072c443e5ac9027af443
|
798eab03120f6189e8f6aa804d67af1b1d9f00b0 |
|
23-Aug-2017 |
Alex Light <allight@google.com> |
JVMTI Exception and ExceptionCatch events Add support for the JVMTI can_generate_exception_events capability. This includes the Exception and ExceptionCatch events and all their associated behaviors. Test: ./test.py --host -j50 Bug: 62821960 Bug: 65049545 Change-Id: I21cc8522c01033cdeb47bf34fa433bf04bf7ca5c
|
6e1607e247d979a1671a1fd5a98de3f1031fe719 |
|
23-Aug-2017 |
Alex Light <allight@google.com> |
Rename instrumentation ExceptionCaught to ExceptionThrown The instrumentation ExceptionCaught event was badly named since it is actually sent at the time the exception is thrown and is sent even if the exception is never actually caught. Rename it and associated methods/fields to ExceptionThrown to more accurately reflect the event's semantics. Test: ./test.py --host -j50 Change-Id: I1e9c401ab619259b25928dbf19f62d3fa9573d47
|
e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7 |
|
19-Jul-2017 |
Steven Moreland <smoreland@google.com> |
art: use proper nativehelper headers libnativeheader exports headers under nativeheader. These were available before incorrectly as global headers in order to give access to jni.h. Test: modules using art find headers Bug: 63762847 Change-Id: I5c820d677e94e07b2859e78610bc997fe51b41dc
|
d76615851af31791c7b1549e8c4609152237b9ce |
|
01-May-2017 |
Alex Light <allight@google.com> |
Handler-ize InstrumentationListener and related code We are going to be making instrumentation listeners that can cause suspensions during their running. We explicitly handler-ize all the instrumentation listener functions in order to ensure this is safe. Bug: 34414073 Test: ./test.py --host --ntrace --trace -j40 Change-Id: Ic719080d0991b104d41b7757df8d1f332c72cd04
|
513061a792b22c417c938d31c19581390709561c |
|
01-Jun-2017 |
Andreas Gampe <agampe@google.com> |
ART: Clean up thread.h and thread_list.h Remove dependency on stack.h and gc_root.h. Remove unused object callbacks include. Factor out ManagedStack into its own set of files. Fix up users of transitive includes. Test: m test-art-host Change-Id: I01286c43d8c7710948c161b1348faabb05922e59
|
4ba388a39333b13f0f3bcde826444c77fd7166ed |
|
27-Jan-2017 |
Alex Light <allight@google.com> |
Remove Deoptimization code from class transformation. Since we removed the current_method from the compiled code we don't need to deoptimize all frames anymore. This is a partial revert of commit dba614810. Bug: 32369913 Bug: 33630159 Test: ART_TEST_TRACE=true \ ART_TEST_JIT=true \ ART_TEST_INTERPRETER=true mma -j40 test-art-host Change-Id: I44a6dd89e1d96bd8c82c2c24a2f42fef023a80be
|
8a5ab9102fe705b63eda6e6bcfe98ee1c03e5a6c |
|
20-Jan-2017 |
Shukang Zhou <shukang@google.com> |
[ART] Prepare streaming output of method tracing for developer use. Changes include: * Flush the buffer to file when tracing ends, so every record is preserved. * At the end of the streaming output, add what's the header when the output mode is not strreaming (called 'trace summary' in code). * A new special token (kOpTraceSummary) is added for this purpose. * The summary used to be written to a .sec file, which has permission issues with non-rooted devices. * Update the streaming output converter (stream-trace-converter.py) to handle the updated format. When the trace summary is present, it is used to populate the output header, which provides more complete info than existing implementation where some info is inferred from the records. The changes to trace.h/cc impact streaming output mode only. The updated stream-trace-converter.py works with or without the trace summary at the file end, so pulling the file in the middle is still supported. Bug: b/33300765 Test: m -j48 ART_TEST_TRACE=true ART_TEST_TRACE_STREAM=true test-art-host I also tested manually: flashed a Nexus 6P, collected traces, and parsed them in Studio. Change-Id: I697d2ec09bed56033cfce9a8f27dc4710d8b0798
|
46ee31b67d7ee1bd085fbc240502053caa3cf8fa |
|
14-Dec-2016 |
Andreas Gampe <agampe@google.com> |
ART: Move to libbase StringPrintf Remove ART's StringPrintf implementation. Fix up clients. Add missing includes where necessary. Test: m test-art-host Change-Id: I564038d5868595ac3bb88d641af1000cea940e5a
|
709b070044354d9f47641f273edacaeeb0240ab7 |
|
13-Oct-2016 |
David Sehr <sehr@google.com> |
Remove mirror:: and ArtMethod deps in utils.{h,cc} The latest chapter in the ongoing saga of attempting to dump a DEX file without having to start a whole runtime instance. This episode finds us removing references to ArtMethod/ArtField/mirror. One aspect of this change that I would like to call out specfically is that the utils versions of the "Pretty*" functions all were written to accept nullptr as an argument. I have split these functions up as follows: 1) an instance method, such as PrettyClass that obviously requires this != nullptr. 2) a static method, that behaves the same way as the util method, but calls the instance method if p != nullptr. This requires using a full class qualifier for the static methods, which isn't exactly beautiful. I have tried to remove as many cases as possible where it was clear p != nullptr. Bug: 22322814 Test: test-art-host Change-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24
|
0795f23920ee9aabf28e45c63cd592dcccf00216 |
|
28-Sep-2016 |
Mathieu Chartier <mathieuc@google.com> |
Clean up ScopedThreadStateChange to use ObjPtr Also fixed inclusion of -inl.h files in .h files by adding scoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h Changed AddLocalReference / Decode to use ObjPtr. Changed libartbenchmark to be debug to avoid linkage errors. Bug: 31113334 Test: test-art-host Change-Id: I4d2e160483a29d21e1e0e440585ed328b9811483
|
bdf7f1c3ab65ccb70f62db5ab31dba060632d458 |
|
31-Aug-2016 |
Andreas Gampe <agampe@google.com> |
ART: SHARED_REQUIRES to REQUIRES_SHARED This coincides with the actual attribute name and upstream usage. Preparation for deferring to libbase. Test: m Test: m test-art-host Change-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518
|
542451cc546779f5c67840e105c51205a1b0a8fd |
|
26-Jul-2016 |
Andreas Gampe <agampe@google.com> |
ART: Convert pointer size to enum Move away from size_t to dedicated enum (class). Bug: 30373134 Bug: 30419309 Test: m test-art-host Change-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269
|
0f7e8f59698265d416d40844233bb09d02e7fc33 |
|
19-Jul-2016 |
Alex Light <allight@google.com> |
Fix stream-tracing with default methods Test: Ran mma ART_TEST_TRACE=true ART_TEST_TRACE_STREAM=true -j40 test-art-host Bug: 30102284 Bug: 30286605 Change-Id: I12f2534bc2d42a7504e6c1972c4cfdda2f77286f
|
a344f6a153d84d9adc4f4d3c608538d7741168a9 |
|
20-Jul-2016 |
Alex Light <allight@google.com> |
Make stream tracing have a higher thread count on host Test: mma ART_TEST_TRACE_STREAM=true -j40 test-art-host-run-test-debug-prebuild-optimizing-relocate-stream-cms-checkjni-image-npictest-ndebuggable-001-HelloWorld32 Bug: 30229615 Change-Id: Id396f569b9e21ff764562005624aabc964d4e95a
|
df8789252252c77660daf5d602d425b60b344b08 |
|
14-Aug-2015 |
Andreas Gampe <agampe@google.com> |
ART: Add FdFile constructors Make Open protected, and expose constructors instead. Add a move constructor and move assignment operator. Add OS functions that return the FdFile non-pointer version. Add tests. Bug: 21192156 Test: m test-art-host Test: m test-art-target (shamu) Change-Id: I83e390edde7cd37c900e9d5c3e4d21da22981b3f
|
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
|
9ea02c4f01b079bf6a5f49c62cb59fa5791cbc60 |
|
04-Mar-2016 |
Hiroshi Yamauchi <yamauchi@google.com> |
Add ScopedGCCriticalSection to Trace::StopTracing. This attempts to fix a deadlock in 545-tracing-and-jit with the read barrier config. I think the cause is the same as what CL 174096 describes and it missed this one in Trace::StopTracing. Bug: 26429931 Bug: 12687968 Change-Id: I02ca45e2667c9f6afc27d73919d6c31d204cc621
|
81f0f953c4bb159997046c962d44cb1898b1778d |
|
20-Jan-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Move backward branch instrumentation to all branch. This is in preparation for osr, and later dead branch profiling. Change-Id: I4597c0784c894c310f295dd534967d67dcefa419
|
f83e733618066e3c672c9a7ee872a3bba8202e7f |
|
04-Nov-2015 |
Calin Juravle <calin@google.com> |
Move the trace file out of the profiles folder. /dalvik-cache/profiles/ is going away. Create the trace file under /data/misc/trace. This enable tracing without forcing SElinux into permissive mode. Bug: 24698874 Bug: 25612377 Change-Id: I78d09ef629bebe635c3baabaf88f01996d3333e5
|
4b8f1ecd3aa5a29ec1463ff88fee9db365f257dc |
|
26-Aug-2015 |
Roland Levillain <rpl@google.com> |
Use ATTRIBUTE_UNUSED more. Use it in lieu of UNUSED(), which had some incorrect uses. Change-Id: If247dce58b72056f6eea84968e7196f0b5bef4da
|
7778b880b9cf46fe7a303b11477bd92b5cf65316 |
|
06-Oct-2015 |
Mathieu Chartier <mathieuc@google.com> |
Disable class unloading when tracing is active Tracing keeps a lot of pointers to ArtMethods that could belong to classes that we are going to unload. A quick fix for this is to disable class unloading when tracing is active. Bug: 24414774 Bug: 22720414 Change-Id: Ia5619cbd7c9fd558eaa2a5000871d287213c4a76
|
aa5168291c46f9b418d989bccf2d8e09338a83e6 |
|
03-Oct-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add exclusion between instrumentation and GC Instrumentation calls VisitClasses while exclusive holding the mutator lock. This can cause deadlocks since VisitClasses needs to decode JNI weak globals. If the system weak slow path flag is set, then we wait holding locks while exclusive holding the mutator lock. This causes a deadlock since the GC cannot acquire the mutator lock to sweep system weaks. This fixes a deadlock seen in one of the tracing tests. Change-Id: I580152118e068a70f309dcc19df4144afec835dd
|
26f728661a08062a373a3203b72dc2555c2aed2d |
|
15-Sep-2015 |
Sebastien Hertz <shertz@google.com> |
Cleanup thread access in StackVisitor Adds method StackVisitor::GetThread to give access to the visited Thread* so we no longer need to copy that pointer in subclasses. Also adds a few missing const and DISALLOW_COPY_AND_ASSIGN. Change-Id: I57649ee7742ef4ef1e01447ac2fbb66f977b22eb
|
4f55e22630d99ca0edd9e951e5ee96b57bb9b980 |
|
04-Sep-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add and use ScopedSuspendAll Usage replaces most SuspendAll and ResumeAll calls. Change-Id: I355683a5365876242cea85a656dcb58455f7a294
|
5550ca8bcc742b109d77e62f3a0877c667d894d3 |
|
21-Aug-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Record profiling information before Jitting. - Add a new instrumentation kind to record dynamic invokes. - Use the JNI entry point field to store the profiling data. - Record seen receivers for every dynamic invoke. Change-Id: I2c1738ab2a72052d45964d055dc16b44b906e54c
|
673ed3d8aedc5462a47ded827c99f35d46525457 |
|
28-Aug-2015 |
Mathieu Chartier <mathieuc@google.com> |
Revert "Revert "Change dex caches to be weak roots"" This reverts commit 81a9087f0df0518c39405b7d18ba5858a6d8b77b. Boot.oat creation time goes from 4.7s to 4.9s on host due to extra locking. Will try to improve this in another CL. Bug: 23602225 Bug: 22720414 Change-Id: I7e25b75cfb63faa196c7b0f60e46cce50bf12021
|
81a9087f0df0518c39405b7d18ba5858a6d8b77b |
|
28-Aug-2015 |
Brian Carlstrom <bdc@google.com> |
Revert "Change dex caches to be weak roots" This reverts commit 3ae6b1d42523bb2a0ddb5edff1aaf05b592f28f4.
|
3ae6b1d42523bb2a0ddb5edff1aaf05b592f28f4 |
|
14-Aug-2015 |
Mathieu Chartier <mathieuc@google.com> |
Change dex caches to be weak roots Changed dex caches to be weak roots. This is necessary for class unloading since the resolved types arrays would keep classes live when they should be unloaded. Currently the dex caches still don't get freed due to the class loader roots. Also deleted some unused functionality in image writer. Bug: 22720414 Change-Id: If22cb3cad7e3baabc8158a77d7f20799faf4c341
|
90443477f9a0061581c420775ce3b7eeae7468bc |
|
17-Jul-2015 |
Mathieu Chartier <mathieuc@google.com> |
Move to newer clang annotations Also enable -Wthread-safety-negative. Changes: Switch to capabilities and negative capabilities. Future work: Use capabilities to implement uninterruptible annotations to work with AssertNoThreadSuspension. Bug: 20072211 Change-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33
|
7526d783ab68ed1dd53c763c75895cb432532b0f |
|
23-Jun-2015 |
Andreas Gampe <agampe@google.com> |
ART: Fix streaming tracing issues Fix a lock ordering issue in streaming-mode tracing. Fix a moving-GC issue in streaming-mode tracing. DexCache objects are not good keys for a map. Expose streaming mode for testing in run-tests. Bug: 21760614 (cherry picked from commit b91205e40fe692061edde19ecb87d51414a7fcee) Change-Id: Idcd0575684ee3cc0cec3f81b4fdd0d5988c11e8c
|
b91205e40fe692061edde19ecb87d51414a7fcee |
|
23-Jun-2015 |
Andreas Gampe <agampe@google.com> |
ART: Fix streaming tracing issues Fix a lock ordering issue in streaming-mode tracing. Fix a moving-GC issue in streaming-mode tracing. DexCache objects are not good keys for a map. Expose streaming mode for testing in run-tests. Bug: 21760614 Change-Id: Idcd0575684ee3cc0cec3f81b4fdd0d5988c11e8c
|
4d64cd45acc6a26742e8237eb65136998612820d |
|
03-Jun-2015 |
Mathieu Chartier <mathieuc@google.com> |
Fix tracing Move back to 32 bit method IDs, add a bijective map for method IDs. Also some cleanup. (cherry picked from commit d40bcc4fab1589e3aac0f4b59217c6ab4e72102a) Bug: 19264997 Change-Id: Icdd36591df53ff975d30b9000cfe67d3ae8c51d5
|
d40bcc4fab1589e3aac0f4b59217c6ab4e72102a |
|
03-Jun-2015 |
Mathieu Chartier <mathieuc@google.com> |
Fix tracing Move back to 32 bit method IDs, add a bijective map for method IDs. Also some cleanup. Bug: 19264997 Change-Id: Icdd36591df53ff975d30b9000cfe67d3ae8c51d5
|
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
|
e3b034a6f6f0d80d519ab08bdd18be4de2a4a2db |
|
31-May-2015 |
Mathieu Chartier <mathieuc@google.com> |
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
|
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
|
41b175aba41c9365a1c53b8a1afbd17129c87c14 |
|
19-May-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Clean up arm64 kNumberOfXRegisters usage. Avoid undefined behavior for arm64 stemming from 1u << 32 in loops with upper bound kNumberOfXRegisters. Create iterators for enumerating bits in an integer either from high to low or from low to high and use them for <arch>Context::FillCalleeSaves() on all architectures. Refactor runtime/utils.{h,cc} by moving all bit-fiddling functions to runtime/base/bit_utils.{h,cc} (together with the new bit iterators) and all time-related functions to runtime/base/time_utils.{h,cc}. Improve test coverage and fix some corner cases for the bit-fiddling functions. Bug: 13925192 (cherry picked from commit 80afd02024d20e60b197d3adfbb43cc303cf29e0) Change-Id: I905257a21de90b5860ebe1e39563758f721eab82
|
80afd02024d20e60b197d3adfbb43cc303cf29e0 |
|
19-May-2015 |
Vladimir Marko <vmarko@google.com> |
ART: Clean up arm64 kNumberOfXRegisters usage. Avoid undefined behavior for arm64 stemming from 1u << 32 in loops with upper bound kNumberOfXRegisters. Create iterators for enumerating bits in an integer either from high to low or from low to high and use them for <arch>Context::FillCalleeSaves() on all architectures. Refactor runtime/utils.{h,cc} by moving all bit-fiddling functions to runtime/base/bit_utils.{h,cc} (together with the new bit iterators) and all time-related functions to runtime/base/time_utils.{h,cc}. Improve test coverage and fix some corner cases for the bit-fiddling functions. Bug: 13925192 Change-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7
|
8e5bd18fc665d7ec5461ea068e98740a65da754c |
|
06-May-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Add a flag to StackVisitor for inlining. The flag tells whether the stack walk needs to include inlined Java frames. This does not do anything just yet, as we're not inlining anyways. Change-Id: I716e25094fe56fa335ca1f9a398c1bcdba478e73
|
5eae455507399286c845ba54796c47087a72b3e2 |
|
01-Apr-2015 |
Sebastien Hertz <shertz@google.com> |
Support multiple instrumentation clients Changes Instrumentation::ConfigureStubs to support multiple clients that need different levels of instrumenation. A client is identified by a string key used to save the desired instrumentation level. Also adds regression gtest instrumentation_test and some cleanup. Bug: 19829329 (cherry picked from commit 0462c4c87c39db6cfcd338f323844738109ac3c9) Change-Id: I1fc24a86fcb7cb46d4be806895376c25cc0a0b3c
|
0462c4c87c39db6cfcd338f323844738109ac3c9 |
|
01-Apr-2015 |
Sebastien Hertz <shertz@google.com> |
Support multiple instrumentation clients Changes Instrumentation::ConfigureStubs to support multiple clients that need different levels of instrumenation. A client is identified by a string key used to save the desired instrumentation level. Also adds regression gtest instrumentation_test and some cleanup. Bug: 19829329 Change-Id: I1fc24a86fcb7cb46d4be806895376c25cc0a0b3c
|
e34a42cd37b2b3b6b21280df14fa6f40917b5d6e |
|
25-Apr-2015 |
Andreas Gampe <agampe@google.com> |
ART: Fix Trace types, check minimum buf size Also make streaming mode adhere to the given buffer (and fix the case where the buffer is too small for a packet). This is important to not lose too much tracing information when the runtime is destroyed with an unflushed buffer. Change-Id: I6525fe4326ac5c3d7c9cda41c54a2a911ca889b7
|
40da286d3207d88ed8ff3f5caac4873874603428 |
|
27-Feb-2015 |
Andreas Gampe <agampe@google.com> |
ART: Streaming trace mode Add a streaming mode for tracing. Streaming uses a buffer of 16KB and writes to the output when that buffer gets full. Streaming mode can be enabled with -Xmethod-trace-stream and is currently not exposed otherwise. Add a python script that can parse the streaming format, which simply contains strings for newly encountered threads and methods inline, and create output that can be used with traceview. Add Trace::Pause and Trace::Abort, which can pause and abort tracing. Abort is different from Stop in that it does not write the data. Add code to the zygote hooks JNI implementation that pauses tracing before the fork, making sure that a child cannot clobber the parent's data. Add code to the zygote hooks JNI implementation that aborts old tracing and starts new tracing in the child after the fork. Currently base the output on the pid. This will not work on an unmodified device, as the profiles directory is not generally writable, but we do not have enough information at that point. Consider a scheme that restarts tracing later. Change-Id: I93c7bf87e35af582bdfdd3ecc7c52454514220dd
|
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
|
ca71458862be8505330b7fd5649a062f31d143dc |
|
04-Apr-2015 |
Andreas Gampe <agampe@google.com> |
ART: Add Clang's -Wused-but-marked-unused Add detection of wrong unused annotations. Fix our codebase. Change-Id: I85cc20f2eac71c1ec6c5c7cd6efb08454a629634
|
7e7e0f47628fb358da70c5e2766545c4f0596235 |
|
30-Mar-2015 |
Andreas Gampe <agampe@google.com> |
ART: Use enums in Trace Move away from booleans. Will make introduction of streaming mode a bit easier / obvious. Change-Id: Id7ae92f6b97f627e848510d473931537d7db0db8
|
0624a27b9a2951bfcf23321a714543e137836904 |
|
26-Mar-2015 |
John Reck <jreck@google.com> |
Include pid in trace metadata Change-Id: I5d23fc7da94c1a344850833dfbbaa330fdbe28a7
|
bf9fc581e8870faddbd320a935f9a627da724c48 |
|
14-Mar-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add more info to who called SuspendAll Helps diagnose related jank. Change-Id: I38191cdda723c6f0355d0197c494a3dff2b6653c
|
02e5f160d9cc02da20d9e47af30f948c462f7043 |
|
11-Mar-2015 |
Mathieu Chartier <mathieuc@google.com> |
Fix sampling profiler race condition Thread 1 is running RunSamplingThread and has just read trace into the_trace. Thread 2 is calling Trace::Stop and has just suspended all the threads. At this point thread 1 is blocked on the SuspendAll. Thread 2 goes and deletes the trace which Thread 1 still has a pointer to, calls ResumeAll(). At this point thread 1 suspends the threads and adds samples to the just deleted trace. The fix is to join the thread before we delete the trace. Bug: 18950006 Change-Id: I3090c4dac392a4e5d880c4dc8d9385aef53c7425
|
14691c5e786e8c2c5734f687e4c96217340771be |
|
05-Mar-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Compute the right catch location for the debugger. Also remove tls ThrowLocation, it is not needed anymore. Change-Id: I78fddf09ce968ca475e39c17fa76d699c589c8d9
|
e5f13e57ff8fa36342beb33830b3ec5942a61cca |
|
24-Feb-2015 |
Mathieu Chartier <mathieuc@google.com> |
Revert "Revert "Add JIT"" Added missing EntryPointToCodePointer. This reverts commit a5ca888d715cd0c6c421313211caa1928be3e399. Change-Id: Ia74df0ef3a7babbdcb0466fd24da28e304e3f5af
|
a5ca888d715cd0c6c421313211caa1928be3e399 |
|
24-Feb-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Add JIT" Sorry, run-test crashes on target: 0-05 12:15:51.633 I/DEBUG (27995): Abort message: 'art/runtime/mirror/art_method.cc:349] Check failed: PcIsWithinQuickCode(reinterpret_cast<uintptr_t>(code), pc) java.lang.Throwable java.lang.Throwable.fillInStackTrace() pc=71e3366b code=0x71e3362d size=ad000000' 10-05 12:15:51.633 I/DEBUG (27995): r0 00000000 r1 0000542b r2 00000006 r3 00000000 10-05 12:15:51.633 I/DEBUG (27995): r4 00000006 r5 b6f9addc r6 00000002 r7 0000010c 10-05 12:15:51.633 I/DEBUG (27995): r8 b63fe1e8 r9 be8e1418 sl b6427400 fp b63fcce0 10-05 12:15:51.633 I/DEBUG (27995): ip 0000542b sp be8e1358 lr b6e9a27b pc b6e9c280 cpsr 40070010 10-05 12:15:51.633 I/DEBUG (27995): Bug: 17950037 This reverts commit 2535abe7d1fcdd0e6aca782b1f1932a703ed50a4. Change-Id: I6f88849bc6f2befed0c0aaa0b7b2a08c967a83c3
|
2535abe7d1fcdd0e6aca782b1f1932a703ed50a4 |
|
17-Feb-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add JIT Currently disabled by default unless -Xjit is passed in. The proposed JIT is a method JIT which works by utilizing interpreter instrumentation to request compilation of hot methods async during runtime. JIT options: -Xjit / -Xnojit -Xjitcodecachesize:N -Xjitthreshold:integervalue The JIT has a shared copy of a compiler driver which is accessed by worker threads to compile individual methods. Added JIT code cache and data cache, currently sized at 2 MB capacity by default. Most apps will only fill a small fraction of this cache however. Added support to the compiler for compiling interpreter quickened byte codes. Added test target ART_TEST_JIT=TRUE and --jit for run-test. TODO: Clean up code cache. Delete compiled methods after they are added to code cache. Add more optimizations related to runtime checks e.g. direct pointers for invokes. Add method recompilation. Move instrumentation to DexFile to improve performance and reduce memory usage. Bug: 17950037 Change-Id: Ifa5b2684a2d5059ec5a5210733900aafa3c51bca
|
aaebaa0121be3b9d9f13630585304482cbcaeb4b |
|
26-Jan-2015 |
Igor Murashkin <iam@google.com> |
art: Refactor RuntimeOptions/ParsedOptions Refactor the RuntimeOptions to be a type-safe map (VariantMap, see runtime_options.h) and the ParsedOptions to delegate the parsing to CmdlineParser (see cmdline/cmdline_parser.h). This is the start of a command line parsing refactor, and may include more in the future (dex2oat, patchoat, etc). For more details of the command line parsing generator usage see cmdline/README.md Change-Id: Ic67c6bca5e1f33bf2ec60e2e3ff8c366bab91563
|
0a18df82f4dea95b7398f8c934341fccbf04eeee |
|
10-Jan-2015 |
Elliott Hughes <enh@google.com> |
Clean up some #ifdefs. Only the Mac doesn't have POSIX clocks. (And it still doesn't, a decade later.) glibc gained pthread_setname_np in 2.12. Only the Mac doesn't have prctl. Change-Id: I218e409f7e133736e15fb68e8a254cdc5799d667
|
956af0f0cb05422e38c1d22cbef309d16b8a1a12 |
|
11-Dec-2014 |
Elliott Hughes <enh@google.com> |
Remove portable. Change-Id: I3bf3250fa866fd2265f1b115d52fa5dedc48a7fc
|
a1785c5cd88f6256a838a95c93ac0a1bee6c5145 |
|
26-Nov-2014 |
Andreas Gampe <agampe@google.com> |
ART: Use Overwrite instead of Put Allow threads exiting twice when tracing. Bug: 18469797 Change-Id: I88ce5ea8237e53a76ad68fd4b28a367f58e6d635
|
4303ba97313458491e038d78efa041d41cf7bb43 |
|
06-Nov-2014 |
Andreas Gampe <agampe@google.com> |
ART: Track Flush & Close in FdFile Implement a check that aborts when a file hasn't been explicitly flushed and closed when it is destructed. Add WARN_UNUSED to FdFile methods. Update dex2oat, patchoat, scoped_flock and some gtests to pass with this. (cherry picked from commit 9433ec60b325b708b9fa87e699ab4a6565741494) Change-Id: I9ab03b1653e69f44cc98946dc89d764c3e045dd4
|
9433ec60b325b708b9fa87e699ab4a6565741494 |
|
06-Nov-2014 |
Andreas Gampe <agampe@google.com> |
ART: Track Flush & Close in FdFile Implement a check that aborts when a file hasn't been explicitly flushed and closed when it is destructed. Add WARN_UNUSED to FdFile methods. Update dex2oat, patchoat, scoped_flock and some gtests to pass with this. Change-Id: I9ab03b1653e69f44cc98946dc89d764c3e045dd4
|
6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f |
|
31-Oct-2014 |
Ian Rogers <irogers@google.com> |
Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags. Fix associated errors about unused paramenters and implict sign conversions. For sign conversion this was largely in the area of enums, so add ostream operators for the effected enums and fix tools/generate-operator-out.py. Tidy arena allocation code and arena allocated data types, rather than fixing new and delete operators. Remove dead code. Change-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b
|
cf7f19135f0e273f7b0136315633c2abfc715343 |
|
23-Oct-2014 |
Ian Rogers <irogers@google.com> |
C++11 related clean-up of DISALLOW_.. Move DISALLOW_COPY_AND_ASSIGN to delete functions. By no having declarations with no definitions this prompts better warning messages so deal with these by correcting the code. Add a DISALLOW_ALLOCATION and use for ValueObject and mirror::Object. Make X86 assembly operand types ValueObjects to fix compilation errors. Tidy the use of iostream and ostream. Avoid making cutils a dependency via mutex-inl.h for tests that link against libart. Push tracing dependencies into appropriate files and mutex.cc. x86 32-bit host symbols size is increased for libarttest, avoid copying this in run-test 115 by using symlinks and remove this test's higher than normal ulimit. Fix the RunningOnValgrind test in RosAllocSpace to not use GetHeap as it returns NULL when the heap is under construction by Runtime. Change-Id: Ia246f7ac0c11f73072b30d70566a196e9b78472b
|
e094b87c6f6ea9ebf83aa56a3114ac59556aaf9f |
|
14-Oct-2014 |
Jeff Hao <jeffhao@google.com> |
Store exiting thread ids and names while tracing to output later. Bug: 17909204 (cherry picked from commit fdcbc5c4c7c67bba06e038ac96a2e8bc49b91f84) Change-Id: Iea087560ba8b983412a6dde2ec166c9e7214f3a1
|
fdcbc5c4c7c67bba06e038ac96a2e8bc49b91f84 |
|
14-Oct-2014 |
Jeff Hao <jeffhao@google.com> |
Store exiting thread ids and names while tracing to output later. Bug: 17909204 Change-Id: I4ce027af7c51fb310d6cdbdf067ae340e4c932ff
|
c8ccf68b805c92674545f63e0341ba47e8d9701c |
|
30-Sep-2014 |
Andreas Gampe <agampe@google.com> |
ART: Fix some -Wpedantic errors Remove extra semicolons. Dollar signs in C++ identifiers are an extension. Named variadic macros are an extension. Binary literals are a C++14 feature. Enum re-declarations are not allowed. Overflow. Change-Id: I7d16b2217b2ef2959ca69de84eaecc754517714a
|
9ef78b59da51080882e47505896b420977fd79ae |
|
26-Sep-2014 |
Mathieu Chartier <mathieuc@google.com> |
Fix broken runtime SetStatsEnabled logic Previously, Runtime::SetStatsEnabled wouldn't take stats_enabled_ into account when deciding whether or not to increment / decrement teh stats enabled counter. This resulted in counter underflows and other errors which caused some CTS tests to fail. Also added some locking to prevent race conditions. Bug: 17360878 (cherry picked from commit a98ffd745bbecb2e84a492194950c0b94966546b) Change-Id: I21d241a58d35bd6a607aa2305c6da81720bd0886
|
a98ffd745bbecb2e84a492194950c0b94966546b |
|
26-Sep-2014 |
Mathieu Chartier <mathieuc@google.com> |
Fix broken runtime SetStatsEnabled logic Previously, Runtime::SetStatsEnabled wouldn't take stats_enabled_ into account when deciding whether or not to increment / decrement teh stats enabled counter. This resulted in counter underflows and other errors which caused some CTS tests to fail. Also added some locking to prevent race conditions. Bug: 17360878 Change-Id: I779237d55dda4f35054a4d27fb2c660a38750fc0
|
69dbec6d9d55eeb2867949c2791d01dc9aa916c8 |
|
16-Sep-2014 |
Jeff Hao <jeffhao@google.com> |
Avoid suspending for alloc trace enabling when already suspended. Bug: 17499772 (cherry picked from commit 1d6ee090fddd4bfd35c304d6ceb929d5c529dfcc) Change-Id: Id09809c476c685f0a197ee75bb08638931364efd
|
1d6ee090fddd4bfd35c304d6ceb929d5c529dfcc |
|
16-Sep-2014 |
Jeff Hao <jeffhao@google.com> |
Avoid suspending for alloc trace enabling when already suspended. Bug: 17499772 Change-Id: Id98c10967b28e8859e5ac46f5878c304fb85c498
|
d063d912e5580222b1822b152de315420cef49ee |
|
08-Sep-2014 |
Jeff Hao <jeffhao@google.com> |
Change when sampling thread is reset during shutdown to prevent races. Also adds some extra argument checking and testing for tracing. Bug: 17412385 (cherry picked from commit f8bdd4e783842577e49f418a0b5962ba49dfdd93) Change-Id: Ifc4f1a296155d73255b29d264b5475024e6419da
|
f8bdd4e783842577e49f418a0b5962ba49dfdd93 |
|
08-Sep-2014 |
Jeff Hao <jeffhao@google.com> |
Change when sampling thread is reset during shutdown to prevent races. Also adds some extra argument checking and testing for tracing. Bug: 17412385 Change-Id: I876378d5bd17d75ab346584713b04dc0656d2120
|
c7c6d18a90079b67a7592d3f2cb3d4c6f0081512 |
|
29-Jul-2014 |
Jeff Hao <jeffhao@google.com> |
Stop thread from reattaching during runtime shutdown while tracing. Bug: 16024763 (cherry picked from commit c5d824a20c225763761a6dff43294b229ff35469) Change-Id: Ideab9adedabf3c58f5162e43e79c72af0642bdfa
|
82558acbca3eae5b7e47748bcfb8070855266676 |
|
30-Jul-2014 |
Jeff Hao <jeffhao@google.com> |
Submitted wrong changelist! Revert "Stop thread from reattaching during runtime shutdown while tracing." This reverts commit c96657c4243e04888d5948fa023d78cc9213800b. Change-Id: I859347f93704a94d23f72ef7d483298b08bbed0d
|
c96657c4243e04888d5948fa023d78cc9213800b |
|
29-Jul-2014 |
Jeff Hao <jeffhao@google.com> |
Stop thread from reattaching during runtime shutdown while tracing. Bug: 16024763 (cherry picked from commit c5d824a20c225763761a6dff43294b229ff35469) Change-Id: Id5dcd4c8a131b93de00023c3ae9f518ea182614a
|
c5d824a20c225763761a6dff43294b229ff35469 |
|
29-Jul-2014 |
Jeff Hao <jeffhao@google.com> |
Stop thread from reattaching during runtime shutdown while tracing. Bug: 16024763 Change-Id: Iad5ba180241ff74b15baf5c3a15ed2d2ed60fcf0
|
22d5e735f403c57525fe868304c7123f0ce66399 |
|
16-Jul-2014 |
Ian Rogers <irogers@google.com> |
Remove object_utils.h. Break into object_lock, field_helper and method_helper. Clean up header files following this. Also tidy some of the Handle code in response to compiler errors when resolving the changes in this CL. Change-Id: I73e63015a0f02a754d0866bfaf58208aebcaa295
|
e63db27db913f1a88e2095a1ee8239b2bb9124e8 |
|
16-Jul-2014 |
Ian Rogers <irogers@google.com> |
Break apart header files. Create libart-gtest for common runtime and compiler gtest routines. Rename CompilerCallbacksImpl that is quick compiler specific. Rename trace clock source constants to not use the overloaded profiler term. Change-Id: I4aac4bdc7e7850c68335f81e59a390133b54e933
|
54fb8fd8f3b1552c3ec0b694070646675efa348e |
|
10-Jul-2014 |
Ian Rogers <irogers@google.com> |
Fix tracing. Change-Id: If6837270baec694c00cc1884bae0f1842d49da75
|
8ab25ef11aed383bf7d3aa96e95f777972d1b58f |
|
10-Jul-2014 |
Ian Rogers <irogers@google.com> |
Move another field away from android_atomic_cas. Change-Id: If63aa2811e06ec401a601286a3bacb62a0da96ad
|
bfd9a4378eacaf2dc2bbe05ad48c5164fc93c9fe |
|
22-May-2014 |
Mathieu Chartier <mathieuc@google.com> |
Change MethodHelper to use a Handle. Added ConstHandle to help prevent errors where you modify the value stored in the handle of the caller. Also fixed compaction bugs related to not knowing MethodHelper::GetReturnType can resolve types. This bug was present in interpreter RETURN_OBJECT. Bug: 13077697 Change-Id: I71f964d4d810ab4debda1a09bc968af8f3c874a3
|
700a402244a1a423da4f3ba8032459f4b65fa18f |
|
20-May-2014 |
Ian Rogers <irogers@google.com> |
Now we have a proper C++ library, use std::unique_ptr. Also remove the Android.libcxx.mk and other bits of stlport compatibility mechanics. Change-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61
|
3f52eafe5577b8489f90dc8ed5981b3455206147 |
|
04-Apr-2014 |
Sebastien Hertz <shertz@google.com> |
Prepare field watchpoint support Adds field read/write events in the instrumentation. The debugger now registers as a listener for these events so JDWP field access and field modification events can be reported. This CL will be followed by another one to report these events from the interpreter. Therefore no JDWP field access and field modification events can be sent for now. Bug: 8267708 Change-Id: If2a93eb590805567d69015c83cce9cd2ab712cbd
|
491ca9e75fad381468dd7f5fdbff56d1a9738dd7 |
|
03-Mar-2014 |
Brian Carlstrom <bdc@google.com> |
Add ART -help and -showversion Bug: https://code.google.com/p/android/issues/detail?id=62149 Change-Id: I5c21c0433f5f341f94e7d977e8d2d69cc46d6fe3
|
ef7d42fca18c16fbaf103822ad16f23246e2905d |
|
06-Jan-2014 |
Ian Rogers <irogers@google.com> |
Object model changes to support 64bit. Modify mirror objects so that references between them use an ObjectReference value type rather than an Object* so that functionality to compress larger references can be captured in the ObjectRefererence implementation. ObjectReferences are 32bit and all other aspects of object layout remain as they are currently. Expand fields in objects holding pointers so they can hold 64bit pointers. Its expected the size of these will come down by improving where we hold compiler meta-data. Stub out x86_64 architecture specific runtime implementation. Modify OutputStream so that reads and writes are of unsigned quantities. Make the use of portable or quick code more explicit. Templatize AtomicInteger to support more than just int32_t as a type. Add missing, and fix issues relating to, missing annotalysis information on the mutator lock. Refactor and share implementations for array copy between System and uses elsewhere in the runtime. Fix numerous 64bit build issues. Change-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822
|
138dbfc3336e379d74d157086f69a0fbe830089b |
|
04-Dec-2013 |
Sebastien Hertz <shertz@google.com> |
Selective deoptimization. Update the instrumentation to allow selective deoptimization. Separate instrumentation listener registration from stubs configuration. A listener is now responsible for configuring the appropriate stubs. - The method tracing listener installs instrumentation entry/exit stubs or the interpreter depending on the accuracy of events we want (controlled by kDeoptimizeForAccurateMethodEntryExitListeners). - The debugger registers itself as an instrumentation listener but does not modify methods entrypoints. It only does this on demand when deoptimizing one method or all the methods. The selective deoptimization is used for breakpoint only. When a breakpoint is requested, the debugger deoptimizes this method by setting its entrypoint to the interpreter stub. As several breakpoints can be set on the same method, we deoptimize only once. When the last breakpoint on a method is removed, we reoptimize it by restoring the original entrypoints. The full deoptimization is used for method entry, method exit and single-step events. When one of these events is requested, we force eveything to run with the interpreter (except native and proxy methods). When the last of these events is removed, we restore all methods entrypoints except those which are currently deoptimized. Deoptimizing a method requires all mutator threads be suspended in order to walk each thread's stack and ensure no code is actually executing while we modify methods entrypoints. Suspending all the threads requires to not hold any lock. In the debugger, we deoptimize/undeoptimize when the JDWP event list changes (add or remove a breakpoint for instance). During the update, we need to hold the JDWP event list lock. This means we cannot suspend all the threads at this time. In order to deal with these constraints, we support a queue of deoptimization requests. When an event needs selective/full deoptimization/undeoptimization, we save its request in the queue. Once we release the JDWP event list lock, we suspend all the threads, process this queue and finally resume all the threads. This is done in Dbg::ManageDeoptimization. Note: threads already suspended before doing this remain suspended so we don't "break" debugger suspensions. When we deoptimize one method or every method, we need to browse each thread's stack to install instrumentation exit PC as return PC and save information in the instrumentation stack frame. Now we can deoptimize multiple times during the execution of an application, we need to preserve exisiting instrumentation frames (which is the result of a previous deoptimization). This require to push new instrumentation frames before existing ones so we don't corrupt the instrumentation stack frame while walking the stack. Bug: 11538162 Change-Id: I477142df17edf2dab8ac5d879daacc5c08a67c39
|
4044bdac490777cbc8a12d467bec675ef8aa6eb1 |
|
07-Jan-2014 |
Jeff Hao <jeffhao@google.com> |
Add sample profiling interface to startMethodTracing. Art side of this change. Also changed libcore and frameworks base. Change-Id: I556678013cf1f4e9bef064a1ae43a6109303797c
|
51db44a194bafc3810a41164a8b39614f10e79df |
|
19-Nov-2013 |
Sebastien Hertz <shertz@google.com> |
Propagate 'this_object' for method unwind event. Propagates the 'this_object' to InstrumentationListener::MethodUnwind callback. Change-Id: I12561f1a611b8399b94e669f9b8a6eaaf1a58631
|
d91d6d6a80748f277fd938a412211e5af28913b1 |
|
26-Sep-2013 |
Ian Rogers <irogers@google.com> |
Introduce Signature type to avoid string comparisons. Method resolution currently creates strings to then compare with strings formed from methods in other dex files. The temporary strings are purely created for the sake of comparisons. This change creates a new Signature type that represents a method signature but not as a string. This type supports comparisons and so can be used when searching for methods in resolution. With this change malloc is no longer the hottest method during dex2oat (now its memset) and allocations during verification have been reduced. The verifier is commonly what is populating the dex cache for methods and fields not declared in the dex file itself. Change-Id: I5ef0542823fbcae868aaa4a2457e8da7df0e9dae
|
479b494a5d303b4e201e15a630e3de5a7bf36ff2 |
|
29-Aug-2013 |
Jeff Hao <jeffhao@google.com> |
Change IsMethodTracingActive to GetMethodTracingMode for art. This allows traceview to tell whether sampling or just normal method profiling is enabled. Bug: 9968521 Change-Id: I518a1888a90bc50568fe56bf708d801027ac98d7 (cherry picked from commit 64caa7dcf46ed6139b766dbe77fbd7353899417f)
|
64caa7dcf46ed6139b766dbe77fbd7353899417f |
|
29-Aug-2013 |
Jeff Hao <jeffhao@google.com> |
Change IsMethodTracingActive to GetMethodTracingMode for art. This allows traceview to tell whether sampling or just normal method profiling is enabled. Change-Id: I518a1888a90bc50568fe56bf708d801027ac98d7
|
cf2fb8e6430059cc7fe0a6f931555bb717988393 |
|
23-Aug-2013 |
Jeff Hao <jeffhao@google.com> |
Add art support for sample profiling from traceview gui. Change-Id: I6004bf143521b872084ca4aae873bea3524aa895 (cherry picked from commit 23009dca63c1699e28bfeaa8b45ca48fa0e86ace)
|
23009dca63c1699e28bfeaa8b45ca48fa0e86ace |
|
23-Aug-2013 |
Jeff Hao <jeffhao@google.com> |
Add art support for sample profiling from traceview gui. Change-Id: I6004bf143521b872084ca4aae873bea3524aa895
|
a95ba83db7cd598902df514caf211046e9f37bde |
|
19-Aug-2013 |
Jeff Hao <jeffhao@google.com> |
Change default sampling interval to 1000 samples/sec. Change-Id: Ib92aee8a91ac9d6702a1cec58130e346fd3fcade
|
c1ff4b79a5d81b849203cc1e1c4a91223e75cfd3 |
|
19-Aug-2013 |
Jeff Hao <jeffhao@google.com> |
Sampling profiler reads clocks once for all events in a trace. Change-Id: I5954c5777384cebe01f913e5525481e1d127785c
|
5ce4b178d2483df679e7f718e379305e5d42a300 |
|
17-Aug-2013 |
Jeff Hao <jeffhao@google.com> |
Clean up sampling tracing. - Moved maps to fields within thread. - Created temp trace field to lessen amount of traces allocated and freed. Change-Id: I23fe25a85ad2894cc6917f87d4046cdececf0739
|
02e25119b15a6f619f17db99f5d05124a5807ff3 |
|
15-Aug-2013 |
Mathieu Chartier <mathieuc@google.com> |
Fix up TODO: c++0x, update cpplint. Needed to update cpplint to handle const auto. Fixed a few cpplint errors that were being missed before. Replaced most of the TODO c++0x with ranged based loops. Loops which do not have a descriptive container name have a concrete type instead of auto. Change-Id: Id7cc0f27030f56057c544e94277300b3f298c9c5
|
57dac6ed61a0a25c14d4e2fabc84435578d42360 |
|
16-Aug-2013 |
Jeff Hao <jeffhao@google.com> |
Fix sampling profiler to use thread's cpu clock. The sampling profiler was using the sampling thread's cpu clock to measure cpu time, instead of the sampled thread's cpu clock. Change-Id: Ief1f82e07e0353192c61521f67dec7a761905f64
|
414af10d719603fb4d8d972f5a022c17957b44e1 |
|
13-Aug-2013 |
Brian Carlstrom <bdc@google.com> |
Add flock(2)ing on dex-cache files to prevent races Bug: 9071417 Change-Id: I1ee9ff281867f90fba7a8ed8bbf06b33ac29d511
|
7571e8b761ebc2c923525e12ea9fcf07e62cb33e |
|
13-Aug-2013 |
Brian Carlstrom <bdc@google.com> |
Add flock(2)ing on dex-cache files to prevent races Bug: 9071417 Change-Id: I1ee9ff281867f90fba7a8ed8bbf06b33ac29d511
|
e2f77e7592842cad5a59e73535b8982c35e156ca |
|
14-Aug-2013 |
Ian Rogers <irogers@google.com> |
Build fix. Change-Id: I75af55f6cd0f0d4b15844e427ff8057dbc26466b
|
0abc72ebe356c32354b575c48189965a0edc7890 |
|
13-Aug-2013 |
Jeff Hao <jeffhao@google.com> |
Modify traceview to sample instead of instrumenting methods. Disabled the method instrumentation in traceview. Now when traceview is triggered, it starts up a thread which periodically samples all threads instead, generating method entry/exit events that traceview can understand. Change-Id: Ifc4012a4509d8eb9f54941eee2a8b42c411e5e9c
|
ea46f950e7a51585db293cd7f047de190a482414 |
|
30-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Refactor java.lang.reflect implementation Cherry-picked from commit ed41d5c44299ec5d44b8514f6e17f802f48094d1. Move to ArtMethod/Field instead of AbstractMethod/Field and have java.lang.reflect APIs delegate to ArtMethod/ArtField. Bug: 10014286. Change-Id: Iafc1d8c5b62562c9af8fb9fd8c5e1d61270536e7
|
834b394ee759ed31c5371d8093d7cd8cd90014a8 |
|
31-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Merge remote-tracking branch 'goog/dalvik-dev' into merge-art-to-dalvik-dev Change-Id: I323e9e8c29c3e39d50d9aba93121b26266c52a46
|
166db04e259ca51838c311891598664deeed85ad |
|
26-Jul-2013 |
Ian Rogers <irogers@google.com> |
Move assembler out of runtime into compiler/utils. Other directory layout bits of clean up. There is still work to separate quick and portable in some files (e.g. argument visitor, proxy..). Change-Id: If8fecffda8ba5c4c47a035f0c622c538c6b58351
|
7934ac288acfb2552bb0b06ec1f61e5820d924a4 |
|
26-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Fix cpplint whitespace/comments issues Change-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496
|
df62950e7a32031b82360c407d46a37b94188fbb |
|
18-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Fix cpplint whitespace/parens issues Change-Id: Ifc678d59a8bed24ffddde5a0e543620b17b0aba9
|
7940e44f4517de5e2634a7e07d58d0fb26160513 |
|
12-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Create separate Android.mk for main build targets The runtime, compiler, dex2oat, and oatdump now are in seperate trees to prevent dependency creep. They can now be individually built without rebuilding the rest of the art projects. dalvikvm and jdwpspy were already this way. Builds in the art directory should behave as before, building everything including tests. Change-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81
|