summaryrefslogtreecommitdiff
path: root/compiler/driver/compiler_options.cc
AgeCommit message (Collapse)Author
2020-05-20Add compiler type to CompilerOptions.Vladimir Marko
Let CompilerOptions hold the information whether it is AOT or JIT compilation, or Zygote JIT for shared code. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing --jit Test: aosp_taimen-userdebug boots. Change-Id: Id9200572406f8e43d99b8b61ef0e3edf43b52fff
2020-04-01Add explicit compiler option to enable test-specific features.David Srbecky
We can no longer rely on checking the "core.art" image name, since we plan to remove it and use the shipped boot image. This option enables test-specific features, such as $noinline$. Test: ./art/test.py -r --optimizing --64 Bug: 147817558 Change-Id: Iadac6e1b0f46e83efd0551fb8462a6b268ad33d8
2020-03-27Revert^4 "Add "linkage" test options""David Sehr
This reverts commit 16c08ca97486f535698f1a1b17f0332bfe78e95a. Reason for revert: Disabled on device testing Change-Id: I8d5442e0ebb6383ebfbce98f1857b5e844e0d5e1 Bug: none Test: make test-art-host-gtest-dex2oat_test
2020-03-27Revert "Revert "Revert "Add "linkage" test options"""Nicolas Geoffray
This reverts commit 80c0c50de048da458c707adde5b0499d75f8253a. Reason for revert: Test fails on device: https://ci.chromium.org/p/art/builders/ci/angler-armv8-ndebug/1306? Change-Id: I19e9b9e24023b2d7b6b86114c7a9e4018f65b2b8
2020-03-26Revert "Revert "Add "linkage" test options""David Sehr
This reverts commit 91a8e6f60c508c6e010b6ef8e4056e3a6f04c447. Reason for revert: Moved tests to gtest and under compilation only. Change-Id: I60899694946353bfcd334473c20bb17c84f095e0 Bug: none Test: make test-art-host-gtest-dex2oat_test
2020-03-23Revert "Add "linkage" test options"Nicolas Geoffray
This reverts commit 873bb64b8815b3f6a350ce109eb54ec770369d22. Reason for revert: Test in CL fails on device, see: https://ci.chromium.org/p/art/builders/ci/angler-armv7-ndebug/1302? Change-Id: I18d8204f40bbc0f89eb230656e14966035b0b1c3
2020-03-20Add "linkage" test optionsDavid Sehr
Add options to control "linkage" model. This involves checking for redefinitions and subclassing classloaders. Bug: none Test: 1964-redefinition Change-Id: I0cb3c725b7d62f7c6c0958dc6d5f9b55d6258fd5
2019-07-30Compiler changes for boot image extension.Vladimir Marko
Test: m test-art-host-gtest Test: testrunnner.py --host --optimizing Test: aosp_taimen-userdebug boots. Test: run-gtest.sh Test: testrunner.py --target --optimizing Change-Id: I8e999c96ec908f26d8c529edc9d2a3be49a9379a
2019-07-17Add option for controling app image class initializationMathieu Chartier
The new option is --initialize-app-image-classes. This attempts to initialize app image classes by running the class initializers ahead of time. Will test this through test 660, but there are currently aborts when it's enabled. Test: test-art-host Bug: 70735003 Change-Id: Icc05683b23098a15531097f67aad17144f0badaf
2019-07-03Remove small and tiny method optionsMathieu Chartier
These are unused and nops. Test: test-art-host-gtest Change-Id: I6421387d53ec8692cf420be71ec47e1ef5e61f19
2019-02-20ART: Reduce dependencies on CompilerDriver.Vladimir Marko
Preparation for moving CompilerDriver and other stuff from libart-compiler.so to dex2oat. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: Ic221ebca4b8c79dd1549316921ace655f2e3f0fe
2019-02-06Replace StringPiece with std::string_view in HashSet.Vladimir Marko
Update HashSet comment and related code. Also remove dead CompilerOptions declarations with StringPiece parameters. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 123750182 Change-Id: I4a39d0e8e0392a414129369c5b304ec4813e9ed5
2018-12-06Refactor CompilerDriver::CompileAll().Vladimir Marko
Treat verification results and image classes as mutable only in CompilerDriver::PreCompile(), and treat them as immutable during compilation, accessed through the CompilerOptions. This severs the dependency of the inliner on the CompilerDriver. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: I594a0213ca6a5003c19b4bd488af98db4358d51d
2018-11-29Add image compressed blocksMathieu Chartier
Add support for splitting the image into a set of solid blocks. Added dex2oat option --max-image-block-size and correspodning image unit test. Motivation: Enable parallel image decompression in the future. Bug: 116052292 Test: test-art-host Change-Id: I37c6c6a43ef94c4a62bf38a0cf51f26ce06347ac
2018-11-21Merge "ART: Add profile-compile-check support"Andreas Gampe
2018-11-15Rewrite image type in CompilerOptions.Vladimir Marko
Prepare for introduction of boot image extension. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: Pixel 2 XL boots. Change-Id: Id007c4aeb4ada84fe65c1148fdf67e8a412e5b74
2018-11-14ART: Rewrite core image detection.Vladimir Marko
Remove unused compiler option `core_image_` and cache the IsCompilingWithCoreImage in the CompilerOptions instead. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: Idcf3b6c96dab9a39f823a16778e7698589442cd8
2018-11-08Move profile compilation info to CompilerOptions.Vladimir Marko
Remove one HInliner dependency on the CompilerDriver. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: If6f0ab864095641b5697c8c6f5100520f91d5e53
2018-10-16ART: Add profile-compile-check supportAndreas Gampe
Add --check-profiled-methods, which verifies that all methods mentioned in a profile for a guided compilation are actually compiled instead of being punted. As outcome it may log or abort dex2oat. TODO: Extend dex2oat_test Bug: 76145463 Test: mmma art Test: m test-art-host Change-Id: I956113b55796d0666db9dbfd387105a7d27b0868
2018-10-16Add logic to eagerly resolve const-string for startup methodsMathieu Chartier
Added dex2oat option --resolve-startup-const-strings=<true|false> If true, this option causes the compiler driver to resolve all const-strings that are referenced from methods marked as "startup" in the profile. Bug: 116059983 Test: test-art-host Change-Id: I61cf9e945c125671fc4ab4b50458a911318a837f
2018-10-10Introduce a 'baseline' variant for the compiler.Nicolas Geoffray
Implemented as a stripped down version of the optimizing compiler, not running any optimization. Adjust code to still work with expectations in code generators. bug: 111397239 Test: test.py --baseline Change-Id: I4328283825f9a890616e7496ed4c1e77d6bcc5dd
2018-08-02Reuse arena memory for each block in scheduler.Vladimir Marko
This reduces the peak memory used for large methods with multiple blocks to schedule. Compiling the aosp_taimen-userdebug boot image, the most memory hungry method BatteryStats.dumpLocked has the Scheduler memory allocations in ArenaStack hidden by the register allocator: - before: MEM: used: 8300224, allocated: 9175040, lost: 197360 Scheduler 8300224 - after: MEM: used: 5914296, allocated: 7864320, lost: 78200 SsaLiveness 5532840 RegAllocator 144968 RegAllocVldt 236488 The total arena memory used, including the ArenaAllocator not listed above, goes from 44333648 to 41950324 (-5.4%). (Measured with kArenaAllocatorCountAllocations=true, kArenaAllocatorPreciseTracking=false.) Also remove one unnecessary -Wframe-larger-than= workaround and add one workaround for large frame with the above arena alloc tracking flags. Test: m test-art-host-gtest Test: testrunner.py --host Bug: 34053922 Change-Id: I7fd8d90dcc13b184b1e5bd0bcac072388710a129
2018-06-25Move instruction_set_ to CompilerOptions.Vladimir Marko
Removes CompilerDriver dependency from ImageWriter and several other classes. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: Pixel 2 XL boots. Test: m test-art-target-gtest Test: testrunner.py --target --optimizing Change-Id: I3c5b8ff73732128b9c4fad9405231a216ea72465
2018-06-25Move dex_files_for_oat_file_ to CompilerOptions.Vladimir Marko
A step toward removing the CompilerDriver dependency from several classes, including HSharpening and ImageWriter. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: I364ef66511fdf855cb11b12c818a40572b037727
2018-06-25Move image_classes_ to CompilerOptions.Vladimir Marko
Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: Ifb30e071d7b39ae939fc3f83d7eba82fd077c7e8
2018-05-08ART: Add --dump-pass-timings compiler option.Vladimir Marko
This replaces the old --dump-passes option removed in https://android-review.googlesource.com/549200 . Using --dump-timing for timing optimization passes makes the high level timings useless, so return to using two different options for these. Test: Manually run dex2oat with --dump-timings, --dump-pass-timings and both. Change-Id: Iddc4cfee35652fb493656e7d6081a898c2894f72
2018-01-29Add compiler option for counting hotness in compiled code.Nicolas Geoffray
For eventually easier profiling of boot classpath and system server. bug: 30934496 Test: 674-hotness-compiled Change-Id: I0f63c644527b74f6ef2649f481c2a1c731bb9f21
2018-01-02ART: Emit runtime read barrier checks only in slow-debugAndreas Gampe
Move runtime read barrier check emission to slow-debug to have better control over when this instrumentation is done. Bug: 35644369 Bug: 68025088 Test: m test-art-host Test: manual inspection of core image code Change-Id: I69b3b6f243c30813a741fe9e0a460f1543c6bc5d
2017-11-28Clean some dex2oat options.Nicolas Geoffray
Remove dump-passes inherited from Quick days, and move dump-timings and dump-stats to CompilerStats. Test: test.py Change-Id: Ie79be858a141e59dc0b2a87d8cb5a5248a5bc7af
2017-11-07ART: Add compiler option for code deduplicationAndreas Gampe
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
2017-10-19ART: Add abort-on-soft-verifier-errorAndreas Gampe
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
2017-10-06ART: Use CmdlineParser in dex2oatAndreas Gampe
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
2017-08-10Instrument ARM64 generated code to check the Marking Register.Roland Levillain
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
2017-07-27ART: Modify --abort-on-hard-verifier-errorAndreas Gampe
Add --no-abort-on-hard-verifier-error to turn off the behavior. Use FATAL_WITHOUT_ABORT and abort() instead of LOG(FATAL) to avoid multiple printouts of stacks. Just shutting down thread pools still leads to three redundant stack dumps. Bug: 36902714 Test: m Change-Id: I35fef23fb36567b0d1deb7f16c2a2b43c3af47e8
2017-06-29Code cleanup around compiler options and JIT.Nicolas Geoffray
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
2017-05-02Document some dex2oat command line options.Roland Levillain
Also process option `--dump-cfg-append` correctly. Test: m build-art-host Change-Id: I062154c267c1a6eec22af42d985f19a555bdf4ca
2017-03-24Improvements in the Inliner.Nicolas Geoffray
- 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
2017-03-08Remove --include-patch-information option from dex2oat.Richard Uhler
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
2016-10-05Generate SHA-1 build ID for host-generated *.oat files (1/2).Alexey Alexandrov
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
2016-10-04Revert "Revert "Store resolved Strings for AOT code in .bss.""Vladimir Marko
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
2016-09-30Revert "Store resolved Strings for AOT code in .bss."Vladimir Marko
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
2016-09-29Store resolved Strings for AOT code in .bss.Vladimir Marko
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
2016-08-08Implement running user defined list of passesWojciech Staszkiewicz
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
2016-08-06Add a register allocation strategy compiler optionMatthew Gharrity
Test: manually, on device. Change-Id: If007a1657dd5769ddef03691e0a19dbbe6ba1a29
2016-05-03Remove -XOatFileManagerCompilerFilter argument.Richard Uhler
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
2016-03-23Revert "Revert "Use compiler filter to determine oat file status.""Andreas Gampe
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
2016-03-23Revert "Use compiler filter to determine oat file status."Nicolas Geoffray
Bots are red. Tentative reverting as this is likely the offender. Bug: 27689078 This reverts commit a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931. Change-Id: I3ec6947a5a4be878ff81f26f17dc36a209734e2a
2016-03-22Use compiler filter to determine oat file status.Richard Uhler
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
2016-03-21Remove Quick from tree.Nicolas Geoffray
So long, old friend. Change-Id: I0241c798a34b92bf994fed83888da67d6e7f1891
2016-03-18Add verify-profile compiler filterMathieu Chartier
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