8f4b056427a9d2321e3aa4f21ca8ffb18b3e5ae6 |
|
02-Mar-2018 |
David Sehr <sehr@google.com> |
Move most of runtime/base to libartbase/base Enforce the layering that code in runtime/base should not depend on runtime by separating it into libartbase. Some of the code in runtime/base depends on the Runtime class, so it cannot be moved yet. Also, some of the tests depend on CommonRuntimeTest, which itself needs to be factored (in a subsequent CL). Bug: 22322814 Test: make -j 50 checkbuild make -j 50 test-art-host Change-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2 Merged-In: c431b9dc4b23cc950eb313695258df5d89f53b22 (cherry picked from commit c431b9dc4b23cc950eb313695258df5d89f53b22)
|
8d728324571b720a952b297787eed70c7a1d1acb |
|
18-Jan-2018 |
Nicolas Geoffray <ngeoffray@google.com> |
Add compiler option for counting hotness in compiled code. For eventually easier profiling of boot classpath and system server. bug: 30934496 Test: 674-hotness-compiled Change-Id: I0f63c644527b74f6ef2649f481c2a1c731bb9f21
|
2d8801f7b932496d5c2606294ff8fdea60e05b30 |
|
28-Nov-2017 |
Nicolas Geoffray <ngeoffray@google.com> |
Clean some dex2oat options. Remove dump-passes inherited from Quick days, and move dump-timings and dump-stats to CompilerStats. Test: test.py Change-Id: Ie79be858a141e59dc0b2a87d8cb5a5248a5bc7af
|
2ffb703bf431d74326c88266b4ddaf225eb3c6ad |
|
08-Nov-2017 |
Igor Murashkin <iam@google.com> |
cpplint: Cleanup errors Cleanup errors from upstream cpplint in preparation for moving art's cpplint fork to upstream tip-of-tree cpplint. Test: cd art && mm Bug: 68951293 Change-Id: I15faed4594cbcb8399850f8bdee39d42c0c5b956
|
cac31ad4c43a24a959a4d3652b8b46538bdc8c53 |
|
07-Nov-2017 |
Andreas Gampe <agampe@google.com> |
ART: Add compiler option for code deduplication Add --deduplicate-code and --no-deduplicate-code to ease in experiments with deduplication, e.g., profiling. Add dex2oat test. Test: m test-art-host Change-Id: Ib6c7fe082f43c5f76c8463cc563e2503c9a50480
|
f39208f6787928151153795a3cdae28cba964df6 |
|
20-Oct-2017 |
Andreas Gampe <agampe@google.com> |
ART: Add abort-on-soft-verifier-error Add an option to abort compilation if any class fails compile-time verification. Bug: 65318848 Bug: 67358823 Test: m test-art-host-gtest-dex2oat_test Change-Id: I5d2a7cd1d2ed048ab39d6f787ecc9eb2f41d3d77
|
097f34cc09caf46945ec17e198f57ac9c156e904 |
|
23-Aug-2017 |
Andreas Gampe <agampe@google.com> |
ART: Use CmdlineParser in dex2oat Refactor dex2oat and the compiler to use the cmdline parser. In an effort to standardize command-line parsing and make it easier to add new properties in a principled manner. Test: m test-art-host Change-Id: Ia077a56234dbf579d7ca3430fef325b57aa06333
|
8cce65ac4855c01b58f66eeeeea30404df671d1e |
|
17-Aug-2017 |
Mathieu Chartier <mathieuc@google.com> |
Disable app image for very large apps App images prevent dex2oat unloading and should not be used in this mode. Disable app image generation when very large app mode is detected. Bug: 63467744 Test: test-art-host-gtest-dex2oat_test (cherry picked from commit df8a96a1cde9dafbb1811358be1fbba6d3aec267) Change-Id: Icd5b0d9d3e61ececffe60f7472aaee8a54d1847b
|
df8a96a1cde9dafbb1811358be1fbba6d3aec267 |
|
17-Aug-2017 |
Mathieu Chartier <mathieuc@google.com> |
Disable app image for very large apps App images prevent dex2oat unloading and should not be used in this mode. Disable app image generation when very large app mode is detected. Bug: 63467744 Test: test-art-host-gtest-dex2oat_test Change-Id: If16d0ff1592f3b2ec705afdb9fe48b43164f018a
|
2b03a1f24600c8c9558fb13d3f8bca1ef0f8ee40 |
|
06-Jun-2017 |
Roland Levillain <rpl@google.com> |
Instrument ARM64 generated code to check the Marking Register. Generate run-time code in the Optimizing compiler checking that the Marking Register's value matches `self.tls32_.is.gc_marking` in debug mode (on target; and on host with JIT, or with AOT when compiling the core image). If a check fails, abort. Test: m test-art-target Test: m test-art-target with tree built with ART_USE_READ_BARRIER=false Test: ARM64 device boot test with libartd. Bug: 37707231 Change-Id: Ie9b322b22b3d26654a06821e1db71dbda3c43061
|
57c47043f3ee4233f31bad921ea91a5c411f1dad |
|
29-Jun-2017 |
Nicolas Geoffray <ngeoffray@google.com> |
Code cleanup around compiler options and JIT. Now support passing --verbose-methods and --dump-cfg. Test: test.py Test: ./out/host/linux-x86/bin/art -Xcompiler-option --dump-cfg=foo.cfg -Xcompiler-option --verbose-methods=run -Xcompiler-option --compiler-filter=quicken -Xusejit:true -cp benchmarks.dex benchmarks.DeltaBlue.java.DeltaBlue Change-Id: I75ffed146ffff43ef70f3e9e80a160751e08cb04
|
deae7db5864fa50c5a1cd6c232a17aeb986b36e1 |
|
30-May-2017 |
Andreas Gampe <agampe@google.com> |
ART: Add missing namespace comments Add closing namespace comments. Bug: 32619234 Test: m Change-Id: I1f50e09dcd1038c4b540b87e5c19e319c1f592e4
|
2fad527ddf2b8d85df82468932ed724407f46be8 |
|
17-May-2017 |
Vladimir Marko <vmarko@google.com> |
Ignore --compile-pic option for JIT. Test: testrunner --host --pictest --jit Bug: 33192586 Change-Id: I1e05874752c6a3b448ffbeff9681637a35acda2a
|
a10ac2ac733a9dc07962cfea2502605141e61953 |
|
21-Apr-2017 |
Nicolas Geoffray <ngeoffray@google.com> |
Rename and obsolete compiler filter names. ART side of the change. bug:34715556 Test: test-art-host, jdwp, libcore (cherry picked from commit 49cda06d5bf003f588ba7839bbf89d606237dfa7) Change-Id: I85126e5035f0f6fc15aa84d41af5f1d6e25a5f55
|
49cda06d5bf003f588ba7839bbf89d606237dfa7 |
|
21-Apr-2017 |
Nicolas Geoffray <ngeoffray@google.com> |
Rename and obsolete compiler filter names. ART side of the change. bug:34715556 test: test-art-host, jdwp, libcore Change-Id: I3a73ae4af2d602431150c8ecfceaddb9ba519cee
|
f6d4668c42933e2f85ddbc94e276c49db4e2b1dd |
|
28-Feb-2017 |
Nicolas Geoffray <ngeoffray@google.com> |
Improvements in the Inliner. - Change from a depth limit to a total number of HInstructions inlined limit. Remove the dex2oat depth limit argument. - Add more stats to diagnose reasons for not inlining. - Clean up logging to easily parse output. Individual Ritz benchmarks improve from 3 to 10%. No change in other heuristics. There was already an instruction budget. Note that the instruction budget is rarely hit in the "apps" I've tried with. Compile-times improve from 5 to 15%. Code size go from 4% increase (Gms) to 1% decrease (Docs). bug:35724239 test: test-art-host test-art-target Change-Id: I5a35c4bd826cf21fead77859709553c5b57608d6
|
c52f3034b06c03632e937aff07d46c2bdcadfef5 |
|
02-Mar-2017 |
Richard Uhler <ruhler@google.com> |
Remove --include-patch-information option from dex2oat. Because we no longer support running patchoat on npic oat files, which means the included patch information is unused . Bug: 33192586 Test: m test-art-host Change-Id: I9e100c4e47dc24d91cd74226c84025e961d30f67
|
60ca949cc39936b1f18853922d0dcafdda3b9322 |
|
20-Dec-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Optimize OatWriter when we don't compile any method. - Don't write any quickening info. - Don't visit methods. Saves ~20% of compilation times. Test: test-art-host Change-Id: Ib18fd06c0ca42308e1d81401de0ee3e6297de0ce
|
01b70e8bca5e824ee3958ffbdd7727334e81eb0a |
|
17-Nov-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Add dequickening support. Both vdex and BCI require full dequickening support. This change implements dequickening by using the existing encoded quickening, and adds the checkcast quickening to that encoding. bug: 30937355 bug: 32369913 Test: dex_to_dex_decompiler_test.cc test-art-host Change-Id: Ie95f46946d59b28157d6e47dcf4a859be032d1c3
|
0802518a6a5af8182131eb3fe66bf58dd77f9fe2 |
|
25-Oct-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Save the non-verified classes in the VerifierDeps. We will need that information when taking an OTA to make sure the same set of classes needs to be verified at runtime. Currently, the vdex file will contain a list of unverified classes. We could alternatively encode a bit vector of the size of the type_id array, but the few experiments I did show that the bit vector is actually larger. We can refine this later. bug: 30937355 test: m test-art-host test: verifier_deps_test.cc Change-Id: I2670e4fd2e54ee7a148246baa705fda3a56617ff
|
709b070044354d9f47641f273edacaeeb0240ab7 |
|
13-Oct-2016 |
David Sehr <sehr@google.com> |
Remove mirror:: and ArtMethod deps in utils.{h,cc} The latest chapter in the ongoing saga of attempting to dump a DEX file without having to start a whole runtime instance. This episode finds us removing references to ArtMethod/ArtField/mirror. One aspect of this change that I would like to call out specfically is that the utils versions of the "Pretty*" functions all were written to accept nullptr as an argument. I have split these functions up as follows: 1) an instance method, such as PrettyClass that obviously requires this != nullptr. 2) a static method, that behaves the same way as the util method, but calls the instance method if p != nullptr. This requires using a full class qualifier for the static methods, which isn't exactly beautiful. I have tried to remove as many cases as possible where it was clear p != nullptr. Bug: 22322814 Test: test-art-host Change-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24
|
ab40c1108330caee9a01317628a28dac4c5a8bf1 |
|
19-Sep-2016 |
Alexey Alexandrov <aalexand@google.com> |
Generate SHA-1 build ID for host-generated *.oat files (1/2). For host-generated *.oat files, generate a SHA-1 build ID based on the file content and write it to .note.gnu.build-id ELF section. This should allow various developer tools like profilers correlate the data captured for files like boot.oat on the device with the corresponding known version of the file during an offline analysis. Test: Verified that boot.oat contains the build ID section now (with this change and https://android-review.googlesource.com/#/c/275630 applied) Test: Added ElfWriterTest::CheckBuildIdPresent test. Test: make test-art-host Bug: 31292208 Change-Id: Ie5e89da2ef87e34c27c0237ab34ddc7d2dc0aa3b
|
aad75c6d5bfab2dc8e30fc99fafe8cd2dc8b74d8 |
|
03-Oct-2016 |
Vladimir Marko <vmarko@google.com> |
Revert "Revert "Store resolved Strings for AOT code in .bss."" Fixed oat_test to keep dex files alive. Fixed mips build. Rewritten the .bss GC root visiting and added write barrier to the artResolveStringFromCode(). Test: build aosp_mips-eng Test: m ART_DEFAULT_GC_TYPE=SS test-art-target-host-gtest-oat_test Test: Run ART test suite on host and Nexus 9. Bug: 20323084 Bug: 30627598 This reverts commit 5f926055cb88089d8ca27243f35a9dfd89d981f0. Change-Id: I07fa2278d82b8eb64964c9a4b66cb93726ccda6b
|
5f926055cb88089d8ca27243f35a9dfd89d981f0 |
|
30-Sep-2016 |
Vladimir Marko <vmarko@google.com> |
Revert "Store resolved Strings for AOT code in .bss." There are some issues with oat_test64 on host and aosp_mips-eng. Also reverts "compiler_driver: Fix build." Bug: 20323084 Bug: 30627598 This reverts commit 63dccbbefef3014c99c22748d18befcc7bcb3b41. This reverts commit 04a44135ace10123f059373691594ae0f270a8a4. Change-Id: I568ba3e58cf103987fdd63c8a21521010a9f27c4
|
63dccbbefef3014c99c22748d18befcc7bcb3b41 |
|
21-Sep-2016 |
Vladimir Marko <vmarko@google.com> |
Store resolved Strings for AOT code in .bss. And do some related refactorings. Bug: 20323084 Bug: 30627598 Test: Run ART test suite including gcstress on host and Nexus 9. Test: Run ART test suite including gcstress with baker CC on host and Nexus 9. Test: Build aosp_mips64-eng. Change-Id: I1b12c1570fee8e5da490b47f231050142afcbd1e
|
5319d3cca5a9b8e9e3f59421818272b966575172 |
|
02-Aug-2016 |
Wojciech Staszkiewicz <staszkiewicz@google.com> |
Implement running user defined list of passes This change introduces new dex2oat switch --run-passes=. This switch accepts path to a text file with names of passes to run. Compiler will run optimization passes specified in the file rather then the default ones. There is no verification implemented on the compiler side. It is user's responsibility to provide a list of passes that leads to successful generation of correct code. Care should be taken to prepare a list that satisfies all dependencies between optimizations. We only take control of the optional optimizations. Codegen (builder), and all passes required for register allocation will run unaffected by this mechanism. Change-Id: Ic3694e53515fefcc5ce6f28d9371776b5afcbb4f
|
2cd05b7d9976c0c7fa74d58cb1608c809e5c37d3 |
|
04-Aug-2016 |
Matthew Gharrity <gharrma@google.com> |
Add a register allocation strategy compiler option Test: manually, on device. Change-Id: If007a1657dd5769ddef03691e0a19dbbe6ba1a29
|
f6d1e0f6196cb3669dfb4eed8ceef679b0588c0f |
|
23-May-2016 |
Vladimir Marko <vmarko@google.com> |
Compile JNI stubs for verify-profile and interpret-only. This is the intended behavior to have a good JNI transition performance. Bug: 28902384 (cherry picked from commit 8c185bf0c6f18a5349bc87a7e3751ba06d90f461) Change-Id: I52767909b916ada3c619206c8838b85bff5ac316
|
8c185bf0c6f18a5349bc87a7e3751ba06d90f461 |
|
23-May-2016 |
Vladimir Marko <vmarko@google.com> |
Compile JNI stubs for verify-profile and interpret-only. This is the intended behavior to have a good JNI transition performance. Bug: 28902384 Change-Id: Iedb2ca343d66cf422ef2dc0527639e81d6ba8960
|
f4b3487ee77e3c2e3d5372ae9e857cd3429bb808 |
|
13-Apr-2016 |
Richard Uhler <ruhler@google.com> |
Remove -XOatFileManagerCompilerFilter argument. Instead use the value of '-Xcompiler-option --compiler-filter=XXX' for the target compiler filter to use to determine if the runtime should try to invoke dex2oat when oat files are loaded. Bug: 27641809 Change-Id: I1856e0e37df91835b81105567c70d8a285a88f62
|
7bcfcb80a31f57a84d754e00bca8698829365208 |
|
23-Mar-2016 |
Andreas Gampe <agampe@google.com> |
Revert "Revert "Use compiler filter to determine oat file status."" This reverts commit 845e5064580bd37ad5014f7aa0d078be7265464d. Add an option to change what OatFileManager considers up-to-date. In our tests we're allowed to write to the dalvik-cache, so it cannot be kSpeed. (cherry picked from commit 29d38e77c553c6cf71fc4dafe2d22b4e3f814872) Bug: 27689078 Change-Id: I6274188610f31dcd9d086fc080b2be93afae5a6b
|
29d38e77c553c6cf71fc4dafe2d22b4e3f814872 |
|
23-Mar-2016 |
Andreas Gampe <agampe@google.com> |
Revert "Revert "Use compiler filter to determine oat file status."" This reverts commit 845e5064580bd37ad5014f7aa0d078be7265464d. Add an option to change what OatFileManager considers up-to-date. In our tests we're allowed to write to the dalvik-cache, so it cannot be kSpeed. Bug: 27689078 Change-Id: I0c578705a9921114ed1fb00d360cc7448addc93a
|
845e5064580bd37ad5014f7aa0d078be7265464d |
|
23-Mar-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Use compiler filter to determine oat file status." Bots are red. Tentative reverting as this is likely the offender. Bug: 27689078 This reverts commit a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931. Change-Id: I3ec6947a5a4be878ff81f26f17dc36a209734e2a
|
a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931 |
|
18-Mar-2016 |
Richard Uhler <ruhler@google.com> |
Use compiler filter to determine oat file status. Record the compiler filter in the oat header. Use that to determine when the oat file is up-to-date with respect to a target compiler filter level. New xxx-profile filter levels are added to specify if a profile should be used instead of testing for the presence of a profile file. This change should allow for different compiler-filters to be set for different package manager use cases. Bug: 27689078 Change-Id: Id6706d0ed91b45f307142692ea4316aa9713b023
|
3c94f0945ed596ceee39783fa075f013b65e80a1 |
|
21-Mar-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Remove Quick from tree. So long, old friend. Change-Id: I0241c798a34b92bf994fed83888da67d6e7f1891
|
a807780b1d8ee01dfb03923c673621b4c81ac858 |
|
17-Mar-2016 |
Mathieu Chartier <mathieuc@google.com> |
Add verify-profile compiler filter Only verifies and dex2dex compiles classes in the profile. Goal is to reduce application launch time. ~2x faster than interpret-only for Facebook. Bug: 27688727 (cherry picked from commit a079e3aa62cceb76c1c1811e6e09bcaf75e20289) Change-Id: Iad5aa1adee3aa6c2408820e8cbbab2d4412021b8
|
a079e3aa62cceb76c1c1811e6e09bcaf75e20289 |
|
17-Mar-2016 |
Mathieu Chartier <mathieuc@google.com> |
Add verify-profile compiler filter Only verifies and dex2dex compiles classes in the profile. Goal is to reduce application launch time. ~2x faster than interpret-only for Facebook. Bug: 27688727 Change-Id: Ic9979c4f7ba4930298d0983c4e3c70c63500213f
|
346dc993615487e9c645a515dfcbf9a6488f36fe |
|
13-Mar-2016 |
David Srbecky <dsrbecky@google.com> |
Remove --native-debuggable compiler option. Check if both --debuggable and --generate-debug-info are set instead. History: I have recently added the --native-debuggable flag to control whether extra stack maps are generated in order to produce accurate native line number mapping of all generated code. I didn't want to include it into --debuggable since we compile boot.oat as debuggable and so it would be affected. On second thought, it would have been reasonable to generate the extra stackmaps only if both --debuggable and --generate-debug-info are set, instead of introducing another compiler flag. This means we do not affect boot.oat but we still get the extra stack maps if DWARF debug information is explicitly requested. Change-Id: I7e5e557e4850a88b3b6f86178d2cb645fb1e1110
|
3f41a0193eadf037b4003c1996151f386ca07b13 |
|
19-Feb-2016 |
Andreas Gampe <agampe@google.com> |
ART: Use optimizing compiler in image_test Expose some compiler options so we can run the image test with the optimizing compiler without running into a stack overflow. Also allow a variable amount of threads in CreateCompilerDriver. Use 16 as a middle ground on the host to speed up the otherwise now slowed-down test. Bug: 27240085 Bug: 27552475 Change-Id: I8db5055d32ae722c8f430903244faa9166cc4886
|
ce4b0ba4d762775a86b3529ac76cb89199c0cc1e |
|
28-Jan-2016 |
David Brazdil <dbrazdil@google.com> |
Ignore image checksum for ExtractOnly oat files Oat files compiled with --compiler-filter=verify-at-runtime contain no compiled code and therefore are independent of the boot image. This patch stores an ExtractOnly flag in the oat header and skips the image checksum test if the flag is set, rendering the oat file up to date even after OTAs. Bug: 26813999 Change-Id: I25291d5b49d9e9d0018844e957a2dc88ef6bdc27
|
ace0dc1dd5480ad458e622085e51583653853fb9 |
|
20-Jan-2016 |
Andreas Gampe <agampe@google.com> |
ART: Add option to ensure deterministic compilation To ensure reliable stable generation of a boot image, add a flag for forced determinism, trading compile time for a deterministic output. We have to run certain passes in the compiler-driver single-threaded. It is also necessary to try to make the heap layout deterministic. Switch to nonconcurrent GC, use the free-list implementation for LOS, and try to allocate the main space at a known location. This is best effort at the moment. To allow the compiler phase to be parallelized, const-strings need to be created beforehand. The identity hashcode seed needs to be pinned. Besides the Dex object we also need to null the DexFile pointer in dex caches. For classes, we need to remove the clinit thread ID. Fix oatdump alignment padding accounting. Bug: 26687569 Change-Id: Ia82120e8f715bb3691d861817b12778ac677355a
|
47496c293b2b79c9747eeebafe444715202e7fc6 |
|
27-Jan-2016 |
Vladimir Marko <vmarko@google.com> |
ART: Allow --no-inline-from to specify multiple dex files. This will allow tests to specify arbitrary dex files from which we should not inline, in addition to core-oj, so that we can test the related functionality. Additionally, should the core-oj.jar core grow beyond a single classes.dex and require a multi-dex .jar, this change makes sure that we prevent inlining also from the extra classes<N>.dex files. Change-Id: I74da4839bf9bb405dd62ad80563bf646a7a65dd9
|
5b1c2ca30dad519be285f0a1e839c23cc4e3a51d |
|
25-Jan-2016 |
David Srbecky <dsrbecky@google.com> |
Revert "Revert "Add option to generate compressed backtrace info."" This reverts commit 8546cc9aeb05e866e1fb6a9e4130d53ea330baa8. Change-Id: I676fdf9af27fa3b16fa8921778ff8832ab8c437d
|
8546cc9aeb05e866e1fb6a9e4130d53ea330baa8 |
|
25-Jan-2016 |
David Srbecky <dsrbecky@google.com> |
Revert "Add option to generate compressed backtrace info." This reverts commit 5fdcc3c931b70204fd8c491afa66f57f8428490f. Change-Id: I9c1f5aad6933a46af6717e3a90a51f76111f9c8a
|
5fdcc3c931b70204fd8c491afa66f57f8428490f |
|
19-Jan-2016 |
David Srbecky <dsrbecky@google.com> |
Add option to generate compressed backtrace info. Add flag --generate-mini-debug-info which generates LZMA compressed .symtab and .debug_frame, which are sufficient to print java backtraces in libunwind. If enabled, it increases the size of boot.oat by about 3.5%. Change-Id: Ic3c2ef7704c05fa328720c6781ca2a9b8e3935a3
|
c903b6af634927479915eaa9516d493eea23f911 |
|
18-Jan-2016 |
Nicolas Geoffray <ngeoffray@google.com> |
Move --dump-cfg and dump-cfg-append to CompilerOptions. It simplifies passing the option to the JIT. Change-Id: Iee1b722362899e5809ef97be90961e3dda1e16cc
|
3e09eebe1ffd38b12d67c90cfe609d27453469ff |
|
12-Jan-2016 |
David Srbecky <dsrbecky@google.com> |
Disable --generate-debug-info by default in all cases. The option is disabled by default unless explicitly enabled. In particular, it is no longer enabled in debug builds, and the --debuggable option does not affect it. I want to use this flag to control the debug data generated by the JIT as well. Since this takes run-time memory, I want to avoid enabling it unless explicitly requested. Change-Id: I2e2afa2f56bb0a113e92cc2e26e00dceac1689ca
|
5949fa0cb9a8d26ac20b9b02065a63b4b20443be |
|
18-Dec-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Revert "Tweak inlining heuristics."" This reverts commit b17d1ccff0ac26fc22df671907ba2b4f4c656ce4. Change-Id: I26f6f8702a448c3da12662cbc6bc0f6e562bc40b
|
dcdc85bbd569f0ee66c331b4219c19304a616214 |
|
04-Dec-2015 |
Jeff Hao <jeffhao@google.com> |
Dex2oat support for multiple oat file and image file outputs. Multiple changes to dex2oat and the runtime to support a --multi-image option. This generates a separate oat file and image file output for each dex file input. Change-Id: Ie1d6f0b8afa8aed5790065b8c2eb177990c60129
|
0cf4493166ff28518c8eafa2d0463f6e817cce75 |
|
09-Dec-2015 |
David Srbecky <dsrbecky@google.com> |
Generate more stack maps during native debugging. Generate extra stack map at the start of each java statement. The stack maps are later translated to DWARF which allows LLDB to set breakpoints and view local variables. Change-Id: If00ab875513308e4a1399d1e12e0fe8934a6f0c3
|
b17d1ccff0ac26fc22df671907ba2b4f4c656ce4 |
|
17-Dec-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Revert "Tweak inlining heuristics." This reverts commit fcb7613d3aaa9a6802800b6e957aaad51cedf6dc. Change-Id: Idc0df6a2f68e8b5aa740bb1259f19c2953811510
|
fcb7613d3aaa9a6802800b6e957aaad51cedf6dc |
|
17-Dec-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Tweak inlining heuristics. go/lem driven: Performance: Richards +41% CaffeineMethod +43% ReversiBench: +52% Towers: +73% Tak: +85% Memory use: 7% less memory CompileTime: 14% increase CodeSize: 8% increase Last three measures are now more acceptable given we JIT. Change-Id: Ic4aa6535d2b76cf3545ef00e9b2ae32330f10745
|
abbb0f76b07417f13f712f54d5afddb72e3b9931 |
|
29-Oct-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Refactor code so that JIT can parse compiler options. Currently only the CompilerOptions class. We should also do it for the CompilerDriver options. This will fix the flakiness seen on jdwp testing, as the debuggable flag was not passed to the compiler. Change-Id: I4218dd5928c9f4fe2d6191ab11e5598e7cf84bcf
|
e418dda75998e0186f7580c2c54705767c3c8f1f |
|
12-Aug-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Be more flexible on the code unit size when inlining. This change increases the maximum code unit size, and fold parameters in the inlinee in the hope to reduce the overall size of the graph. We then make sure we don't inline methods that have more than N HInstructions. Also, remove the kAccDontInline flag on ArtMethod. The compiler does not need it anymore. Change-Id: I4cd3da40e551f30ba83b8b274728b87e67f6812e
|
d333389cf635e002658a77e64547631e05004447 |
|
07-Aug-2015 |
Roland Levillain <rpl@google.com> |
Tighten default inlining settings when using the space filter. (cherry picked from commit a215b95d03cfe713018a245553b74d7eeee813df and amended) Bug: 21868508 Change-Id: Ic83813a966cef18e59447083926bf033aa587154
|
a215b95d03cfe713018a245553b74d7eeee813df |
|
07-Aug-2015 |
Roland Levillain <rpl@google.com> |
Tighten default inlining settings when using the space filter. Bug: 21868508 Change-Id: Ic83813a966cef18e59447083926bf033aa587154
|
8f96df846403703e14016590b4c0c3af870561d9 |
|
29-Jul-2015 |
Calin Juravle <calin@google.com> |
Allow for fine tuning the inliner. Bug: 21868508 (cherry picked and squashed from commits ec74835a7e4f2660250a2f3f9508cbbe5269e49a and 0941b9d48a9a8c6d80a1af7a0d0fc9f80fe2b9a1) Change-Id: I1750e6bea20321d04680132281a6c2924531c5ae
|
ec74835a7e4f2660250a2f3f9508cbbe5269e49a |
|
29-Jul-2015 |
Calin Juravle <calin@google.com> |
Allow for fine tuning the inliner. Bug: 21868508 Change-Id: Ice7f1604ed65e3d4ed2a010ee431272b7d000cdb
|
88802ca3587f808fb56d759fe3a85adb0f943234 |
|
26-Jun-2015 |
buzbee <buzbee@google.com> |
ART: Fix kEverything compiler filter Previously the kEverything filter failed to compile class initializers. Now it will. Bug: 19576257 (cherry picked from commit c83329952b4a313e747c8835a73699e2cae5a6e2) Change-Id: I189d2b5b379aee112c4e95f8d3e6c32abab6ed41
|
c83329952b4a313e747c8835a73699e2cae5a6e2 |
|
26-Jun-2015 |
buzbee <buzbee@google.com> |
ART: Fix kEverything compiler filter Previously the kEverything filter failed to compile class initializers. Now it will. Bug: 19576257 Change-Id: I189d2b5b379aee112c4e95f8d3e6c32abab6ed41
|
a26cb57f46fd3f27a930d9d688fe8670c1f24754 |
|
23-Apr-2015 |
David Srbecky <dsrbecky@google.com> |
ART stack unwinding fixes for libunwind/gdb/lldb. dex2oat can already generate unwinding and symbol information which allows tools to create backtrace of mixed native and Java code. This is a cherry pick from aosp/master which fixes several issues. Most notably: * It enables generation of ELF-64 on 64-bit systems (in dex2oat, C compilers already produce ELF-64). Libunwind requires ELF-64 on 64-bit systems for backtraces to work. * It enables loading of ELF files with dlopen. This is required for libunwind to be able to generate backtrace of current process (i.e. the process requesting backtrace of itself). * It adds unit test to test the above (32 vs 64 bit, in-proces vs out-of-process, application code vs framework code). * Some other fixes or clean-ups which should not be of much significance but which are easier to include to make the important CLs cherry-pick cleanly. This is squash of the following commits from aosp/master: 7381010 ART: CFI Test e1bbed2 ART: Blacklist CFI test for non-compiled run-tests aab9f73 ART: Blacklist CFI test for JIT 4437219 ART: Blacklist CFI test for Heap Poisoning a3a49fe Switch to using ELF-64 for 64-bit architectures. 297ed22 Write 64-bit address in DWARF if we are on 64-bit architecture. 24981a1 Set correct size of PT_PHDR ELF segment. 1a146bf Link .dynamic to .dynstr 67a0653 Make some parts of ELF more (pointer) aligned. f50fa82 Enable 64-bit CFI tests. 49e1fab Use dlopen to load oat files. 5dedb80 Add more logging output for dlopen. aa03870 Find the dlopened file using address rather than file path. 82e73dc Release dummy MemMaps corresponding to dlopen. 5c40961 Test that we can unwind framework code. 020c543 Add more log output to the CFI test. 88da3b0 ART: Fix CFI test wrt/ PIC a70e5b9 CFI test: kill the other process in native code. ad5fa8c Support generation of CFI in .debug_frame format. 90688ae Fix build - large frame size of ElfWriterQuick<ElfTypes>::Write. 97dabb7 Fix build breakage in dwarf_test. 388d286 Generate just single ARM mapping symbol. f898087 Split .oat_patches to multiple sections. 491a7fe Fix build - large frame size of ElfWriterQuick<ElfTypes>::Write (again). 8363c77 Add --generate-debug-info flag and remove the other two flags. 461d72a Generate debug info for core.oat files. Bug: 21924613 Change-Id: I3f944a08dd2ed1df4d8a807da4fee423fdd35eb7
|
8363c772581bf00ebcdc2e38391b4bfae51beb75 |
|
28-May-2015 |
David Srbecky <dsrbecky@google.com> |
Add --generate-debug-info flag and remove the other two flags. Replace the flags --include-debug-symbols and --include-cfi with single flag called --generate-debug-info (with alias -g). The name "symbol" was not ideal, since depending on context it may be interpreted as "ELF symbols", or "debugging information". This CL also means that we have only the options to include either all debugging information or none. This should be fine, since we can use standard tools to strip anything we do not want. Change-Id: I721fded56d755d7eed0ef36aa84e841a1f5747f8
|
8dc7324da5bd0f2afd2ab558ab04882329a61fe8 |
|
12-Apr-2015 |
David Srbecky <dsrbecky@google.com> |
Add --include-cfi compiler option. Decouple generation of CFI from the rest of debug symbols. This makes it possible to generate oat with CFI but without the rest of debug symbols. This is in line with intention of the .eh_frame section. The section does not have the .debug_ prefix because it is considered somewhat different to the rest of debug symbols. Change-Id: I32816ecd4f30ac4e0dc69d69a4993e349c737f96
|
7f49e672bc943c49ca8af438ae4bd61b95fe364b |
|
12-Apr-2015 |
David Srbecky <dsrbecky@google.com> |
Remove the --gen-gdb-info compiler option. It is never used. We generally use --include-debug-symbols instead. Change-Id: I933495cd85ab4f7dfcf3ef3cd2d943d4b870ffeb
|
b163bb742a099c1808907b513ae39068b63b1692 |
|
31-Mar-2015 |
Vladimir Marko <vmarko@google.com> |
Refactor RelativePatcher out of OatWriter. Move the relative patcher classes to compiler/linker/ and compiler/linker/<arch>/ . Refactor them to avoid OatWriter dependency so that they can be unit tested. Add tests for x86 and x86-64. Change-Id: I1b42baa9fc431378e4cce1399bec590c5b5a409f
|
e86deeffad79c00ed2ebede04f4adc348bda790c |
|
19-Mar-2015 |
Mathieu Chartier <mathieuc@google.com> |
Add verify-at-runtime compiler filter Verifies at runtime only, instead of at compilation time. AOSP HH boot time after clean-oat: ~30s instead of ~35s if enabled. Also helps install time if enabled there. TODO: See if there is any possible deadlocks that can result from this. Bug: 19762303 Change-Id: Ibfba77148da9039e8d7d7497c05486bc044eefe7
|
6cf49e57ad7a61e1fffd5b1dfae9179c3ca5703d |
|
05-Mar-2015 |
Andreas Gampe <agampe@google.com> |
ART: Add option to abort dex2oat on hard failure Add an option that aborts dex2oat when a hard verifier failure occurs. Bug: 19606409 Change-Id: I53195284e22fe6207274101e85745af763c06271
|
7b2f09eb6b5c74ffc38bd70f0aa74b8f8112e394 |
|
02-Mar-2015 |
Andreas Gampe <agampe@google.com> |
ART: Add debuggable compiler flag Add a flag to compiler options that shows debuggability. Change-Id: Id17ec72babe2ee88713a0d274eff86508de30666
|
f3c7ba6a5759873138fbf4ae24a216dc0d87a3fe |
|
24-Feb-2015 |
Jeff Hao <jeffhao@google.com> |
Remove ART_SMALL_MODE ifdefs. WITH_ART_SMART_MODE now sets --compiler-filter options instead. Has a corresponding change to /build Bug: 19460766 Change-Id: I295ebbd49caa5341834141f7c2bbf8df830131ed
|
5bdab12d8b48ca4c395d9d2c506ebff0df01b734 |
|
27-Jan-2015 |
Mathieu Chartier <mathieuc@google.com> |
Clean up pass driver Added pass manager to hold the state which used to be in global variables. Static variables caused issues with Runtime.exit since they are destroyed by the global destructors while threads are still executing. Bug: 17950037 Change-Id: Ie0e4546dc9e48909c8df996a5c135be682d50044
|
27e28d34c6754b14f1232d131c70e8dd07984e91 |
|
23-Jan-2015 |
Nicolas Geoffray <ngeoffray@google.com> |
Implicit stack overflow checks and null checks are the norm now. Make the default to true so that unit tests don't need to use the full CompilerOptions constructor. Change-Id: Ieb52235af73dce2fa03f12932e22ebe2294c805b
|
956af0f0cb05422e38c1d22cbef309d16b8a1a12 |
|
11-Dec-2014 |
Elliott Hughes <enh@google.com> |
Remove portable. Change-Id: I3bf3250fa866fd2265f1b115d52fa5dedc48a7fc
|
dbfe254f5ca96f6c5b2284478597d6140c01a394 |
|
26-Nov-2014 |
Andreas Gampe <agampe@google.com> |
ART: Print initialization failures to file Add the ability to print boot image initialization failures to a file. Add a tool to convert said file into a Graphviz file. Change-Id: Iedcc337bdf05654c154aa553236f20bdd15572ee
|
300590bd7291251d9ac9aa762785a517d7f9f919 |
|
17-Oct-2014 |
Igor Murashkin <iam@google.com> |
dex2oat: Add a --compile-pic option (cherry-picked from AOSP master 83c5612e69fa05610baf4f4d237fe0995a79cde5) Bug: 18035729 (cherry picked from commit 643b5df2b065ccf5bb19a183573da691e9d0311f) Change-Id: I14edee7c7cb996bc388d89b4c5274db2caf91004
|
6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f |
|
31-Oct-2014 |
Ian Rogers <irogers@google.com> |
Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags. Fix associated errors about unused paramenters and implict sign conversions. For sign conversion this was largely in the area of enums, so add ostream operators for the effected enums and fix tools/generate-operator-out.py. Tidy arena allocation code and arena allocated data types, rather than fixing new and delete operators. Remove dead code. Change-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b
|
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
|
c7dd295a4e0cc1d15c0c96088e55a85389bade74 |
|
22-Oct-2014 |
Ian Rogers <irogers@google.com> |
Tidy up logging. Move gVerboseMethods to CompilerOptions. Now "--verbose-methods=" option to dex2oat rather than runtime argument "-verbose-methods:". Move ToStr and Dumpable out of logging.h, move LogMessageData into logging.cc except for a forward declaration. Remove ConstDumpable as Dump methods are all const (and make this so if not currently true). Make LogSeverity an enum and improve compile time assertions and type checking. Remove log_severity.h that's only used in logging.h. With system headers gone from logging.h, go add to .cc files missing system header includes. Also, make operator new in ValueObject private for compile time instantiation checking. Change-Id: I3228f614500ccc9b14b49c72b9821c8b0db3d641
|
d6dee676acdd1ab0aa4e5ba6834ee7c40a6dd8ab |
|
17-Oct-2014 |
Igor Murashkin <iam@google.com> |
dex2oat: Add a --compile-pic option Change-Id: I80e03613e3b6ac079bcbc7e068bbaae760c364c9
|
88157efc1e16707d4ae10775d4acb15121c50fe7 |
|
12-Sep-2014 |
Nicolas Geoffray <ngeoffray@google.com> |
Add the "time" compilation filter and output compilation stats. A "time" compiler filter means the compiler optimizes for compile time. Change-Id: Id1a207ceb2d95f3548aae5e45d51b80695da2029
|
147eb41b53729ec8d5c188d1cac90964a51afb8a |
|
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 Conflicts: compiler/dex/quick/arm64/target_arm64.cc compiler/image_test.cc runtime/fault_handler.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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
081f73e888b3c246cf7635db37b7f1105cf1a2ff |
|
07-Apr-2014 |
Dave Allison <dallison@google.com> |
Revert "Use trampolines for calls to helpers" This reverts commit 754ddad084ccb610d0cf486f6131bdc69bae5bc6. Change-Id: Icd979adee1d8d781b40a5e75daf3719444cb72e8
|
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
|
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
|
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
|
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>
|
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
|