6e18c0ab373f9c36b5dc86445a25fbee972ee204 |
23-Jan-2015 |
Jeff Hao <jeffhao@google.com> |
Merge "Allow preopted apps to have sharpened calls for non-x86 architectures." into lmp-mr1-dev
|
2397ad72daff0e15a64281bf4b0dd8065551d22f |
23-Jan-2015 |
Jeff Hao <jeffhao@google.com> |
Allow preopted apps to have sharpened calls for non-x86 architectures. Bug: 19100762 Change-Id: Iefd4265cb7864cdaa12c1f9e44bfaa5aa4fb93ec
ompiler_driver.cc
|
aa3eff991fc34d6434465bf6bf49ef2e2fb286b7 |
20-Jan-2015 |
Andreas Gampe <agampe@google.com> |
ART: Curb dex2oat verbosity Only print dedupe collisions in a debug build or on verbose logging. Bug: 19082662 (cherry picked from commit 8d295f8f0e88fa5c6373962d545020a06033b3fc) Change-Id: I08bd04a453d95b6dba6cf6955b5741cd97daf480
ompiler_driver.cc
ompiler_driver.h
|
62746d8d9c4400e4764f162b22bfb1a32be287a9 |
09-Dec-2014 |
Andreas Gampe <agampe@google.com> |
ART: Swap-space in the compiler Introduce a swap-space and corresponding allocator to transparently switch native allocations to memory backed by a file. Bug: 18596910 Change-Id: I131448f3907115054a592af73db86d2b9257ea33
ompiler_driver.cc
ompiler_driver.h
|
f535c69f115c61ffadca1bd2706244d0aa30f9aa |
17-Dec-2014 |
Andreas Gampe <agampe@google.com> |
ART: Punt to the interpreter for VerifiedMethod errors In case that the GC map can't be created (because of size restrictions), do not fail the class. Instead punt to the interpreter. Bug: 17791183 Change-Id: I348bb306dbfc85c235fa93c0c527fba6627551fe
ompiler_driver.cc
|
25fda92083d5b93b38cc1f6b12ac6a44d992d6a4 |
04-Dec-2014 |
Mathieu Chartier <mathieuc@google.com> |
Remove method verification results right after compiling a method This saves memory since it allows the code arrays from methods compiled in future methods to use the ram we just freed from the verification results. GmsCore.apk: Before: dex2oat took 77.383s (threads: 2) arena alloc=6MB java alloc=30MB native alloc=77MB free=13KB After: dex2oat took 72.180s (threads: 2) arena alloc=6MB java alloc=30MB native alloc=60MB free=13KB Bug: 18596910 Change-Id: I5d6df380e4fe58751a2b304202083f4d30b33b7c
ompiler_driver.cc
ompiler_driver.h
ex_compilation_unit.h
|
3029df6d212894647ba0e5c23443c40912c6ecc8 |
03-Dec-2014 |
Mathieu Chartier <mathieuc@google.com> |
Print memory usage in dex2oat shutdown Example on mako: I/dex2oat (31071): dex2oat took 31.195s (threads: 2) arena alloc=1013KB java alloc=13MB native alloc=32MB free=1490KB Bug: 18069309 Change-Id: I08eac00842be35d4e659bddc8513f2062be725c9
ompiler_driver.h
|
807140048f82a2b87ee5bcf337f23b6a3d1d5269 |
21-Nov-2014 |
Mathieu Chartier <mathieuc@google.com> |
Add fast string sharpening String sharpening changes const strings to PC relative loads instead of always going through the dex cache. This saves code size and probably improves performance slightly. Before: 49602992 system@framework@boot.oat After: 49385904 system@framework@boot.oat Pre-cursor to removing dex_cache_strings_ field from ArtMethod. Bug: 17643507 Change-Id: I1787f48774631eee0accafeea257aa8d0e91e8d6
ompiler_driver.cc
ompiler_driver.h
|
474123dccc5aa9a0dfe566d332174877fd5b7040 |
18-Nov-2014 |
Vladimir Marko <vmarko@google.com> |
Do not try to sharpen super calls to abstract methods. Bug: 18380491 Change-Id: I08bfdddb0fe698b3bbe31204b7562fbc08488a35
ompiler_driver-inl.h
|
26318f722958ac1cba6a812026a1377f37c54941 |
11-Nov-2014 |
Andreas Gampe <agampe@google.com> |
ART: Compiled-classes list for compiler-driver Similar to the image-classes list, introduce a list of class names that are to be compiled when creating a boot image. This defaults to all classes. Bug: 18336591 Change-Id: I95f69afdb500a9defb6795803d4040bbe67c5a01
ompiler_driver.cc
ompiler_driver.h
|
643b5df2b065ccf5bb19a183573da691e9d0311f |
17-Oct-2014 |
Igor Murashkin <iam@google.com> |
dex2oat: Add a --compile-pic option (cherry-picked from AOSP master 83c5612e69fa05610baf4f4d237fe0995a79cde5) Bug: 18035729 Change-Id: I80e03613e3b6ac079bcbc7e068bbaae760c364c9
ompiler_driver-inl.h
ompiler_driver.cc
ompiler_driver.h
ompiler_options.h
|
63bc11efaac0c041e849ab401f9fc368631a00f5 |
18-Sep-2014 |
Ian Rogers <irogers@google.com> |
DO NOT MERGE. Only have a portable entrypoint in portable builds. Bug: 16214885 Change-Id: Iff7b7415efdbdabd7e6020e221a540f6a774c852
ompiler_driver_test.cc
|
ba354a97a9742774f57bad7f96ccae2dbbd59f75 |
16-Sep-2014 |
Andreas Gampe <agampe@google.com> |
ART: Check for exceptions from unresolved classes In no-verify mode, classes may be unresolved because of missing dependencies. Ignore and clear the exception. Bug: 17506140 Change-Id: I70602b089e6631b1e177dbe8316c5fefdaf777a0
ompiler_driver.cc
|
508e0a8d2be15c41c4001864ffb43be6de55ddbd |
13-Sep-2014 |
Andreas Gampe <agampe@google.com> |
Merge "ART: Allow quickening in the boot image" into lmp-dev
|
35439baf287b291b67ee406308e17fc6194facbf |
28-Aug-2014 |
Andreas Gampe <agampe@google.com> |
ART: Allow quickening in the boot image Update the class linker to accept class status from the boot image in compiler mode. Update compiler driver to allow quickening for boot image classes. Update method verifier to accept quickened instructions in compiler mode when we just want to dump. Update oatdump to the new verifier API. Bug: 17316928 Change-Id: I9ef1bfd78b0d93625b89b3d662131d7d6e5f2903
ompiler_driver.cc
ompiler_driver.h
|
7fc8f90b7160e879143be5cfd6ea3df866398884 |
26-Aug-2014 |
Andreas Gampe <agampe@google.com> |
ART: Change access flag behavior in verifier Note: this moves the miranda modifier to the upper 16 bit. Bug: 16161620 Change-Id: I2f591d53b7d1559171e70aaaf22225d94b4882f5
ompiler_driver.cc
|
cc2f2393e69a9b1425bad1a89f41aaaf8c38f9e2 |
30-Aug-2014 |
Ian Rogers <irogers@google.com> |
Reduce and speed-up class def searches. Use the class linker for descriptor lookups from the compile driver so that dex caches are populated. Reduce the scope of functions for scanning class paths to just the class linker where they are performed. If we see more than a threshold number of find class def misses on a dex file lazily compute an index, so that future lookups are constant time (part of the collection code is taken from https://android-review.googlesource.com/#/c/103865/3). Note that we take a lazy approach so that we don't serialize on loading dex files, this avoids the reason the index was removed in 8b2c0b9abc3f520495f4387ea040132ba85cae69. Remove an implicit and unnecessary std::string creation for PrintableString. Single threaded interpret-only dex2oat performance is improved by roughly 10%. Bug: 16853450 Change-Id: Icf72df76b0a4328f2a24075e81f4ff267b9401f4 (cherry picked from commit 68b56858367e29461ae290fd797443a1ef6d8005)
ompiler_driver.cc
|
6dd35ccbfbb29201c84a54261d75977c598ef2e6 |
27-Aug-2014 |
Ian Rogers <irogers@google.com> |
Revert "Avoid using NanoTime for compiler and verifier" This reverts commit c89e6edbdce97c7d199b54bf63aed7ea01ebf1ff. Change-Id: Id3b89121a19e64bf3c457c39b375f3d3c0fcc579
ompiler_driver.cc
|
c89e6edbdce97c7d199b54bf63aed7ea01ebf1ff |
27-Aug-2014 |
Mathieu Chartier <mathieuc@google.com> |
Avoid using NanoTime for compiler and verifier Target timings before with -j2 --compiler-filter=interpret-only: Approximate speedup 3%. Before: real 0m36.852s real 0m36.050s real 0m36.246s After: real 0m35.667s real 0m35.779s real 0m35.458s Bug: 16853450 Change-Id: Id996172d8283639fe293ddfc26d01fc1a0beed0b
ompiler_driver.cc
|
b68c6e578a28a9717d78dfd522d9d9b8befaedf2 |
19-Aug-2014 |
Mathieu Chartier <mathieuc@google.com> |
Reduce interpret-only compile time. Before: 39.04user 5.18system 0:29.24elapsed 151%CPU (0avgtext+0avgdata 164176maxresident)k 38.87user 5.16system 0:29.14elapsed 151%CPU (0avgtext+0avgdata 164144maxresident)k After: 36.26user 3.25system 0:27.00elapsed 146%CPU (0avgtext+0avgdata 162592maxresident)k 36.25user 3.28system 0:26.28elapsed 150%CPU (0avgtext+0avgdata 162688maxresident)k Disabled implicit stack protection for the compiler, this reduces page faults. Added support for not timing every method compilation and verification. NanoTime is slow and adds ~2 seconds of real time. This is currently enabled since people want to know which methods are slow to compile. Bug: 16853450 (cherry picked from commit 8e219ae27624116b6d23e858fb21e93342f81d66) Change-Id: I349ffb3f36db8c437137387aa6914dc17d743f09
ompiler_driver.cc
|
118785c6f82ac1ec7074b5efe367b3dafd904940 |
26-Aug-2014 |
Brian Carlstrom <bdc@google.com> |
CheckAndClearResolveException should allow LinkageError Bug: 16565964 Change-Id: Ibf236c627519a5cdef9479b7bc21e931d5474abf
ompiler_driver.cc
|
d84f916d35bb0dc74d7daa075b883e5ee1ce1109 |
16-Aug-2014 |
Andreas Gampe <agampe@google.com> |
ART: Avoid expensive class lookup in compiler driver When we are not compiling multidex, avoid an expensive by-descriptor lookup for classes when deciding whether to skip compilation. Bug: 17072698 Change-Id: I19bcb2a2928207fcae0badd466cdc52945bd37c4
ompiler_driver.cc
|
a73a8b55415b544355438522524a640378698d85 |
11-Aug-2014 |
Mathieu Chartier <mathieuc@google.com> |
Move explicit GC after we are done initalizing all classes. Previously we had the GC happen for each dex file, this added a few seconds of time on boot.oat creation. Bug: 16853450 (cherry picked from commit 093ef212b7db4c17ed62df5cac0c1ac3a24e691d) Change-Id: Ia469838eff1550c175c3465a478d8081023601bd
ompiler_driver.cc
|
cb6b0f31ede2275e79e6199ec391147585a37a2a |
12-Aug-2014 |
Ian Rogers <irogers@google.com> |
Avoid use of std::string where we have const char*. Removing the ClassHelper caused std::string creation for all calls to Class::GetDescriptor and a significant performance regression. Make the std::string an out argument so the caller can maintain it and its life time while allowing GetDescriptor to return the common const char* case. Don't generate GC maps when compilation is disabled. Remove other uses of std::string that are occuring on critical paths. Use the cheaper SkipClass in CompileMethod in CompilerDriver. Specialize the utf8 as utf16 comparison code for the common shorter byte encoding. Force a bit of inlining, remove some UNLIKELYs (they are prone to pessimizing code), add some LIKELYs. x86-64 host 1-thread interpret-only of 57 apks: Before: 29.539s After: 23.467s Regular compile: Before: 1m35.347s After: 1m20.056s Bug: 16853450 Change-Id: Ic705ea24784bee24ab80084d06174cbf87d557ad Conflicts: runtime/utils.cc
ompiler_driver.cc
ompiler_driver.h
|
0171987facdea1f4e22d0b5880dcde38a816adb1 |
29-Jul-2014 |
Andreas Gampe <agampe@google.com> |
ART: Skip compiling redefined classes in apps If for an app a class is defined in more than one dex file, skip all classes after the first. Bug: 16057120 (cherry picked from commit de7b43626c49567cefb258669aac70a289b74b85) Change-Id: I461942f762354b696c305dcae3a0d1c7de40f9df
ompiler_driver.cc
ompiler_driver.h
|
4ef12f5b0e26c6016c87866f6a33da5ed8e98d74 |
01-Aug-2014 |
Andreas Gampe <agampe@google.com> |
ART: Add guards to the dex cache and its shortcuts Do not return fields, methods or classes if the (declaring) class is erroneous. Bug: 16692788 (cherry picked from commit 58a5af8568d224ca7eccf2483396ff9862f8d1ee) Change-Id: I7d3e4cb8113e2e764ed7433eed25e1031e6a0f14
ompiler_driver.cc
|
345c4b19758703793ed31024cfb79940e2c63b75 |
18-Jul-2014 |
Alex Light <allight@google.com> |
Make system use patchoat to relocate during runtime. Change dalvik_system_DexFile.cc so that isDexOptNeededInternal will be able to indicate that a patchoat is required. Change default of relocate option to be on. Bug: 15358152 (cherry picked from commit 6e183f2e973a20f2eaca135c240908e1bf98c5d0) Change-Id: Ib21f4f41b6cbf18094e3ca1a30d65a3b197b71b0
ompiler_driver.cc
|
c389c97ca93b73b3cb380cedfe438d153b524225 |
23-Jul-2014 |
Mingyao Yang <mingyao@google.com> |
Merge "Set vtable in class object to null after linking."
|
2cdbad7c62f126581ec5177104de961c4d71adaa |
16-Jul-2014 |
Mingyao Yang <mingyao@google.com> |
Set vtable in class object to null after linking. This is follow-up work of embedding imt and vtable for faster interface/virtual call dispatching. Once vtable becomes embedded, the original vtable is nulled. Change-Id: I307696657d1e283654169dbecb8f7815c42bbabc
ompiler_driver-inl.h
|
a59dd80f9f48cb750d329d4d4af2d99d72b484d1 |
03-Jul-2014 |
Alex Light <allight@google.com> |
Runtime can now be set to require relocation Add a pair of runtime flags -Xrelocate and -Xnorelocate that can force the runtime to require that all files that are run are relocated, to prevent attacks based on the known art base address. Add support for running patchoat on oat files compiled without an image. Change run-test to have new --prebuild and --relocate flags. Bug: 15358152 Change-Id: I91166c62dd1ab80e5cbcb7883a2cd0d56afca32d
ompiler_driver.cc
|
69dfe51b684dd9d510dbcb63295fe180f998efde |
11-Jul-2014 |
Dave Allison <dallison@google.com> |
Revert "Revert "Revert "Revert "Add implicit null and stack checks for x86"""" This reverts commit 0025a86411145eb7cd4971f9234fc21c7b4aced1. Bug: 16256184 Change-Id: Ie0760a0c293aa3b62e2885398a8c512b7a946a73
ompiler_options.h
|
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
ompiler_driver-inl.h
ompiler_driver.cc
|
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
ompiler_callbacks_impl.h
ompiler_driver_test.cc
|
e50383288a75244255d3ecedcc79ffe9caf774cb |
04-Jul-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Support fields in optimizing compiler. - Required support for temporaries, to be only used by baseline compiler. - Also fixed a few invalid assumptions around locations and instructions that don't need materialization. These instructions should not have an Out. Change-Id: Idc4a30dd95dd18015137300d36bec55fc024cf62
ompiler_driver-inl.h
ompiler_driver.cc
ompiler_driver.h
|
98d1cc8033251c93786e2fa8c59a2e555a9493be |
16-May-2014 |
Mingyao Yang <mingyao@google.com> |
Improve performance of invokevirtual/invokeinterface with embedded imt/vtable Add an embedded version of imt/vtable into class object. Both tables start at fixed offset within class object so method/entry point can be loaded directly from class object for invokeinterface/invokevirtual. Bug: 8142917 Change-Id: I4240d58cfbe9250107c95c0708c036854c455968
ompiler_driver-inl.h
ompiler_driver.cc
ompiler_driver.h
|
0025a86411145eb7cd4971f9234fc21c7b4aced1 |
11-Jul-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Revert "Revert "Add implicit null and stack checks for x86""" Broke the build. This reverts commit 7fb36ded9cd5b1d254b63b3091f35c1e6471b90e. Change-Id: I9df0e7446ff0913a0e1276a558b2ccf6c8f4c949
ompiler_options.h
|
7fb36ded9cd5b1d254b63b3091f35c1e6471b90e |
10-Jul-2014 |
Dave Allison <dallison@google.com> |
Revert "Revert "Add implicit null and stack checks for x86"" Fixes x86_64 cross compile issue. Removes command line options and property to set implicit checks - this is hard coded now. This reverts commit 3d14eb620716e92c21c4d2c2d11a95be53319791. Change-Id: I5404473b5aaf1a9c68b7181f5952cb174d93a90d
ompiler_options.h
|
6b0599fc9356deaefe3c49fb883ca5b62a9f0b12 |
09-Jul-2014 |
Brian Carlstrom <bdc@google.com> |
Whitelist another exception during dex2oat resolving. Bug: 15936401 Bug: 16162780 Change-Id: I7389edc8cdacd5e3c2cc7d86bbd56e8c503c34b0
ompiler_driver.cc
|
53cb16b98acf3cf6f3a1e2204ad4958ecf1b5a3c |
12-Jun-2014 |
Alex Light <allight@google.com> |
Add patchoat tool to Art. Add a new executable called patchoat to art. This tool takes already compiled images and oat files and changes their base address, acting as a cheap form of relocation. Add a --include-patch-information flag to dex2oat and code to add required patch information to oat files created with the quick compiler. Bug: 15358152 Change-Id: Ie0c580db45bb14ec180deb84930def6c3628d97d
ompiler_options.h
|
70b634882b523ec9795475dccc347b423cefaef6 |
28-Jun-2014 |
Mathieu Chartier <mathieuc@google.com> |
Only allow whitelisted exceptions during dex2oat resolving. Previously we would clear any exceptions even though we only want to clear NoClassDefFound and IncompatibleClassChangeError exceptions. This meant that out of memory exceptions would incorrectly get cleared resulting in excessively long dex2oat times when you ran out of memory. Bug: 15936401 Change-Id: Iba3911f2c689b8c8d7d41e8c36546f027c08e9d7
ompiler_driver.cc
|
f5997b4d3f889569d5a2b724d83d764bfbb8d106 |
20-Jun-2014 |
Mathieu Chartier <mathieuc@google.com> |
More advanced timing loggers. The new timing loggers have lower overhead since they only push into a vector. The new format has two types, a start timing and a stop timing. You can thing of these as brackets associated with a timestamp. It uses these to construct various statistics when needed, such as: Total time, exclusive time, and nesting depth. Changed PrettyDuration to have a default of 3 digits after the decimal point. Exaple of a GC dump with exclusive / total times and indenting: I/art (23546): GC iteration timing logger [Exclusive time] [Total time] I/art (23546): 0ms InitializePhase I/art (23546): 0.305ms/167.746ms MarkingPhase I/art (23546): 0ms BindBitmaps I/art (23546): 0ms FindDefaultSpaceBitmap I/art (23546): 0ms/1.709ms ProcessCards I/art (23546): 0.183ms ImageModUnionClearCards I/art (23546): 0.916ms ZygoteModUnionClearCards I/art (23546): 0.610ms AllocSpaceClearCards I/art (23546): 1.373ms AllocSpaceClearCards I/art (23546): 0.305ms/6.318ms MarkRoots I/art (23546): 2.106ms MarkRootsCheckpoint I/art (23546): 0.153ms MarkNonThreadRoots I/art (23546): 4.287ms MarkConcurrentRoots I/art (23546): 43.461ms UpdateAndMarkImageModUnionTable I/art (23546): 0ms/112.712ms RecursiveMark I/art (23546): 112.712ms ProcessMarkStack I/art (23546): 0.610ms/2.777ms PreCleanCards I/art (23546): 0.305ms/0.855ms ProcessCards I/art (23546): 0.153ms ImageModUnionClearCards I/art (23546): 0.610ms ZygoteModUnionClearCards I/art (23546): 0.610ms AllocSpaceClearCards I/art (23546): 0.549ms AllocSpaceClearCards I/art (23546): 0.549ms MarkRootsCheckpoint I/art (23546): 0.610ms MarkNonThreadRoots I/art (23546): 0ms MarkConcurrentRoots I/art (23546): 0.610ms ScanGrayImageSpaceObjects I/art (23546): 0.305ms ScanGrayZygoteSpaceObjects I/art (23546): 0.305ms ScanGrayAllocSpaceObjects I/art (23546): 1.129ms ScanGrayAllocSpaceObjects I/art (23546): 0ms ProcessMarkStack I/art (23546): 0ms/0.977ms (Paused)PausePhase I/art (23546): 0.244ms ReMarkRoots I/art (23546): 0.672ms (Paused)ScanGrayObjects I/art (23546): 0ms (Paused)ProcessMarkStack I/art (23546): 0ms/0.610ms SwapStacks I/art (23546): 0.610ms RevokeAllThreadLocalAllocationStacks I/art (23546): 0ms PreSweepingGcVerification I/art (23546): 0ms/10.621ms ReclaimPhase I/art (23546): 0.610ms/0.702ms ProcessReferences I/art (23546): 0.214ms/0.641ms EnqueueFinalizerReferences I/art (23546): 0.427ms ProcessMarkStack I/art (23546): 0.488ms SweepSystemWeaks I/art (23546): 0.824ms/9.400ms Sweep I/art (23546): 0ms SweepMallocSpace I/art (23546): 0.214ms SweepZygoteSpace I/art (23546): 0.122ms SweepMallocSpace I/art (23546): 6.226ms SweepMallocSpace I/art (23546): 0ms SweepMallocSpace I/art (23546): 2.144ms SweepLargeObjects I/art (23546): 0.305ms SwapBitmaps I/art (23546): 0ms UnBindBitmaps I/art (23546): 0.275ms FinishPhase I/art (23546): GC iteration timing logger: end, 178.971ms Change-Id: Ia55b65609468f212b3cd65cda66b843da42be645
ompiler_driver.cc
ompiler_driver_test.cc
|
08f7a2d06b915a5e21ded648d9feee519afd2f76 |
23-Jun-2014 |
Calin Juravle <calin@google.com> |
Log profile info only on debug builds. Change-Id: I80cce951bf4cce988c9ab8373be3e335860eadf3
ompiler_driver.cc
|
5655e84e8d71697d8ef3ea901a0b853af42c559e |
18-Jun-2014 |
Andreas Gampe <agampe@google.com> |
ART: Implicit checks in the compiler are independent from Runtime When cross-compiling, those flags are independent. This is an initial CL that helps bypass fatal failures when cross-compiling, as not all architectures support (and have turned on) implicit checks. The actual transport for the target architecture when it is different from the runtime needs to be implemented in a follow-up CL. Bug: 15703710 Change-Id: Idc881a9a4abfd38643b862a491a5af9b8841f693
ompiler_options.h
|
073ed9ba97df41862403f64d7a2e824d09ab50ed |
14-Jun-2014 |
Andreas Gampe <agampe@google.com> |
ART: Ignore timing issues in debug builds When in debug builds, do not warn about slow verification and compilation. Change-Id: Ib982e1c7cf40cf624688bbf6c41f0a7cc53bbc67
ompiler_driver.cc
|
78382fa44ee505cf16835e4d22515e7252a90864 |
07-Jun-2014 |
Alex Light <allight@google.com> |
Optionally add debug symbols to ELF files made by quick compiler. Added debug symbols to ELF files created by dex2oat using the quick compiler. Adds two flags --include-debug-symbols and --no-include-debug-symbols for dex2oat that control the inclusion of these debug symbols. Debug info is added by default if kIsDebugBuild is true. Fixed bug where Intel DWARF information would not correctly deal with deduplicated code the binary. Changed the portable compiler code path in dex2oat.cc so that symbols will not be stripped when run with --include-debug-symbols. Change-Id: Ia2eb2f654dedf0e5e8606f7744e05b8d14155fb1
ompiler_driver.h
ompiler_options.h
|
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
ompiler_driver.cc
|
4479ba35389b03ccc9eabd17fba6168f9505517a |
07-Jun-2014 |
Mathieu Chartier <mathieuc@google.com> |
Merge "Change FieldHelper to use a handle."
|
61c5ebc6aee2cac1c363de6fbdac25ada1697fdb |
06-Jun-2014 |
Mathieu Chartier <mathieuc@google.com> |
Change FieldHelper to use a handle. Fixed compaction bugs related to FieldHelper::GetType in: artSet32InstanceFromCode SetFieldValueImpl CheckReceiver Field_set interpreter::DoFieldPut MethodVerifier::VerifyISGet MethodVerifier::VerifyISPut MethodVerifier::VerifyIGetQuick Bug: 13077697 Change-Id: I7de9ded2893b5568d43e4daa86fd135bf5508b72
ompiler_driver-inl.h
|
20aa7cbe93d782e0e756a36e70d610fe84b4bbb4 |
06-Jun-2014 |
Calin Juravle <calin@google.com> |
Merge "Fixed and refactored profiler options handling"
|
c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6 |
31-May-2014 |
Calin Juravle <calin@google.com> |
Fixed and refactored profiler options handling - extracted profiler options in a separate class - switched from system property reading to command line arguments - added profile based compilation options to CompilerOptions - removed no longer used kProfile compilation filter - optimize dex files only if the profiler is enabled - clean up unused arguments Bug: 12877748 Bug: 15275634 Change-Id: I37ff68e7694370950ce8db2360562e9058ecebb7
ompiler_driver.cc
ompiler_driver.h
ompiler_options.h
|
eab52e3318dd0ab0f357a8420f0a8ccea69d61f1 |
06-Jun-2014 |
Calin Juravle <calin@google.com> |
Merge "Clean up the sampling profiler"
|
bb0b53f58f11c628f077603b56077dfed1a18f11 |
23-May-2014 |
Calin Juravle <calin@google.com> |
Clean up the sampling profiler - rename variables/fields names to match the code style (use _underscore_names_) - extract common property parsing in utils.cc - fail to load profile file if any line is malformed - added ProfileFile to manage the profile data generate in the previous runs (replaces ProfileHelper and nests ProfileData) Bug: 12877748 Change-Id: Ie7bda30bfdeb7e78534c986615b0649eac12a97b
ompiler_driver.cc
ompiler_driver.h
|
a309d76d4c9f4e5564b09708004bf4b2e3401bb3 |
26-May-2014 |
Serguei Katkov <serguei.i.katkov@intel.com> |
Fix GC race condition in visit roots While GC visits roots other code can change the set pending exception due to lack of synchronization. Change-Id: If387944ac933a66fe176df066c3a0ea52131cad4 Signed-off-by: Serguei Katkov <serguei.i.katkov@intel.com>
ompiler_driver_test.cc
|
e0099d4d4839cabfb26270a746580e9d4ec3a6c6 |
27-May-2014 |
Andreas Gampe <agampe@google.com> |
ART: Fix sharpening across dex files Bug: 15196336 Change-Id: If4301bcddce0ddbc60bb33403e4a76eed35bcb2f
ompiler_driver.cc
|
0cd81352a7c06e381951cea1b104fd73516f4341 |
23-May-2014 |
Mathieu Chartier <mathieuc@google.com> |
Revert "Revert "Fix an outstanding compaction bug in interpreter."" Fixed the generic trampoline to not use ToJObject when unnecessary. Bug: 15167269 This reverts commit 3bdb873122964da7937eb070cbcf2ef638a8e459. Change-Id: I0525d0e0f3afb753c770e1572070a0fa22b02271
ompiler_driver-inl.h
ompiler_driver.cc
ompiler_driver.h
ompiler_driver_test.cc
|
3bdb873122964da7937eb070cbcf2ef638a8e459 |
23-May-2014 |
Mathieu Chartier <mathieuc@google.com> |
Revert "Fix an outstanding compaction bug in interpreter." This reverts commit e09ae0920be57760fb390b6944bce420fa0b5582. Change-Id: I48036306130d5ccfec683d0dc3e9a642a02ee9c1
ompiler_driver-inl.h
ompiler_driver.cc
ompiler_driver.h
ompiler_driver_test.cc
|
e09ae0920be57760fb390b6944bce420fa0b5582 |
15-May-2014 |
Mathieu Chartier <mathieuc@google.com> |
Fix an outstanding compaction bug in interpreter. Fixed a bug in DoFieldPut where the FieldHelper GetType could cause thread suspension which would result in a stale obj. Added more handles in the class linker to facilitate moving fiels and methods in the future. Removed un-necessarly passing handle references since these are value types and don't need to be passed by reference. Added a special NullHandle type which allows null handles without a handle scope. Change-Id: I1b51723920a2e4f4f8b2907066f578a3e879fd5b
ompiler_driver-inl.h
ompiler_driver.cc
ompiler_driver.h
ompiler_driver_test.cc
|
7bf9c46e93c6f7551f2645cf9bbd1ec9f797c86c |
22-May-2014 |
Vladimir Marko <vmarko@google.com> |
Merge "Method inlining across dex files in boot image."
|
a51a0b0300268b605e3ad71b0e87ff394032c5e7 |
21-May-2014 |
Vladimir Marko <vmarko@google.com> |
Method inlining across dex files in boot image. Fix LoadCodeAddress() and LoadMethodAddress() to use the dex file in addition to the method index to uniquely identify the literal. With that fix in place, when we have both the direct code and the direct method, we can safely pass the actual target method id instead of the method id from the same dex file in the method lowering info. This was already done for calls from apps into boot image (and thus there was a bug with a tiny risk of the wrong literal being used) and now we also do that for calls within the boot image. The latter allows the inlining pass to inline many more methods than before in the boot image. Bug: 15021903 Change-Id: Ic765ce9809b43ef07e7db32b8e3fbc9acb09147f
ompiler_driver.cc
|
3e5cf305db800b2989ad57b7cde8fb3cc9fa1b9e |
21-May-2014 |
Ian Rogers <irogers@google.com> |
Begin migration of art::Atomic to std::atomic. Change-Id: I4858d9cbed95e5ca560956b9dabd976cebe68333
ompiler_driver.cc
|
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
ompiler_driver.cc
ompiler_driver.h
ompiler_driver_test.cc
|
f832284dd847ff077577bb5712225430bbbb3b67 |
16-May-2014 |
Mathieu Chartier <mathieuc@google.com> |
Delete ClassHelper and fix compaction bug in GetDirectInterface Cleanup helps to prevent compaction bugs. Fixed a fairly serious compaction error caused by calling ClassHelper::GetDirectInterface without handling the case where it causes thread suspension due to ResolveType. Bug: 8981901 Change-Id: I82b3bb6dd48d21eb6ece7aae0733c4a23c2bc408
ompiler_driver.cc
|
db2633ce0358c704f97130a94b582602cb01d14a |
16-May-2014 |
Mathieu Chartier <mathieuc@google.com> |
Change ObjectLock to take Handle instead of Handle pointer. Change-Id: I9abdcdc5c9c9174634336b9250ab24c6aee434ec
ompiler_driver.cc
|
507dfdd147c97bfbadebfd63584d094b6a4e7b47 |
16-May-2014 |
Ian Rogers <irogers@google.com> |
Compatibility layer to transition from UniquePtr to std::unique_ptr. Use ART_WITH_STLPORT (enabled for the target) to cause the use of UniquePtr, for the host switch to std::unique_ptr. For now the type remains called UniquePtr. Make dalvik compile with clang on the host, move its build to C++11. Change-Id: I5ba8d2757904bc089ed62047ea03de3c0853fb12
ompiler_driver_test.cc
|
20cdc069f06f34828e51bcf89597bebe5df445d5 |
14-May-2014 |
Kenny Root <kroot@google.com> |
Merge "Changes for vogar compatibility"
|
d5185344e19d9feb7ac268369e0af6a467d1cb48 |
13-May-2014 |
Kenny Root <kroot@google.com> |
Changes for vogar compatibility Make sure dex2oat can make an image with an empty list of image_classes. Add in some checks to make sure that no bad arguments sneak into CompilerDriver. If we're not on the ART_TARGET, we should check for the "hostdex" versions of the libraries to substitute in our libart version. Change-Id: I5e8485c6089d25664492f0217b43ef64ca84c061
ompiler_driver.cc
|
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
ompiler_driver-inl.h
ompiler_driver.cc
ompiler_driver.h
ompiler_driver_test.cc
|
72d32629303f8f39362a4099481f48646aed042f |
07-May-2014 |
Ian Rogers <irogers@google.com> |
Give Compiler a back reference to the driver. The compiler driver is a single object delegating work to the compiler, rather than passing it through to every Compiler call make it a member of Compiler so that it maybe queried. This simplifies the Compiler API and makes the relationship to CompilerDriver more explicit. Remove reference arguments that contravene code style. Change-Id: Iba47f2e3cbda679a7ec7588f26188d77643aa2c6
ompiler_driver.cc
|
c45b8b582be5c98941ca3869fcdc9a08d520da41 |
03-May-2014 |
Ian Rogers <irogers@google.com> |
Create stack traces in unstarted runtimes. Use to diagnose failed initialization in dex2oat of boot (-verbose:compiler). Fix identity hashCode, ArtMethod.getMethodName, IntegralToString.convertInt and use of Void when called from a unstarted runtime. Change-Id: I2d536174b59e2e5f19519f93fc6b5916652fb6cd
ompiler_driver.cc
|
8668c3cbdcf9471bd97e0da68a240051f2973074 |
25-Apr-2014 |
Mathieu Chartier <mathieuc@google.com> |
Add finalizer references from the entrypoints. We now have an invariant where we never allocate finalizable objects with the Initialized or Resolved entrypoints. This speeds up allocation by only doing the check in the slow path. Before: MemAllocTest: 3625, 3707, 3641 EvaluateAndApplyChanges: 3448, 3421, 3413 After: MemAllocTest: 3164, 3109, 3135 EvaluateAndApplyChanges: 3272, 3299, 3353 Bug: 14078487 Change-Id: I2b0534af3e7c75ea5e5257cf3647744f7abfb74e
ompiler_driver.cc
ompiler_driver.h
|
af13ad9fd18b6f75fe82e7995224c55654594f93 |
11-Apr-2014 |
Andreas Gampe <agampe@google.com> |
Centralize instruction-set pointer-size, alignment, 64b-width code in instruction_set.h/cc This allows to clean up some places that currently make explicit comparisons. Change-Id: I0dcc924c52fa53306f706aceea93a2d4a655c5df
ompiler_driver.cc
ompiler_driver.h
|
644789fa0e807a9aa6d6e32d36ce039ec7318a7f |
10-Apr-2014 |
Dave Allison <dallison@google.com> |
Fix problem with empty profiles. This fixes an issue where a profile file was created by the installer but never written by the runtime. This happens when profiles are off. This caused the compiler to think that there are no methods worthy of compilation and skipped everything. Bug: 13960166 Change-Id: I4c4598d4746218e21ca949112071dc1424d7d1f9
ompiler_driver.cc
|
d6ed642458c8820e1beca72f3d7b5f0be4a4b64b |
10-Apr-2014 |
Dave Allison <dallison@google.com> |
Revert "Revert "Revert "Use trampolines for calls to helpers""" This reverts commit f9487c039efb4112616d438593a2ab02792e0304. Change-Id: Id48a4aae4ecce73db468587967968a3f7618b700
ompiler_driver.cc
ompiler_driver.h
ompiler_options.h
|
f9487c039efb4112616d438593a2ab02792e0304 |
09-Apr-2014 |
Dave Allison <dallison@google.com> |
Revert "Revert "Use trampolines for calls to helpers"" This reverts commit 081f73e888b3c246cf7635db37b7f1105cf1a2ff. Change-Id: Ibd777f8ce73cf8ed6c4cb81d50bf6437ac28cb61 Conflicts: compiler/dex/quick/mir_to_lir.h
ompiler_driver.cc
ompiler_driver.h
ompiler_options.h
|
0833af65c87b9f1c900e70a41c04d2dcdbd0c9c7 |
08-Apr-2014 |
Calin Juravle <calin@google.com> |
Merge "Tweaked profile significant_difference."
|
081f73e888b3c246cf7635db37b7f1105cf1a2ff |
07-Apr-2014 |
Dave Allison <dallison@google.com> |
Revert "Use trampolines for calls to helpers" This reverts commit 754ddad084ccb610d0cf486f6131bdc69bae5bc6. Change-Id: Icd979adee1d8d781b40a5e75daf3719444cb72e8
ompiler_driver.cc
ompiler_driver.h
ompiler_options.h
|
9dae5b4b952824da45e9fd9c12cfcde9858f0974 |
07-Apr-2014 |
Calin Juravle <calin@google.com> |
Tweaked profile significant_difference. - renamed to 'change_thr' - now it represents how much the top K leading samples need to change (in percents) in order to trigger compilation. - extracted ProfileData & file parsing in profiler.h Bug: 12877748 Change-Id: I10f66120dd5e68b8a690bfa0e9914c07f63c50d5
ompiler_driver.cc
ompiler_driver.h
|
754ddad084ccb610d0cf486f6131bdc69bae5bc6 |
19-Feb-2014 |
Dave Allison <dallison@google.com> |
Use trampolines for calls to helpers This is an ARM specific optimization to the compiler that uses trampoline islands to make calls to runtime helper functions. The intention is to reduce the size of the generated code (by 2 bytes per call) without affecting performance. By default this is on when generating an OAT file. It is off when compiling to memory. To switch this off in dex2oat, use the command line option: --no-helper-trampolines Enhances disassembler to print the trampoline entry on the BL instruction like this: 0xb6a850c0: f7ffff9e bl -196 (0xb6a85000) ; pTestSuspend Bug: 12607709 Change-Id: I9202bdb7cf21252ad807bd48701f1f6ce8e3d0fe
ompiler_driver.cc
ompiler_driver.h
ompiler_options.h
|
17965ed6ec29407599a0bcd4ea92532424294fed |
04-Apr-2014 |
Sebastien Hertz <shertz@google.com> |
Re-enable DEX-to-DEX compilation path Bug: 13807032 Change-Id: I6de7adb81a0f955a93257b83db9ad689ebcd90ad
ompiler_driver.cc
|
5a4139fd33547d09c94d9650157e3a4e4c9eede4 |
03-Apr-2014 |
Bill Buzbee <buzbee@android.com> |
Merge "art: Handle x86_64 architecture equal to x86"
|
5cc2d076cb7854ec2327895e5586f4cbe5e3ee70 |
03-Apr-2014 |
Calin Juravle <calin@google.com> |
Merge "Profile: renamed kThresholdPercent and make it configurable"
|
317055b5a75f84c09647f099efe766708da5bfb8 |
03-Apr-2014 |
Calin Juravle <calin@google.com> |
Merge "Profile: repurposed kTresholdPercent"
|
6a58cb16d803c9a7b3a75ccac8be19dd9d4e520d |
02-Apr-2014 |
Dmitry Petrochenko <dmitry.petrochenko@intel.com> |
art: Handle x86_64 architecture equal to x86 This patch forces FE/ME to treat x86_64 as x86 exactly. The x86_64 logic will be revised later when assembly will be ready. Change-Id: I4a92477a6eeaa9a11fd710d35c602d8d6f88cbb6 Signed-off-by: Dmitry Petrochenko <dmitry.petrochenko@intel.com>
ompiler_driver.cc
|
4a200f56b7075309316b04d550c9cc50f8314edd |
01-Apr-2014 |
Jeff Hao <jeffhao@google.com> |
Add support for -Xverify:none mode. This mode skips all verification and compilation. Public bug: https://code.google.com/p/android/issues/detail?id=67664 Change-Id: Idd00ab8e9e46d129c02988b063c41a507e07bf5b
ompiler_driver.cc
ompiler_options.h
|
04ff226764b125c79a0bf41e571c8311bac8a868 |
02-Apr-2014 |
Calin Juravle <calin@google.com> |
Profile: renamed kThresholdPercent and make it configurable Bug: 12877748 Change-Id: If266f20f77faad4a726ef8df451a0c42f541392f
ompiler_driver.cc
|
f6a4cee66a173ee7ef48af5503d9899aa93b3aeb |
02-Apr-2014 |
Calin Juravle <calin@google.com> |
Profile: repurposed kTresholdPercent Previously kTresholdPercent was the percentage of samples of the total that a method must comprise before compiling. I changed it to mean the threshold for a running total...i.e. compile all the methods that comprise K% of the samples cumulatively. (in the process fixed ProfileData#percent doc and changed its name) Bug: 12877748 Change-Id: Ib0e18e525a16c11b189afc3d840c09183ac629de
ompiler_driver.cc
ompiler_driver.h
|
161f71ab4449047157ad3d967a3ed4f7c6e17249 |
02-Apr-2014 |
Calin Juravle <calin@google.com> |
Merge "Fixed total method count in profile file parsing."
|
ea1e520e5a4b52b668ea2f9d3abdd9ae3a192186 |
02-Apr-2014 |
Calin Juravle <calin@google.com> |
Fixed total method count in profile file parsing. Change-Id: Iae38b3ca296378d17f054ac330301035ec684084
ompiler_driver.cc
|
dd7624d2b9e599d57762d12031b10b89defc9807 |
15-Mar-2014 |
Ian Rogers <irogers@google.com> |
Allow mixing of thread offsets between 32 and 64bit architectures. Begin a more full implementation x86-64 REX prefixes. Doesn't implement 64bit thread offset support for the JNI compiler. Change-Id: If9af2f08a1833c21ddb4b4077f9b03add1a05147
ompiler_driver.cc
ompiler_driver.h
|
6673338f41c5f2f134ae83219670d9f0b9e1a6e7 |
20-Mar-2014 |
Hiroshi Yamauchi <yamauchi@google.com> |
Merge "Make test-art pass with heap reference poisoning enabled."
|
b95a5345ae4217b70ca36f0cced92f68dda7caf5 |
12-Mar-2014 |
Stuart Monteith <stuart.monteith@arm.com> |
AArch64: Add arm64 runtime support. Adds support for arm64 to ART. Assembler stubs are sufficient for down calls into interpreter. JNI compiler and generics are not finished. Basic Generic JNI functionality. Change-Id: I4a07c79d1e037b9f5746673480e32cf456867b82
ompiler_driver.cc
|
05b15d6e896af7ae0075a690ea791e2e92ecf443 |
19-Mar-2014 |
Hiroshi Yamauchi <yamauchi@google.com> |
Make test-art pass with heap reference poisoning enabled. Heap reference poisoning is currently interpreter only. This change disables one compiler driver test that actually invokes compiled code if heap reference poisoning is enabled. Bug: 12687968 Change-Id: Ia9516f4067d84e9a4de50d9ff44cfbe38f282d16
ompiler_driver_test.cc
|
9820b7c1dc70e75ad405b9e6e63578fa9fe94e94 |
02-Jan-2014 |
Vladimir Marko <vmarko@google.com> |
Early inlining of simple methods. Inlining "special" methods: empty methods, methods returning constants or their arguments, simple getters and setters. Bug: 8164439 Change-Id: I8c7fa9c14351fbb2470000b378a22974daaef236
ompiler_driver-inl.h
ompiler_driver.h
|
0188ab739c3ef8bcd521d88f84894db8c0f012c5 |
18-Mar-2014 |
Ian Rogers <irogers@google.com> |
Fix comment typo. Change-Id: Ib03f4e5dbdf380f9c94f7a18c1ea755b03c1fe3e
ompiler_driver.cc
|
5b27149ce3cbf39f99c9d9c8ba5ebf1657c297e1 |
14-Mar-2014 |
Ian Rogers <irogers@google.com> |
Use quick generic JNI calls based on compiler driver options. Change-Id: Ic70f4b9b5759eb11b35677c0039fb00eb1c4c506
ompiler_driver.cc
|
9545a446e99b22248099fe66f5f9431530c20851 |
13-Mar-2014 |
Jeff Hao <jeffhao@google.com> |
Merge "Allow patching between dex files in the boot classpath."
|
9758f79a6c1ef7f662caca9c1df39de1934166b8 |
13-Mar-2014 |
Ian Rogers <irogers@google.com> |
Implement FINAL/OVERRIDE for clang. Separate declaration from definition in certain places to work-around issues with clang. Remove bogus lock annotation at definition in compilers.cc that is already present at the declaration. Remove duplicate definition of ClassReference. Change-Id: I5368057bb36319a259110b2198610d9d2b2e5041
ompiler_callbacks_impl.h
|
b9d50a9829b795932eac4cc50a99b4ce80b0ecb4 |
13-Mar-2014 |
Vladimir Marko <vmarko@google.com> |
Merge "Move inline method detection to runtime."
|
b34f69ab43aaf7a6e6045c95f398baf566ef5023 |
07-Mar-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Add command line support for enabling the optimizing compiler. Also run tests with the optimizing compiler enabled when the file art/USE_OPTIMIZING_COMPILER is present. Change-Id: Ibc33eed62a43547bc3b9fe786d014c0d81b5add8
ompiler_driver.cc
ompiler_driver.h
|
49161cef10a308aedada18e9aa742498d6e6c8c7 |
12-Mar-2014 |
Jeff Hao <jeffhao@google.com> |
Allow patching between dex files in the boot classpath. Change-Id: I53f219a5382d0fcd580e96e50025fdad4fc399df
ompiler_driver.cc
ompiler_driver.h
|
e3e0260c23d8999b9433715ac7ee5296ee2fd633 |
12-Mar-2014 |
Vladimir Marko <vmarko@google.com> |
Move inline method detection to runtime. The debugger needs this for selective deoptimization. Change-Id: I8100000449b56e619288fb05d41ea6f02b53b334
ompiler_driver.cc
ompiler_driver.h
|
f096aad9203d7c50b2f9cbe1c1215a50c265a059 |
23-Jan-2014 |
Vladimir Marko <vmarko@google.com> |
Cache method lowering info in mir graph. This should enable easy inlining checks. It should also improve compilation time of methods that call the same methods over and over - it is exactly such methods that tend to exceed our 100ms time limit. Change-Id: If01cd18e039071a74a1444570283c153429c9cd4
ompiler_driver-inl.h
ompiler_driver.cc
ompiler_driver.h
|
a03de6dbabbe857deae5b0f1e388fbd3a2420dc2 |
09-Mar-2014 |
Ian Rogers <irogers@google.com> |
Revert "Revert "Make clang the default compiler on host."" This reverts commit d54f3a6219bca6ae018f4395fa0f1254bd4459be. Change-Id: Id96bb52a0d599f8848010d1589bdf0f70fc7124b
ompiler_driver.h
|
d54f3a6219bca6ae018f4395fa0f1254bd4459be |
08-Mar-2014 |
Ian Rogers <irogers@google.com> |
Revert "Make clang the default compiler on host." This reverts commit 87f8b4cf0c1d6aab3eb5d1e99cc4e7cf175ef772. Change-Id: I91a513042f0f9cf66288a296ad4a3b5da7830c7b
ompiler_driver.h
|
87f8b4cf0c1d6aab3eb5d1e99cc4e7cf175ef772 |
07-Mar-2014 |
Ian Rogers <irogers@google.com> |
Make clang the default compiler on host. Motivation, GCC's compiler warnings are inferior to clang's. -Wthread-safety is not supported by GCC starting with version 4.7. As this change only effects the host, performance issues are an impact on host building and testing alone. Fix clang gtest building on host with BUILD_HOST_64bit. Fix clang build regressions caused by unused fields. Fix x86-64 regression caused by requirement to fire-up quick compiler even in an interpret-only environment. Long-term this code doesn't belong in the quick compiler. Change-Id: Ifc2b10177f40d0724cbbf8dab9653ac03cdd1cee
ompiler_driver.h
|
39c3bfbd03d85c63cfbe69f17ce5800ccc7d6c13 |
29-Jan-2014 |
Dave Allison <dallison@google.com> |
Make use of profiling information for dex2oat If the profile file exists, the compiler driver will read it and store the data in an internal map. Then, when we want to work out whether to compile a method or not, the map is consulted and if the method shows up with a high enough percentage of use we compile it. The profile file itself is created by installd and is writeable by the app. The file is in /data/dalvik-cache/profiles and is named by the package name. This also modifies the profiler itself to: 1. Only count runnable threads (not suspended threads) in the profile 2. Use system properties to allow tuning of the profile parameters 3. Merge profiles from multiple processes using file locking. Bug: 12877748 Change-Id: Iab2f3a327a2860db2a80d5724277d6c626227f2b Conflicts: compiler/dex/frontend.cc compiler/dex/mir_analysis.cc compiler/dex/verification_results.cc compiler/driver/compiler_driver.cc dex2oat/dex2oat.cc runtime/class_linker.cc runtime/runtime.cc runtime/runtime.h
ompiler_driver.cc
ompiler_driver.h
ompiler_options.h
|
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
ompiler_driver-inl.h
ompiler_driver.cc
ompiler_driver.h
ompiler_driver_test.cc
|
c0a1b18ac71ec0ff3ec0cca3cc8db9eb74e50690 |
05-Mar-2014 |
Brian Carlstrom <bdc@google.com> |
Reuse NoopCompilerCallbacks in oatdump Change-Id: Icb4d3941196c1a236f0184fe4d0b7f5838bc13bd
ompiler_callbacks_impl.h
|
2da882315a61072664f7ce3c212307342e907207 |
27-Feb-2014 |
Andreas Gampe <agampe@google.com> |
Initial changes towards Generic JNI option Some initial changes that lead to an UNIMPLEMENTED. Works by not compiling for JNI right now and tracking native methods which have neither quick nor portable code. Uses new trampoline. Change-Id: I5448654044eb2717752fd7359f4ef8bd5c17be6e
ompiler_driver.cc
ompiler_driver.h
|
be0e546730e532ef0987cd4bde2c6f5a1b14dd2a |
26-Feb-2014 |
Vladimir Marko <vmarko@google.com> |
Cache field lowering info in mir_graph. Change-Id: I9f9d76e3ae6c31e88bdf3f59820d31a625da020f
ompiler_driver-inl.h
ompiler_driver.cc
ompiler_driver.h
|
ae9fd93c39a341e2dffe15c61cc7d9e841fa92c4 |
11-Feb-2014 |
Mark Mendell <mark.p.mendell@intel.com> |
Tell GDB about Quick ART generated code This is actually a lot of work. To do this, we need: .debug_info .debug_abbrev .debug_frame .debug_str These are generated into the OAT file by OatWriter and ElfWriterQuick. Since the Quick ART runtime doesn't use dlopen to load the OAT files, GDB can't find this information. Use the alternate GDB JIT interface, which can be invoked at runtime. To use this interface, an ELF image needs to be built in memory. Read the information from the OAT file, fixup the addresses to point to the real locations, add a symbol table to hold the .text symbol, and then let GDB know about the information, which will be read from the runtime address space. This is quite primitive now, and could be cleaned up considerably. It probably needs symbol table entries for the methods, and descriptions of parameters and return types. Currently only supported for X86. This defaults to enabled for debug builds. Added dexoat --gen-gdb-info and --no-gen-gdb-info flags to override. Change-Id: I4d18b2370f6dfaa00c8cc1925f10717be3bd1a62 Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
ompiler_driver.cc
ompiler_driver.h
ompiler_options.h
|
3d504075f7c1204d581923460754bf6d3714b13f |
01-Mar-2014 |
Ian Rogers <irogers@google.com> |
Make out arguments non-reference types. Also, tidy some portable related code. Change-Id: I67c8aa52eef8b556ca117ecda1b1e75465ba06a5
ompiler_driver.cc
ompiler_driver.h
ompiler_driver_test.cc
|
b48b9eb6d181a1f52e2e605cf26a21505f1d46ed |
01-Mar-2014 |
Ian Rogers <irogers@google.com> |
Fix clang to compile and run host tests. Don't use the computed goto interpreter with clang 3.4 as it causes compilation to hang. Avoid inclusion of LLVM_(HOST|DEVICE)_BUILD_MK except for with portable as it sets clang incompatible cflags. Most fixes are self-evident, for the quick dex file method inliner the enums were being used with ostreams, so fix the enums and operator out python script to allow this. Note this change effects portable but this is untestable as portable was broken by ELF file and mc linker changes. Change-Id: Ia54348f6b1bd3f76d3b71c6e8c5f97626386b903
ompiler_driver.h
|
a1ce1fef2d49d1d537776a5308ace7102a815fe5 |
25-Feb-2014 |
Brian Carlstrom <bdc@google.com> |
Split up CommonTest into CommonRuntimeTest and CommonCompilerTest Change-Id: I8dcf6b29a5aecd445f1a3ddb06386cf81dbc9c70
ompiler_driver_test.cc
|
ae7083dac2db59dcdef869e35ac44a039d888ee9 |
25-Feb-2014 |
Brian Carlstrom <bdc@google.com> |
Add additional const Change-Id: Ibf60cd4cfbb445189efe2439899f2a7084f1ea63
ompiler_callbacks_impl.h
ompiler_driver.h
|
fffb0b7e23796e5470f4fab4611f2fcc4a16979c |
25-Feb-2014 |
Brian Carlstrom <bdc@google.com> |
Merge "Create CompilerOptions"
|
9837939678bb5dcba178e5fb00ed59b5d14c8d9b |
25-Feb-2014 |
Ian Rogers <irogers@google.com> |
Avoid std::string allocations for finding an array class. Introduce ClassLinker::FindArrayClass which performs an array class lookup given the element/component class. This has a 16 element cache of recently looked up arrays. Pass the current thread to ClassLinker Find .. Class routines to avoid calls to Thread::Current(). Avoid some uses of FindClass in the debugger where WellKnownClasses is a faster and more compacting GC friendly alternative. Change-Id: I60e231820b349543a7edb3ceb9cf1ce92db3c843
ompiler_driver.cc
ompiler_driver_test.cc
|
6449c62e40ef3a9bb75f664f922555affb532ee4 |
11-Feb-2014 |
Brian Carlstrom <bdc@google.com> |
Create CompilerOptions Package up most compiler related options in CompilerOptions. Details include: - Includes compiler filter, method thresholds, SEA IR mode. - Excludes those needed during Runtime::Init such as CompilerCallbacks and VerificationResults. - Pass CompilerOptions to CompilerDriver. - Remove CompilerOptions from Runtime. - Add ability to pass options for app and image dex2oat to runtime via -Xcompiler-option and -Ximage-compiler-option respectively. Other - Replace 2x CompilerCallbacks implementations with one. - Factor out execv code for use by both image and oat generation. - More OatFile error_msg reporting. - DCHECK for SuspendAll found trying to run valgrind. Change-Id: Iecb57da907be0c856d00c3cd634b5042a229e620
ompiler_callbacks_impl.h
ompiler_driver.cc
ompiler_driver.h
ompiler_options.h
|
9c86a0279aaf953377aa9e2277592e68bf814989 |
21-Feb-2014 |
Ian Rogers <irogers@google.com> |
Revert "Annotate used fields." This reverts commit 7f6cf56942c8469958b273ea968db253051c5b05. Change-Id: Ic389a194c3404ecb5bb563a405bf4a0d6336ea0d
ompiler_driver.cc
ompiler_driver.h
|
7f6cf56942c8469958b273ea968db253051c5b05 |
29-Jan-2014 |
Vladimir Marko <vmarko@google.com> |
Annotate used fields. Annotate all fields used by a method early during the compilation, check acces rights and record field offset, volatility, etc. Use these annotations when generating code for IGET/IPUT/SGET/SPUT instructions. Change-Id: I4bbf5cca4fecf53c9bf9c93ac1793e2f40c16b5f
ompiler_driver.cc
ompiler_driver.h
|
f3e2cc4a38389aa75eb8ee3973a535254bf1c8d2 |
18-Feb-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Code cleanup to avoid LLVM dependency when building with quick only. Change-Id: I0985c227d775c72fd23975d4c9bf673ba32615c2
ompiler_driver.cc
ompiler_driver.h
|
818f2107e6d2d9e80faac8ae8c92faffa83cbd11 |
18-Feb-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Re-apply: Initial check-in of an optimizing compiler. The classes and the names are very much inspired by V8/Dart. It currently only supports the RETURN_VOID dex instruction, and there is a pretty printer to check if the building of the graph is correct. Change-Id: I28e125dfee86ae6ec9b3fec6aa1859523b92a893
ompiler_driver.h
|
1af0c0b88a956813eb0ad282664cedc391e2938f |
19-Feb-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Initial check-in of an optimizing compiler." g++ warnings turned into errors. This reverts commit 68a5fefa90f03fdf5a238ac85c9439c6b03eae96. Change-Id: I09bb95d9cc13764ca8a266c41af04801a34b9fd0
ompiler_driver.h
|
68a5fefa90f03fdf5a238ac85c9439c6b03eae96 |
18-Feb-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Initial check-in of an optimizing compiler. The classes and the names are very much inspired by V8/Dart. It currently only supports the RETURN_VOID dex instruction, and there is a pretty printer to check if the building of the graph is correct. Change-Id: Id5ef1b317ab997010d4e3888e456c26bef1ab9c0
ompiler_driver.h
|
2befd09cf4fe89a18a655f3e1dd310831bfa769f |
18-Feb-2014 |
Vladimir Marko <vmarko@google.com> |
Merge "Expose inline method identification for debugger."
|
84c072c348006d87a370ad6e746e2d976cbe62f2 |
17-Feb-2014 |
Vladimir Marko <vmarko@google.com> |
Expose inline method identification for debugger. Also, record only those getter/setter functions which we really intend to inline in the short term (and which actually have a special implementation emitted). Change-Id: Icb8d71707a65cb6fabae5bc9118e5f3eaf7b63dd
ompiler_driver.cc
|
df8d416733642347c92ae2b4175b8fd0af401f31 |
18-Feb-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Merge "Rewrite the compiler interface for CompilerDriver."
|
f5df8974173124faddb8e2b6a331959afdb94fdf |
14-Feb-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Rewrite the compiler interface for CompilerDriver. Change-Id: I15fa9afe7ffb7283ebda8d788a1e02793e3f75a6
ompiler_driver.cc
ompiler_driver.h
|
d2fe10a3a34af171bf1631219cd2d6ff6b7778b5 |
15-Jan-2014 |
Sebastien Hertz <shertz@google.com> |
Remove blacklist Removes the class initialization blacklist and use transaction to detect and revert class initialization attempting to invoke native method. This only concerns class initialization happening at compilation time when generating an image (like boot.art for the system). In transactional mode, we log every object's field assignment and array update. Therefore we're able to abort a transaction to restore values of fields and array as they were before the transaction starts. We also log changes to the intern string table so we can restore its state prior to transaction start. Since transactional mode only happens at compilation time, we don't need to log all these changes at runtime. In order to reduce the overhead of testing if transactional mode is on/off, we templatize interfaces of mirror::Object and mirror::Array, respectively responsible for setting a field and setting an array element. For various reasons, we skip some specific fields from transaction: - Object's class and array's length must remain unchanged so garbage collector can compute object's size. - Immutable fields only set during class loading: list of fields, method, dex caches, vtables, ... as all classes have been loaded and verified before a transaction occurs. - Object's monitor for performance reason. Before generating the image, we browse the heap to collect objects that need to be written into it. Since the heap may still holds references to unreachable objects due to aborted transactions, we trigger one collection at the end of the class preinitialization phase. Since the transaction is held by the runtime and all compilation threads share the same runtime, we need to ensure only one compilation thread has exclusive access to the runtime. To workaround this issue, we force class initialization phase to run with only one thread. Note this is only done when generating image so application compilation is not impacted. This issue will be addressed in a separate CL. Bug: 9676614 Change-Id: I221910a9183a5ba6c2b99a277f5a5a68bc69b5f9
ompiler_driver.cc
|
ab4a4f2c6eb7ad5ddb7b63677ee12a5efb16d35c |
13-Feb-2014 |
Vladimir Marko <vmarko@google.com> |
Merge "Pass correct is_static to ResolveField."
|
1f26fb175bf3a10b5e1eb495d22778b47400f323 |
12-Feb-2014 |
Brian Carlstrom <bdc@google.com> |
Merge changes I41dcb9f8,I8bc80275 * changes: Revert "Add a script for running art standalone." Add StandardSocketOptions to the black list.
|
707c96a9d3b23182d1515a7e683c0885eee08a06 |
12-Feb-2014 |
Brian Carlstrom <bdc@google.com> |
Add StandardSocketOptions to the black list. Change-Id: I8bc80275412b730df0e955b809a889b4b2635db5
ompiler_driver.cc
|
e549da59446a9fb986fbf02fe4cd2e3d610bd051 |
12-Feb-2014 |
Vladimir Marko <vmarko@google.com> |
Pass correct is_static to ResolveField. Change-Id: I35ca25cd1b80b09c4e1e34d30c835d7dbd249b9e
ompiler_driver.cc
|
c7ac649e6ddcf322de48abcddfde63b3e0832aea |
12-Feb-2014 |
Vladimir Marko <vmarko@google.com> |
Check IsStatic() on special accessor fields. Change-Id: I48aebff3c3200540195eea863a52790ed4b5819e
ompiler_driver.cc
|
bbcc0c0a17262f3d2a70fc0a82e1783862f708cc |
03-Feb-2014 |
Vladimir Marko <vmarko@google.com> |
Speed up method lookup in a different dex file. Use already known name and proto. Change-Id: I4505b81724bd6a0f3cf21ee6fed44774d38c4e15
ompiler_driver.cc
|
abaf927f29f6feceb3df3e6ced7d01970ba0dbe9 |
11-Feb-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Merge "Re-apply: Implement cumulative timings for CompilerDriver."
|
ea3fa0b4ba13d7bd7f7c1cd85202ccbe141a35ae |
10-Feb-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Re-apply: Implement cumulative timings for CompilerDriver. The bug was due to how the test infrastructure works: a compiler driver surives the stack where it is allocated. Change-Id: I345fe0e4afb2bd15937233db8afb350f09429558
ompiler_driver.cc
ompiler_driver.h
|
55d0eac918321e0525f6e6491f36a80977e0d416 |
06-Feb-2014 |
Mark Mendell <mark.p.mendell@intel.com> |
Support Direct Method/Type access for X86 Thumb generates code to optimize calls to methods within core.oat. Implement this for X86 as well, but take advantage of mov with 32 bit immediate and call relative with 32 bit immediate. Fix some incorrect return locations for long inlines. Change-Id: I1907bdfc7574f3d0aa76c7fad13dc537acdf1ed3 Signed-off-by: Mark Mendell <mark.p.mendell@intel.com>
ompiler_driver.cc
ompiler_driver.h
|
2bc47809febcf36369dd40877b8226318642b428 |
10-Feb-2014 |
Vladimir Marko <vmarko@google.com> |
Revert "Revert "Check FastInstance() early for special getters and setters."" This reverts commit 632e458dc267fadfb8120be3ab02701e09e64875. Change-Id: I5098c41ee84fbbb39397133a7ecfd367fecebe42
ompiler_driver.cc
ompiler_driver.h
|
632e458dc267fadfb8120be3ab02701e09e64875 |
08-Feb-2014 |
Ian Rogers <irogers@google.com> |
Revert "Check FastInstance() early for special getters and setters." This reverts commit 5dc5727261e87ba8a418e2d0e970c75f67e4ab79. Change-Id: I3299c8ca5c3ce3f2de994bab61ea16a734f1de33
ompiler_driver.cc
ompiler_driver.h
|
5dc5727261e87ba8a418e2d0e970c75f67e4ab79 |
05-Feb-2014 |
Vladimir Marko <vmarko@google.com> |
Check FastInstance() early for special getters and setters. Perform the FastInstance() check for getters and setters when they are detected by the inliner. This will help avoid the FastInstance() check for inlining. We also record the field offset and whether the field is volatile and whether the method is static for use when inlining or generating the special accessors. Change-Id: I3f832fc9ae263883b8a984be89a3b7793398b55a
ompiler_driver.cc
ompiler_driver.h
|
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
ompiler_driver.cc
ompiler_driver.h
ompiler_driver_test.cc
|
89786437f4c0176b35ca0376153dd18ab7df4924 |
31-Jan-2014 |
Vladimir Marko <vmarko@google.com> |
Don't assume resolved type has the same dex cache. When we resolve a type with a certain DexCache that type's GetDexCache() doesn't necessarily return the same DexCache. This could have led to the wrong DexFile being used in access checks by the CompilerDriver. Change-Id: I2c836477f69f142bcbff902207dc0ad83854a398
ompiler_driver.cc
|
2730db03beee4d6687ddfb5000c33c0370fbc6eb |
27-Jan-2014 |
Vladimir Marko <vmarko@google.com> |
Add VerfiedMethod to DexCompilationUnit. Avoid some mutex locking and map lookups. Change-Id: I8e0486af77e38dcd065569572a6b985eb57f4f63
ompiler_driver.cc
ompiler_driver.h
ex_compilation_unit.cc
ex_compilation_unit.h
|
c7f832061fea59fd6abd125f26c8ca1faec695a5 |
24-Jan-2014 |
Vladimir Marko <vmarko@google.com> |
Refactor verification results. Rename VerificationMethodsData to VerificationResults. Create new class VerifiedMethod to hold all the data for a given method. Change-Id: Ife1ac67cede20f3a2f9c7f5345f08a851cf1ed20
ompiler_driver.cc
ompiler_driver.h
|
be1ca55db3362f5b100c4c65da5342fd299520bb |
15-Jan-2014 |
Hiroshi Yamauchi <yamauchi@google.com> |
Use direct class pointers at allocation sites in the compiled code. - Rather than looking up a class from its type ID (and checking if it's resolved/initialized, resolving/initializing if not), use direct class pointers, if possible (boot-code-to-boot-class pointers and app-code-to-boot-class pointers.) - This results in a 1-2% speedup in Ritz MemAllocTest on Nexus 4. - Embedding the object size (along with class pointers) caused a 1-2% slowdown in MemAllocTest and isn't implemented in this change. - TODO: do the same for array allocations. - TODO: when/if an application gets its own image, implement app-code-to-app-class pointers. - Fix a -XX:gc bug. cf. https://android-review.googlesource.com/79460/ - Add /tmp/android-data/dalvik-cache to the list of locations to remove oat files in clean-oat-host. cf. https://android-review.googlesource.com/79550 - Add back a dropped UNLIKELY in FindMethodFromCode(). cf. https://android-review.googlesource.com/74205 Bug: 9986565 Change-Id: I590b96bd21f7a7472f88e36752e675547559a5b1
ompiler_driver.cc
ompiler_driver.h
|
23a282146042a0d171aec2a415176f5d0621a90c |
09-Jan-2014 |
Vladimir Marko <vmarko@google.com> |
Clean up access checks. Change-Id: Ia62ba6c8f1d0a9bfbbfde2d7be4c52c0f982b9d2
ompiler_driver.cc
|
650be76eb3c38ff905ec1d9675d73e5cb9a82dac |
20-Jan-2014 |
Brian Carlstrom <bdc@google.com> |
Revert "Implement cumulative timings for CompilerDriver." This reverts commit df013175d1aa04641e5c6175f8c786e547d31654.
ompiler_driver.cc
ompiler_driver.h
|
df013175d1aa04641e5c6175f8c786e547d31654 |
13-Jan-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Implement cumulative timings for CompilerDriver. Change-Id: I3b04de7f2717273f356b8120f68d69e2379bab2f
ompiler_driver.cc
ompiler_driver.h
|
5ddb4104ac605d66693b55b79f26f8b8a5505e63 |
07-Jan-2014 |
Ian Rogers <irogers@google.com> |
Remove intialized static storage from dex cache. The initialized static storage array is used by compiled code to determine if for a sget/sput class initialization is necessary. The compiled code typically doesn't require this test as the class is pre-initialized or the class being accessed is the same as the current method. Change-Id: Icbc45e692b3d0ac61e559e69edb6c9b29439e571
ompiler_driver.cc
ompiler_driver.h
|
b122a4bbed34ab22b4c1541ee25e5cf22f12a926 |
20-Nov-2013 |
Ian Rogers <irogers@google.com> |
Tidy up memory barriers. Change-Id: I937ea93e6df1835ecfe2d4bb7d84c24fe7fc097b
ompiler_driver.cc
|
5816ed48bc339c983b40dc493e96b97821ce7966 |
27-Nov-2013 |
Vladimir Marko <vmarko@google.com> |
Detect special methods at the end of verification. This moves special method handling to method inliner and prepares for eventual inlining of these methods. Change-Id: I51c51b940fb7bc714e33135cd61be69467861352
ompiler_driver.cc
ompiler_driver.h
|
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
ompiler_driver.cc
ompiler_driver.h
|
07dc96d370c4844c7a279c01cedf24a272b9f4f3 |
16-Dec-2013 |
Vladimir Marko <vmarko@google.com> |
Merge "Per-DexFile locking for inliner initialization."
|
d5c0587bc26a820646950b634275ba10ab06c995 |
16-Dec-2013 |
Sebastien Hertz <shertz@google.com> |
Merge "Cleanup thread pool tasks creation."
|
e13717e796d338b08ea66f6a7e3470ca44de707f |
20-Nov-2013 |
Vladimir Marko <vmarko@google.com> |
Per-DexFile locking for inliner initialization. And clean up lock and compiler driver naming. Change-Id: I1562c7f55c4b0174a36007ba6199360da06169ff
ompiler_driver.cc
|
501baec5f2de2156bb5ed7f66d23f1b1ad026267 |
13-Dec-2013 |
Sebastien Hertz <shertz@google.com> |
Cleanup thread pool tasks creation. Removes unused vector when adding new ForAllClosure tasks to the thread pool. Change-Id: Ie0c8067bc5cbfac45db04a6242bc98f89c3efc8d
ompiler_driver.cc
|
460536209b741bc469f1b0857775449abb2102fb |
12-Dec-2013 |
Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org> |
Don't rely on gcc extensions Make the code more compatible with different compilers. clang doesn't allow extra static qualifiers on template specializations, const qualifiers on function types, or inline attributes on lambda functions, and is more picky about casting away constness with reinterpret_cast. These modifications are compatible with both gcc and clang. Change-Id: I739b10df2780bec537827a13679fd2bcc2cc7188 Signed-off-by: Bernhard Rosenkränzer <Bernhard.Rosenkranzer@linaro.org>
ompiler_driver.cc
|
c528dba35b5faece51ca658fc008b688f8b690ad |
26-Nov-2013 |
Mathieu Chartier <mathieuc@google.com> |
Enable moving classes. Slight reduction in Zygote size, memory savings are in the noise. Before: Zygote size: 8739224 After: Zygote size: 8733568 Fixed a bug where we didn't set the concurrent start bytes after switching the allocator from bump pointer to ROSAlloc in the zygote. This caused excessive memory usage. Added the method verifiers as roots to fix an issue caused by RegTypes holding a Class*. Added logic to clear card table in the SemiSpace collector, this reduces DalvikOther from ~2400k -> ~1760k when using the SemiSpace collector. Added a missing lock to the timing loggers which caused a rare one time crash in std::set. Bug: 11771255 Bug: 8499494 Bug: 10802951 Change-Id: I99d2b528cd51c1c5ed7012e3220b3aefded680ae
ompiler_driver.cc
|
e9c36b34efb7460f59c6766e526c9b0de8da70b3 |
21-Nov-2013 |
Vladimir Marko <vmarko@google.com> |
Avoid some string allocations. Also avoid building a string one character at a time. Change-Id: I3db26226c620a730b95637d5bfc23e2d4715cfb9
ompiler_driver.cc
|
5fe9af720048673e62ee29597a30bb9e54c903c5 |
14-Nov-2013 |
Ian Rogers <irogers@google.com> |
Fix memory leaks relating to timing logger. Bug: 11670287. We use pointers to uninitialized values for control-flow in the timing logger code, add TODO comments to clean this up later. Remove base namespace and other bits of tidying. Change-Id: I1e6600a1e92f974c8f58f3a405a4e4abb4d9f80f
ompiler_driver.cc
ompiler_driver.h
ompiler_driver_test.cc
|
bcd5e9daecad39f0dab3246808b4835caec29ea6 |
13-Nov-2013 |
Mathieu Chartier <mathieuc@google.com> |
Manually manage thread pool stacks. We now allocate the thread pool worker stack using a MemMap. This enables us to name the maps so that we get more descriptive output for debugging leaks. Appears to fix the mips build 5/5 successful clean-oat and builds. This is probably since glibc caches up to 40 MB of thread stacks before releasing them. Change-Id: I1df2de50cb95838aa0d272a09807021404ba410c
ompiler_driver.cc
|
590fee9e8972f872301c2d16a575d579ee564bee |
13-Sep-2013 |
Mathieu Chartier <mathieuc@google.com> |
Compacting collector. The compacting collector is currently similar to semispace. It works by copying objects back and forth between two bump pointer spaces. There are types of objects which are "non-movable" due to current runtime limitations. These are Classes, Methods, and Fields. Bump pointer spaces are a new type of continuous alloc space which have no lock in the allocation code path. When you allocate from these it uses atomic operations to increase an index. Traversing the objects in the bump pointer space relies on Object::SizeOf matching the allocated size exactly. Runtime changes: JNI::GetArrayElements returns copies objects if you attempt to get the backing data of a movable array. For GetArrayElementsCritical, we return direct backing storage for any types of arrays, but temporarily disable the GC until the critical region is completed. Added a new runtime call called VisitObjects, this is used in place of the old pattern which was flushing the allocation stack and walking the bitmaps. Changed image writer to be compaction safe and use object monitor word for forwarding addresses. Added a bunch of added SIRTs to ClassLinker, MethodLinker, etc.. TODO: Enable switching allocators, compacting on background, etc.. Bug: 8981901 Change-Id: I3c886fd322a6eef2b99388d19a765042ec26ab99
ompiler_driver.cc
ompiler_driver.h
ompiler_driver_test.cc
|
bcdbbfebc8f32566d4cb3f66405e89cdb7351992 |
09-Nov-2013 |
Jeff Hao <jeffhao@google.com> |
resolved conflicts for merge of b9098c33 to master Change-Id: Iecaf82e9939fee9d05c162999e1be449991f760e
|
0e49b42e03af56521d8ce2c9c84ac5b79e6241c9 |
08-Nov-2013 |
Jeff Hao <jeffhao@google.com> |
Fix handling of duplicate class definitions in boot classpath. The compiler driver would get the wrong class references if a class is defined multiple times in the boot classpath. It will now skip the extra definitions. Bug: 11598481 Samsung bug: 11539656 Change-Id: I4d9ae2b6d11190e6e6b89261d5f87c802def8810
ompiler_driver.cc
|
d3c20c1a46863841c866b64a4c21e8bf9396b54c |
30-Oct-2013 |
Jeff Hao <jeffhao@google.com> |
Update compiler blacklist to include java.net.NetworkInterface. Bug: 11411129 Change-Id: Ib93d2f75024b3def54eadc11547990150deccf4d (cherry picked from commit a52454455048d04d12e4da637a103412a55e579b)
ompiler_driver.cc
|
7020278bce98a0735dc6abcbd33bdf1ed2634f1d |
23-Oct-2013 |
Dave Allison <dallison@google.com> |
Support hardware divide instruction Bug: 11299025 Uses sdiv for division and a combo of sdiv, mul and sub for modulus. Only does this on processors that are capable of the sdiv instruction, as determined by the build system. Also provides a command line arg --instruction-set-features= to allow cross compilation. Makefile adds the --instruction-set-features= arg to build-time dex2oat runs and defaults it to something obtained from the target architecture. Provides a GetInstructionSetFeatures() function on CompilerDriver that can be queried for various features. The only feature supported right now is hasDivideInstruction(). Also adds a few more instructions to the ARM disassembler b/11535253 is an addition to this CL to be done later. Change-Id: Ia8aaf801fd94bc71e476902749cf20f74eba9f68
ompiler_driver.cc
ompiler_driver.h
|
a52454455048d04d12e4da637a103412a55e579b |
30-Oct-2013 |
Jeff Hao <jeffhao@google.com> |
Update compiler blacklist to include java.net.NetworkInterface. Change-Id: Ib93d2f75024b3def54eadc11547990150deccf4d
ompiler_driver.cc
|
7195dd860e424057bd9a17d501269d9b50673f11 |
30-Oct-2013 |
Ian Rogers <irogers@google.com> |
Merge "Don't use UTF16 length as length for MUTF8." into dalvik-dev
|
dfb325e0ddd746cd8f7c2e3723b3a573eb7cc111 |
30-Oct-2013 |
Ian Rogers <irogers@google.com> |
Don't use UTF16 length as length for MUTF8. Bug 11367555. Change-Id: Ia0b07072a1a49d435c3b71ed9a668b316b7ff5d8
ompiler_driver.cc
ompiler_driver.h
|
88474b416eb257078e590bf9bc7957cee604a186 |
24-Oct-2013 |
Jeff Hao <jeffhao@google.com> |
Implement Interface Method Tables (IMT). Change-Id: Idf7fe85e1293453a8ad862ff2380dcd5db4e3a39
ompiler_driver.cc
ompiler_driver.h
|
f88727f4138a69b6fbc8185cde507452234d1b71 |
28-Oct-2013 |
Brian Carlstrom <bdc@google.com> |
am 48088672: am 58a9cd11: am 39d0c0d0: Update black list with android.os.Bundle * commit '48088672582f5084c056562b04bb14e1dec85454': Update black list with android.os.Bundle
|
39d0c0d02dc11d10974d368ffd18068ad7d2029a |
28-Oct-2013 |
Brian Carlstrom <bdc@google.com> |
Update black list with android.os.Bundle Bug: 11415283 Change-Id: I5a8c580f0e1d029c995faac3ec332083de7b8646
ompiler_driver.cc
|
83883d7fddf30fdb8b6903560fa1337ab991e74c |
22-Oct-2013 |
Ian Rogers <irogers@google.com> |
Populate dex cache for sharpened calls. We ensured the resolved method was in the dex cache, but for a sharpened call this is abstract. Ensure that the concrete method is also resolved. Limit the use of direct dex cache based dispatch to cases where we know how to patch the dex cache. Bug 11389002 Change-Id: I08252686a53b5948650632837c74bcd5cbf8a862
ompiler_driver.cc
ompiler_driver.h
|
e732ef1c0192acd71925bd0ff1ab09640d45531d |
10-Oct-2013 |
Ian Rogers <irogers@google.com> |
Make compiler stat dumping easier to use. Previous needed -verbose:compiler + a debug build. Now specify --dump-stats to dex2oat. Change-Id: Ifde379e7cd06bbb0fe20149ce89c3b3789221eac
ompiler_driver.cc
|
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
ompiler_driver.cc
|
fc0e94bed3f88ed7e50854fd8dfaf5dcb345250f |
24-Sep-2013 |
Ian Rogers <irogers@google.com> |
StringPiece clean up. Profile guided clean up. Try to avoid creating StringPieces with the contents of a dex file where the length is known. Try to avoid RegTypeCache::FromDescriptor when there's a class available. Make ConstantType::ConstantValue inlinable. Saving of about 50ms from a 2 threaded ThinkFree compile on host. Change-Id: I47a12c3c76f46e2c9805be1c3a3e3870fe1f5d85
ompiler_driver.cc
ompiler_driver.h
|
4ce9e68bd648551379648df34d2267cd3d75e46c |
24-Sep-2013 |
Brian Carlstrom <bdc@google.com> |
am e2ef8795: am 4b166f3e: am cb5f5e53: Make sure CompilerDriver actually resolves types * commit 'e2ef879534e0eb7365f1997d0935c8eccb9d28fb': Make sure CompilerDriver actually resolves types
|
cb5f5e53b580023fa2c1d8235c2e9aa1ff67d1dc |
24-Sep-2013 |
Brian Carlstrom <bdc@google.com> |
Make sure CompilerDriver actually resolves types Bug: 10750824 Change-Id: Ie61881f24196e851d87822798a7e9abdf9678aa3
ompiler_driver.cc
|
ee39a10e45a6a0880e8b829525c40d6055818560 |
19-Sep-2013 |
Ian Rogers <irogers@google.com> |
Use class def index from java.lang.Class. Bug: 10244719 This removes the computation of the dex file index, when necessary this is computed by searching the dex file. Its only necessary in dalvik.system.DexFile.defineClassNative and DexFile::FindInClassPath, the latter not showing up significantly in profiling with this change. (cherry-picked from 8b2c0b9abc3f520495f4387ea040132ba85cae69) Change-Id: I20c73a3b17d86286428ab0fd21bc13f51f36c85c
ompiler_driver.cc
ompiler_driver.h
ex_compilation_unit.cc
ex_compilation_unit.h
|
8b2c0b9abc3f520495f4387ea040132ba85cae69 |
19-Sep-2013 |
Ian Rogers <irogers@google.com> |
Use class def index from java.lang.Class. Bug: 10244719 Depends on: https://googleplex-android-review.git.corp.google.com/362363 This removes the computation of the dex file index, when necessary this is computed by searching the dex file. Its only necessary in dalvik.system.DexFile.defineClassNative and DexFile::FindInClassPath, the latter not showing up significantly in profiling with this change. Change-Id: I20c73a3b17d86286428ab0fd21bc13f51f36c85c
ompiler_driver.cc
ompiler_driver.h
ex_compilation_unit.cc
ex_compilation_unit.h
|
9b297bfc588c7d38efd12a6f38cd2710fc513ee3 |
06-Sep-2013 |
Ian Rogers <irogers@google.com> |
Refactor CompilerDriver::Compute..FieldInfo Don't use non-const reference arguments. Move ins before outs. Change-Id: I7b251156388d8f07513b3da62ebfd29e5fd9ff76
ompiler_driver.cc
ompiler_driver.h
|
65ec92cf13c9d11c83711443a02e4249163d47f1 |
06-Sep-2013 |
Ian Rogers <irogers@google.com> |
Refactor CompilerDriver::ComputeInvokeInfo Don't use non-const reference arguments. Move ins before outs. Change-Id: I4a7b8099abe91ea60f93a56077f4989303fa4876
ompiler_driver.cc
ompiler_driver.h
|
866709c85da0c0d2c76968713e4dc4a35dce27fd |
06-Sep-2013 |
Sebastien Hertz <shertz@google.com> |
Merge "Disable devirtualization detection in DEX-to-DEX compiler." into dalvik-dev
|
936bf024b26f84f9332d195a581912e95d9cbe4b |
06-Sep-2013 |
Ian Rogers <irogers@google.com> |
Tweak dedupe hash function. Change-Id: I6c3450e53a3654969aa7627cea1474835bfc52d7
ompiler_driver.h
|
1e54d68ce8e77dfe63340275d11a072c5184c89a |
06-Sep-2013 |
Sebastien Hertz <shertz@google.com> |
Disable devirtualization detection in DEX-to-DEX compiler. This CL allows the DEX-to-DEX compiler to disable devirtualization detection. This allows to quicken invoke-virtual/range instructions that used to be eligible for devirtualization. Bug: 10632943 Change-Id: I6c9f4d3249cf42b47f004be5825b3186fa83501e
ompiler_driver.cc
ompiler_driver.h
|
d133b97b1ccae88f6ee7040e288fd7a239ee4492 |
05-Sep-2013 |
Ian Rogers <irogers@google.com> |
Shard dedupe set locks. We're seeing contention during compilation on the dedupe locks, sharding 4 ways on an occam brings down contention by > 5x. Improve dedupe hash function to have a FNV hash function at its heart. Improve naming of dedupe locks. Tidy portable JNI compiler paramters to be pointers, given that's their primary use. Change-Id: I95d905f2ca5fee4e83a0034926a5f6501b4aeb79
ompiler_driver.cc
ompiler_driver.h
|
df6931437880e1f7da9f777f5e54474d7ed7a630 |
04-Sep-2013 |
Anwar Ghuloum <anwarg@google.com> |
Remove memory leaks Change-Id: I13a74791b1d39edfbba7c7884057fa163c343a9a
ompiler_driver.cc
|
193bad9b9cfd10642043fa2ebbfc68bd5f9ede4b |
30-Aug-2013 |
Mathieu Chartier <mathieuc@google.com> |
Multi threaded hashed deduplication during compilation. Moved deduplication to be in the compiler driver instead of oat writer. This enables deduplication to be performed on multiple threads. Also added a hash function to avoid excessive comparison of byte arrays. Improvements: Before (alloats host): real 1m6.967s user 4m22.940s sys 1m22.610s Thinkfree.apk (target mako): 0m23.74s real 0m50.95s user 0m9.50s system 0m24.62s real 0m50.61s user 0m10.07s system 0m24.22s real 0m51.44s user 0m10.09s system 0m23.70s real 0m51.05s user 0m9.97s system 0m23.50s real 0m50.74s user 0m10.63s system After (alloats host): real 1m5.705s user 4m44.030s sys 1m29.990s Thinkfree.apk (target mako): 0m23.32s real 0m51.38s user 0m10.00s system 0m23.49s real 0m51.20s user 0m9.80s system 0m23.18s real 0m50.80s user 0m9.77s system 0m23.52s real 0m51.22s user 0m10.02s system 0m23.50s real 0m51.55s user 0m9.46s system Bug: 10552630 Change-Id: Ia6d06a747b86b0bfc4473b3cd68f8ce1a1c7eb22
ompiler_driver.cc
ompiler_driver.h
|
4bf1c8d4f2127caf769573d7c762a5d460a2781f |
29-Aug-2013 |
Brian Carlstrom <bdc@google.com> |
Update blacklist for klp-dev Change-Id: I5308f71b4c2ccdd7f6ac422ccb2a2d78141d1ce3
ompiler_driver.cc
|
a436fde2762664a3ecdda5eefcadd20b2e104f59 |
28-Aug-2013 |
Ian Rogers <irogers@google.com> |
Handle OOMEs in class linker with grace. Check for OOMEs and then fail due to them in class loading. Make the compiler driver spot OOMEs during resolution and abort compilation to avoid needless GC thrash then eventual death. Allocate the pre-allocated OOME during Runtime::Init as Runtime::Start isn't called in the context of the compiler/tools. Change-Id: Id72199d0fe82001b5bf22758b3cdc9cc4b8efbb9
ompiler_driver.cc
|
f6c4b3ba3825de1dbb3e747a68b809c6cc8eb4db |
25-Aug-2013 |
Mathieu Chartier <mathieuc@google.com> |
New arena memory allocator. Before we were creating arenas for each method. The issue with doing this is that we needed to memset each memory allocation. This can be improved if you start out with arenas that contain all zeroed memory and recycle them for each method. When you give memory back to the arena pool you do a single memset to zero out all of the memory that you used. Always inlined the fast path of the allocation code. Removed the "zero" parameter since the new arena allocator always returns zeroed memory. Host dex2oat time on target oat apks (2 samples each). Before: real 1m11.958s user 4m34.020s sys 1m28.570s After: real 1m9.690s user 4m17.670s sys 1m23.960s Target device dex2oat samples (Mako, Thinkfree.apk): Without new arena allocator: 0m26.47s real 0m54.60s user 0m25.85s system 0m25.91s real 0m54.39s user 0m26.69s system 0m26.61s real 0m53.77s user 0m27.35s system 0m26.33s real 0m54.90s user 0m25.30s system 0m26.34s real 0m53.94s user 0m27.23s system With new arena allocator: 0m25.02s real 0m54.46s user 0m19.94s system 0m25.17s real 0m55.06s user 0m20.72s system 0m24.85s real 0m55.14s user 0m19.30s system 0m24.59s real 0m54.02s user 0m20.07s system 0m25.06s real 0m55.00s user 0m20.42s system Correctness of Thinkfree.apk.oat verified by diffing both of the oat files. Change-Id: I5ff7b85ffe86c57d3434294ca7a621a695bf57a9
ompiler_driver.h
|
0b3eb39f8bc92f955f875ef50929c439aafe35fb |
23-Aug-2013 |
Mathieu Chartier <mathieuc@google.com> |
Use atomic integer for compiler driver work balancing. Before, we divided the work by dividing the total work by the number of threads. This did not balance work well since some threads could finish much earlier than others. The new method uses a shared atomic integer to balance work. This makes it that a thread can process at most one item after the other worker threads are finished. Changed the number of threads to take into account the main thread also doing work. This means that we subtract one from the number of threads when we make the thread pool. Change-Id: I0147b0403c6214800ed6bfcdac4f1e5486330996
ompiler_driver.cc
|
7dfb28c066159e6cde8181720f0c451a700ef966 |
22-Aug-2013 |
Ian Rogers <irogers@google.com> |
Don't scan image space when starting runtime. Bug 10432288. Find Classes and Strings from dex caches lazily rather than when the image is loaded. Make class status changes do notifies when there can be waiters. For Class lookup there's a pathology if we always search dex caches and so after 1000 failures move all classes into the class table. Be consistent in using "const char*" for class linker descriptors as this most easily agrees with the type in the dex file. Improve the intern run-test so that it has a case of a literal contained in the image. Modify image_test to allow any valid lock word rather than expecting 0, ideally we wouldn't see inflated monitors but we do due to NotifyAll (see bug 6961405). Change-Id: Ia9bfa748eeccb9b4498784b97c6823141b1f6db8
ompiler_driver.cc
|
2213ac60891aae4a05232663182bcb75137c7623 |
22-Aug-2013 |
Brian Carlstrom <bdc@google.com> |
am 42b32404: Update black list with Landroid/webkit/WebViewFactory; * commit '42b32404abdd9f66b4b168ad8b17bccebfeb99f3': Update black list with Landroid/webkit/WebViewFactory;
|
42b32404abdd9f66b4b168ad8b17bccebfeb99f3 |
22-Aug-2013 |
Brian Carlstrom <bdc@google.com> |
Update black list with Landroid/webkit/WebViewFactory; Change-Id: I6689d116930e862826527adad9a4000ebe9a5d28
ompiler_driver.cc
|
8f3c9ae38df2460940a26dff889a84430b6c38d3 |
21-Aug-2013 |
Ian Rogers <irogers@google.com> |
Don't allow class status to go backward except for error. Allow greater parallelism of initialization. Bug 10393546. Change-Id: Ic194ed490bb0a986250c09fcf335eb1be9714657
ompiler_driver.cc
ompiler_driver.h
|
be7149fc2e7cc607937209f2819e3c1d672e2668 |
20-Aug-2013 |
Ian Rogers <irogers@google.com> |
Avoid throwing NoClassDefFoundError at compile time. Change-Id: I8ba56a8750e1718babcb1f94e0408d89f58ea9b5
ompiler_driver.cc
|
884cf3d55229988e7d72cf38c756b427d47c9e48 |
20-Aug-2013 |
Ian Rogers <irogers@google.com> |
Merge "Reduce AOT initialization." into dalvik-dev
|
e6bb3b2ce5a69c31c2adfc7eb2705633b7f966eb |
20-Aug-2013 |
Ian Rogers <irogers@google.com> |
Reduce AOT initialization. When compiling apps there is no need to resolve all types in the dex file, just those declared in the dex file. There's also no need to initialize static fields if we can only leave the class in a verified state. Increase use of CompilerDriver::IsImage. Move timing of dex2oat setup to before Runtime::Create. On run-test 056 the performance improvement is an order of magnitude, for ThinkFree dex2oat time is dominated by compilation and this change has no effect. Bug 10316099. Change-Id: Ibdd7caa43284e7448e6a56d810967100ae4a7898
ompiler_driver.cc
ompiler_driver.h
|
f96b21728e8b10e2060ad2d0de46fcacf5974260 |
20-Aug-2013 |
Brian Carlstrom <bdc@google.com> |
Tolerate both old and new java.util.concurrent.ConcurrentHashMap Change-Id: I87397bbb662d7dd8cb0683fc08bd35b401034357
ompiler_driver.cc
|
65530499a0169b3b0b153008e2d187c9f4939541 |
19-Aug-2013 |
Ian Rogers <irogers@google.com> |
Build fix. A static field was moved from an inner to an outer class in ConcurrentHashMap leading to a disallowed call. Also, tidy comments on other java.util.concurrent black listed classes. Change-Id: Iccd808766dcd5406a5bb49a4b98f570606730250
ompiler_driver.cc
|
3eeda8fe5a481226b246d08e1c645f3ee3b48cf2 |
17-Aug-2013 |
Ian Rogers <irogers@google.com> |
Merge "Get SEA fibonacci running in interpreter mode." into dalvik-dev
|
90af14d2743614e3e1453984b14258a6f145501d |
16-Aug-2013 |
Dragos Sbirlea <dragoss@google.com> |
Get SEA fibonacci running in interpreter mode. Android.mk: Added new file to build. compile_driver.cc: Moved SE_IR usage test in the block protected by bool compile, which is enabled by adding a sepatate test in IsCnadidateForCompilation. class_linker.cc: Added check in NeedsInterpreter to enable SEA_IR. art_method-inl.h: DIsabled check in SEA_IR mode. method_verifier.cc: Added check for SEA_IR mode. method_verifier.h: Chenged IsCandidateForCompilation signature to allow testing the function name (for SEA_IR selective compilation). dot_gen.h: Updated ART file API usage to altest version. sea_ir/frontend.cc: Passing function symbol name to CompileMethod. instruction_Nodes.h: Added accessor for method index for InvokeStatic IR node. sea.cc: Added additional IR SignatureNode for function calls (extra Method parameter). Fixed UnnamedConstant constant value. sea.h: Passing function_name to GenerateLLVM. type_inference_visitor.cc: Aded type for first (placeholder) method parameter. Change-Id: I295858ea0761a3dffb36f35748d8b93d4919d6a9
ompiler_driver.cc
|
d2b0f33cf01601f040494f4f882e60f70b527930 |
16-Aug-2013 |
Mathieu Chartier <mathieuc@google.com> |
Merge "Fix up TODO: c++0x, update cpplint." into dalvik-dev
|
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
ompiler_driver.cc
|
bd136a29f08486525d6abc7d0a0006ce5b4011c1 |
14-Aug-2013 |
Dragos Sbirlea <dragoss@google.com> |
Get PORTABLE + SMALL on x86. Implemented the portable resolution trampoline and the portable to interpreter bridge. Also work on integrating SEA_IR in the PORTABLE+SMALL framework. Refactor some naming and correct indenting. Change-Id: Ibd97da5e5b6f5148274c9bff368e3654b661ef51
ompiler_driver.cc
|
1d1e267136732c2b123470b05c06fa536fa6dbbb |
14-Aug-2013 |
Ian Rogers <irogers@google.com> |
Merge "Refactor java.lang.reflect implementation" into dalvik-dev
|
75a43f10f55e2aa550de51e969cc1e60d583b632 |
14-Aug-2013 |
Anwar Ghuloum <anwarg@google.com> |
Clean up logcat spam from compiler and verifier Moved to VLOG(...), adding verifer tag for VLOG. Change-Id: Ia9ac8aeaf5aa1f4881e384003e82a66e560c5692
ompiler_driver.cc
|
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
ompiler_driver.cc
ompiler_driver.h
ompiler_driver_test.cc
|
67f99418f648c3a95256ed3dcd8e8b64eef0b372 |
12-Aug-2013 |
Anwar Ghuloum <anwarg@google.com> |
Yet more timing logger cleanup Some cleanup of timing logger placement, additional systrace placement for threaded compilation work, tweaking/hiding of some type names per previous review comments. Change-Id: Ic7db2e02747282ac7f474b9a060df9803bfdfa5e
ompiler_driver.cc
|
155ecba1c9b56ce1b468135e6a591a3fe9258c52 |
13-Aug-2013 |
buzbee <buzbee@google.com> |
Fix SMALL_ART On all art builds, the images classes must be compiled. When doing a small art build, it is necessary to override the default compiler filter to force compilation. A merge mistake broke this logic for dalvik-dev. Change-Id: I88186bd89d0ccb4316ee0910e9324ddc3e6a1f75
ompiler_driver.cc
|
c9f9444a0d58f395fee5ddd9f55ff32f92cb7b57 |
08-Aug-2013 |
buzbee <buzbee@google.com> |
am a024a068: Compilation filter * commit 'a024a0686c3b0fea13f362bff70d65981e5febc5': Compilation filter
|
a024a0686c3b0fea13f362bff70d65981e5febc5 |
31-Jul-2013 |
buzbee <buzbee@google.com> |
Compilation filter This CL introduces a static compilation filter mechanism intended to allow us to reduce compilation time and space requirements until we have a profiling mechanism in place. It supports 5 modes of filtering: o interpret-only (compile nothing) o deferred-compilation (compile only those methods believe to be compute-intensive) o space (optimized for space) o balanced (best return on space investment) o speed (compile everything) A future CL will allow the default filtering mode to be set via system property. For now, you can pass it in via command line as follows: dalvikvm -compiler-filter:[interpret-only|defer-compilation| space|balanced|speed] or dex2oat --runtime-arg -compiler-filter:[one of the above modes] Creating a file named art/SMALL_ART will force the filter default to interpret-only. Later on we'll move this capability to a persistent system property. or modify kDefaultCompilerFilter in runtime.h It also changes the compiler driver to allow the compilers to decline to compile a method by return NULL. Change-Id: Ic73411818f8bb845a4a19a05b0395c50902c534f
ompiler_driver.cc
|
848871b4d8481229c32e0d048a9856e5a9a17ef9 |
05-Aug-2013 |
Ian Rogers <irogers@google.com> |
Entry point clean up. Create set of entry points needed for image methods to avoid fix-up at load time: - interpreter - bridge to interpreter, bridge to compiled code - jni - dlsym lookup - quick - resolution and bridge to interpreter - portable - resolution and bridge to interpreter Fix JNI work around to use JNI work around argument rewriting code that'd been accidentally disabled. Remove abstact method error stub, use interpreter bridge instead. Consolidate trampoline (previously stub) generation in generic helper. Simplify trampolines to jump directly into assembly code, keeps stack crawlable. Dex: replace use of int with ThreadOffset for values that are thread offsets. Tidy entry point routines between interpreter, jni, quick and portable. Change-Id: I52a7c2bbb1b7e0ff8a3c3100b774212309d0828e
ompiler_driver.cc
ompiler_driver.h
|
9fc16eb43fe938f0cddb13638bd7cbc2ea9534a2 |
31-Jul-2013 |
Ian Rogers <irogers@google.com> |
Don't add barriers to clinit methods. Change-Id: I13e6c008feb8c19e452d6e2f88b2bbbcac997de5
ex_compilation_unit.h
|
75021222d9c03a80fa5c136db0d5fb8d82d04031 |
16-Jul-2013 |
Sebastien Hertz <shertz@google.com> |
Adds a DEX-to-DEX compilation level. This CL adds a DEX-to-DEX compilation level which allows the DEX-to-DEX compiler to ensure correctness on classes with soft-failed verification. Bug: 9307738 Change-Id: If051336bf81370bca55872c8c75ccd573d8ca391
ompiler_driver.cc
ompiler_driver.h
|
0f055d11096cb02563e9c040cd03c791fd8f69a3 |
26-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
resolved conflicts for merge of 7934ac28 to dalvik-dev Change-Id: I8798a6f154463d3f92f6aca62f14130aec82d273
|
7934ac288acfb2552bb0b06ec1f61e5820d924a4 |
26-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Fix cpplint whitespace/comments issues Change-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496
ompiler_driver.cc
ex_compilation_unit.cc
ex_compilation_unit.h
|
4d4adb1dae07bb7421e863732ab789413a3b43f0 |
24-Jul-2013 |
Sebastien Hertz <shertz@google.com> |
Prevent verifier from creating unused compilation data. The verifier used to create data which may be unused like GC map. This is the case for non-compiled method (which are interpreted). This CL aims to optimize this. Here are the changes: - Move compilation selection to MethodVerifier::IsCandidateForCompilation. - Compiler and verifier use this method to know if a method must be compiled. - Only create compilation data while compiling using Runtime::IsCompiler. - Do not create internal structures concerning GC map, ... in Runtime::Init and Runtime::Shutdown when we are not compiling. - Checks we are compiling when accessing these structures. - Add missing destruction of MethodVerifier::safecast_map_lock_ and MethodVerifier::safecast_map_ in Runtime::Shutdown. - Call Runtime::Shutdown just before Runtime instance is destroyed to avoid a crash. - Add missing "GUARDED_BY" macro for MethodVerifier::rejected_classes_ field. - Add "has_check_casts" to avoid the safecast pass if there is no check-cast instruction. - Add "has_virtual_or_interface_invokes" to avoid the devirtualization pass if there is no invoke-virtual/range nor invoke-interface/range instructions. Bug: 9987437 Change-Id: I418ee99f63e4203409cf5b7d2c2295b22fcf24c1
ompiler_driver.cc
|
bd2c19f4d74668d5c950e522db85c1fd0b17b08c |
26-Jul-2013 |
Ian Rogers <irogers@google.com> |
Fix compiler_driver_test/image_test. Fixes post TimingLogger change. Change-Id: If57f12d7cb6a449e3f3a8ba6f48e9180cd153ede
ompiler_driver_test.cc
|
6f28d91aab952e3244fbb4e707fa38f85538f374 |
25-Jul-2013 |
Anwar Ghuloum <anwarg@google.com> |
Add systrace support to NewTimingLogger, migrate compiler timing logging to NewTimingLogger Rpleaced old TimingLogger by NewTimingLogger, renamed NewTimingLogger to TimingLogger, added systrace support to TimingLogger. Tests passing, phone booting, systrace working. Change-Id: I2aeffb8bcb7f0fd979d8a2a3a8bcfbaa02413679
ompiler_driver.cc
ompiler_driver.h
ompiler_driver_test.cc
|
d792cc1569c3505d68352c11a72447419ee6eaaf |
25-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Add art support for Zygote NoPreloadHolder which black lists early initialization. Change-Id: I9c68f6d7a1f230aba6382b1331d413d4cb92be12
ompiler_driver.cc
|
8f20ff4354fd3fdd7604a299b7bf4446e5f4584c |
24-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Update blacklist with HttpsURLConnection$DefaultHolder Change-Id: Ib0a8b9511dc8e63d14f11ba48b80dfb78e32d25e
ompiler_driver.cc
|
c50d8e11a098cc5c6239aa86b47d4fcf8cbb4899 |
24-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Remove OatWriter buffering to memory for ElfWriterQuick This allows the oat contents to be directly written to the file. Change-Id: Ibc7ddf57477b152f07784b52f7334be73fd22833
ompiler_driver.cc
ompiler_driver.h
|
669af5ff17793ba9dcb61570cc762ff33ba47468 |
22-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
am 4560248d: Move TimingLogger creation to dex2oat * commit '4560248d4c85cade7f4fc7b30c3fb41b95a04a7f': Move TimingLogger creation to dex2oat
|
4560248d4c85cade7f4fc7b30c3fb41b95a04a7f |
22-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Move TimingLogger creation to dex2oat Change-Id: I4fdb6afd4ce2ac0d91c6c968893606d593b6ea18
ompiler_driver.cc
ompiler_driver.h
ompiler_driver_test.cc
|
49ed57499b918553e2d3db922ca2826dffa5bcd1 |
22-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
am 75b13a9c: Merge "Remove CompilerDriver::IsDebuggingSupported" * commit '75b13a9cb4df1dee19c459341df1697e196f20f7': Remove CompilerDriver::IsDebuggingSupported
|
0177fe200efc1bf4d433955ee7920c683fdf5901 |
21-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Remove CompilerDriver::IsDebuggingSupported Change-Id: Ib67e3ef67462fe5dae81148f7fe8cc76b3887f11
ompiler_driver.cc
ompiler_driver.h
|
08524597899d0bb021c9165218deff51dc88da50 |
18-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
am 0cd7ec2d: Fix cpplint whitespace/blank_line issues * commit '0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c': Fix cpplint whitespace/blank_line issues
|
0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c |
18-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Fix cpplint whitespace/blank_line issues Change-Id: Ice937e95e23dd622c17054551d4ae4cebd0ef8a2
ompiler_driver.cc
|
b267c89acd0fcda0e8e2a9eeaeeed9ee048d1abc |
18-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
am 93ba893c: Fix cpplint runtime/explicit issues * commit '93ba893c20532990a430741e0a97212900094e8c': Fix cpplint runtime/explicit issues
|
98c19d201b83119cbadd9aa3966fd0fb86064813 |
18-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
am 2ce745c0: Fix cpplint whitespace/braces issues * commit '2ce745c06271d5223d57dbf08117b20d5b60694a': Fix cpplint whitespace/braces issues
|
93ba893c20532990a430741e0a97212900094e8c |
18-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Fix cpplint runtime/explicit issues Change-Id: I352ba0b427f1ff9b22887693952b180eae0839ba
ex_compilation_unit.h
|
2ce745c06271d5223d57dbf08117b20d5b60694a |
18-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Fix cpplint whitespace/braces issues Change-Id: Ide80939faf8e8690d8842dde8133902ac725ed1a
ompiler_driver.cc
|
42425b3a8befe092199fde69c95833e31db8fec9 |
18-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
am fc0e3219: Fix multiple inclusion guards to match new pathnames * commit 'fc0e3219edc9a5bf81b166e82fd5db2796eb6a0d': Fix multiple inclusion guards to match new pathnames
|
fc0e3219edc9a5bf81b166e82fd5db2796eb6a0d |
17-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Fix multiple inclusion guards to match new pathnames Change-Id: Id7735be1d75bc315733b1773fba45c1deb8ace43
ompiler_driver.h
ex_compilation_unit.h
|
5081c0f9aec26bb36ea5eb8e5df0404f02dec0d9 |
17-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
am 56d947fb: Add verification of boot.oat generated on device * commit '56d947fbc9bc2992e2f93112fafb73e50d2aaa7a': Add verification of boot.oat generated on device
|
56d947fbc9bc2992e2f93112fafb73e50d2aaa7a |
15-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
Add verification of boot.oat generated on device Change-Id: I069586205a9a92fc7375ccf5cdde136bbbcfc800
ompiler_driver.cc
ompiler_driver.h
|
1db9113bcc12368e405583804ceb8aa7c80cc0cd |
13-Jul-2013 |
Brian Carlstrom <bdc@google.com> |
resolved conflicts for merge of 7940e44f to dalvik-dev Change-Id: I6529b2fc27dfaedd2cb87b3697d049ccabed36ee
|
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
ompiler_driver.cc
ompiler_driver.h
ompiler_driver_test.cc
ex_compilation_unit.cc
ex_compilation_unit.h
|