summaryrefslogtreecommitdiff
path: root/dex2oat
AgeCommit message (Collapse)Author
2021-09-27Better isolate standalone ART gtests on device.Roland Levillain
Standalone ART gtests used to be installed in the same directory on device (`/data/local/tmp/nativetest`), which could be a race condition. In particular, some ART gtests are run as root (e.g. `art_standalone_dexoptanalyzer_tests`) and create the `/data/local/tmp/nativetest` directory with `root` ownership/permissions, preventing any subsequent ART gtest not run as root (e.g. `art_standalone_cmdline_tests`) from installing its artifacts in that directory. To prevent these issues, use a different directory on device (under `/data/local/tmp`) per standalone ART gtest. (cherry picked from commit d8c0ac264f606bf0c69781388ca6048eb0a4b55f) (cherry picked from commit 58a79873e94dbe4a168221fc95b641dbf8cd3e3e) Test: atest art_standalone_dexoptanalyzer_tests \ && atest art_standalone_cmdline_tests Test: atest art_standalone_\*_tests Bug: 194403904 Bug: 162834439 Change-Id: I141c1676382b078c1441e5782b3dc77affafa3fc Merged-In: I141c1676382b078c1441e5782b3dc77affafa3fc
2021-08-13Add `Sdk31ModuleController` support to ART run-tests and gtests.Roland Levillain
This in order to run these tests only if the device under test is SDK version 31 (Android 12) or above. Test: m mts && mts-tradefed run commandAndExit mts-art Bug: 195178963 Bug: 184696655 Bug: 181724969 Ignore-AOSP-First: API level 31 not in AOSP yet Change-Id: I4bb6405281809863562e5bbbfc1189f227f2508d
2021-07-13Add support for standalone ART gtests to MTS.Roland Levillain
This change: - adds standalone ART gtests to test suite `mts-art`; - adds `MainlineTestModuleController` support to standalone ART gtests. This in order to have these tests run in a Mainline context only when the ART Module (either `com.google.android.art` or `com.android.art`) is installed on the test device. (cherry picked from commit 6a2e6893290eac83f59dac4ec5bc10abf985ae10) Test: m mts && mts-tradefed run commandAndExit mts-art Test: m mts && mts-tradefed run commandAndExit mts-art-shard-00 Bug: 193218514 Bug: 167385698 Change-Id: I97d9c00b7c10debff8c63e4ae75f90da02be271c Merged-In: I97d9c00b7c10debff8c63e4ae75f90da02be271c
2021-07-12Uncouple ART gtests from the ART APEX.Roland Levillain
Introduce standalone versions of ART gtests on target, not bundled with the ART APEX. So far ART gtests have always been built as debug artifacts (and linked against ART debug libraries). Make some adjustments in some of these tests so that they can also work as non-debug artifacts and be used with the Release ART APEX (which contains only non-debug artifacts). Newly added tests: * `art_standalone_cmdline_tests` * `art_standalone_compiler_tests` * `art_standalone_dex2oat_tests` * `art_standalone_dexdump_tests` * `art_standalone_dexlist_tests` * `art_standalone_dexoptanalyzer_tests` * Note: Requires root access to the device. * `art_standalone_libartbase_tests` * `art_standalone_libartpalette_tests` * `art_standalone_libdexfile_support_tests` * `art_standalone_libdexfile_tests` * `art_standalone_libprofile_tests` * `art_standalone_oatdump_tests` * `art_standalone_odrefresh_tests` * `art_standalone_profman_tests` * Note: Requires root access to the device. * Note: Some tests (2 out of 37) are failing in multi-ABI contexts and have been temporarily disabled. * `art_standalone_runtime_compiler_tests` * `art_standalone_runtime_tests` * Note: Some tests (16 out of 686) are failing and have been temporarily disabled. * Note: Some tests (4 out of 686) are failing in multi-ABI contexts and have been temporarily disabled. * `art_standalone_sigchain_tests` Tests not added: * `art_standalone_dexanalyze_tests` * Reason: ART binary `dexanalyze` is not part of the Release ART APEX. * `art_standalone_dexdiag_tests` * Reason: ART binary `dexdiag` is not part of the Release ART APEX. * `art_standalone_dexlayout_tests` * Reason: ART binary `dexlayout` is not part of the Release ART APEX. * `art_standalone_imgdiag_tests` * Reason: ART binary `imgdiag` is not part of the Release ART APEX. Tests not added (but present in AOSP): * `art_standalone_libartservice_tests` * Reason: Test `art_libartservice_tests` does not exist in this branch. * `art_standalone_libarttools_tests` * Reason: Test `art_libarttools_tests` does not exist in this branch. (cherry picked from commit f040914a122be86e280efe5e31af1168f2b7c72e) Test: atest -a art_standalone_cmdline_tests Test: atest -a art_standalone_compiler_tests Test: atest -a art_standalone_dex2oat_tests Test: atest -a art_standalone_dexdump_tests Test: atest -a art_standalone_dexlist_tests Test: atest -a art_standalone_dexoptanalyzer_tests Test: atest -a art_standalone_libartbase_tests Test: atest -a art_standalone_libartpalette_tests Test: atest -a art_standalone_libdexfile_support_tests Test: atest -a art_standalone_libdexfile_tests Test: atest -a art_standalone_libprofile_tests Test: atest -a art_standalone_oatdump_tests Test: atest -a art_standalone_odrefresh_tests Test: atest -a art_standalone_profman_tests Test: atest -a art_standalone_runtime_compiler_tests Test: atest -a art_standalone_runtime_tests Test: atest -a art_standalone_sigchain_tests Test: atest -a art_standalone_\*_tests Test: m art_chroot && atest ArtGtestsTargetChroot Bug: 193218514 Bug: 162834439 Bug: 162734417 Change-Id: I8beda9159d48c4ca495698357dc3bd95e3ff84d5 Merged-In: I8beda9159d48c4ca495698357dc3bd95e3ff84d5
2021-07-12Rename some ART gtest related Soong modules.Roland Levillain
ART gtests currently link with the debug ("d") versions of ART libraries. The gtests themselves and their libraries are compiled as debug artifacts. For the sake of consistency, perform the following renaming of ART gtest related Soong modules: * `libart-compiler-gtest` -> `libartd-compiler-gtest` * `libart-dex2oat-gtest` -> `libartd-dex2oat-gtest` * `libart-gtest-defaults` -> `libartd-gtest-defaults` * `libart-gtest` -> `libartd-gtest` * `libart-runtime-gtest` -> `libartd-runtime-gtest` * `libartbase-art-gtest` -> `libartbased-art-gtest` As we plan to introduce non-debug ("non-d"), standalone versions of ART gtests in the context of uncoupling ART (target) gtests from the ART APEX (b/162834439), this renaming will help us, as we'll be able to use the old names of a "d" module for the corresponding "non-d" version. (cherry picked from commit 55ffe7fa9ead8b501a756bb53f2571e3e7602f5e) Test: mmma art Test: Run ART gtests on host and target Test: env OVERRIDE_TARGET_FLATTEN_APEX=false art/build/apex/runtests.sh Test: env OVERRIDE_TARGET_FLATTEN_APEX=true art/build/apex/runtests.sh Bug: b/193218514 Bug: b/162834439 Change-Id: I4ca27a7f445a760398f41a9e60a7008d77294505 Merged-In: I4ca27a7f445a760398f41a9e60a7008d77294505
2021-07-02runtime: add -Xdeny-art-apex-data-filesOrion Hodson
This option prevents the runtime from loading AOT artifacts installed in /data/misc/apexdata/com.android.art. (cherry picked from commit 971068dcaf5955634679dbfaf7b562ed52aff772) Bug: 192049377 Test: manually adding option and running odsign_e2e_tests Test: adding option and looking at proc/maps for system_server and zygote Merged-In: I56c7ce55b64de72faf39a06238089fe4b6b84b88 Change-Id: Iacce98009c51b936149435cfb70a3f744a122031
2021-06-18Only enable isolated compilation if requestedCalin Juravle
Isolated compilation saves memory but takes much longer, so enable it only if requested. Test: adb install Bug: 190277710 Merged-In: Ia1bffb37ff25f80f7b6173fd42e6bd6ffff68e45 Change-Id: Ia1bffb37ff25f80f7b6173fd42e6bd6ffff68e45 (cherry picked from commit c7ec2ca018f951b2bc65e99b27eab991da200097)
2021-06-09Remove palette hooks.Nicolas Geoffray
Make the method be part of the official palette API. Bug: 186016399 Bug: 185778652 Test: m Change-Id: I3dc9e879c647fd63f5826091813613fd97e25c0d Merged-In: I3dc9e879c647fd63f5826091813613fd97e25c0d (cherry picked from commit 0ebaa9865b0d04f1b7b0ef13b5ed7e271b0ab588)
2021-06-02Use verify when speed-profile gets an empty profileCalin Juravle
Change the compiler filter to verify if we need to compile speed-profile but we don't get a profile, or the profile is empty. This will improve the clarity and the precision of the telemetry data which usually expects speed-profile to outperform verify. Test: gtest Bug: 188655918 Change-Id: I215552e0001d56df0e0d676721f0a741ef2573be (cherry picked from commit 028c7efaf7321a1e253fb4d9dcc5d85e8a9e6d68)
2021-06-01Introduce `art::FastExit` to replace all uses of `quick_exit` in ART.Roland Levillain
No longer use `quick_exit(3)` in ART, as it does not play well with Clang's code coverage instrumentation (see b/187935521 and b/186576313). Replace all its uses with a new routine, `art::FastExit`, calling either `exit(3)` when ART is built with Clang's code coverage instrumentation (in order to dump coverage profiles when the program terminates) or `_exit(2)` otherwise (to exit quickly). Function `art::FastExit` is implemented as part of the `art_libartbase_headers` header library, so that it can be used easily in `dalvikvm`. (cherry picked from commit bdf1737bd17132525bcfdc778663123b61e97fa3) Test: mmma art Test: ART tests Bug: 186576313 Bug: 187935521 Change-Id: I7b4f86f6f0e7b12814684ecea73a2ed0ef994395 Merged-In: I7b4f86f6f0e7b12814684ecea73a2ed0ef994395
2021-05-26dex2oat: Abort app compilation without boot image.Vladimir Marko
Also avoid crash in GraphChecker for bad instructions that throw into catch block but do not have an environment. And DCHECK() that java_lang_Double_doubleToRawLongBits and java_lang_Float_floatToRawIntBits are intrinsics. (cherry picked from commit d42902692d1fbb101a3c60ba314df69005da9c83) Test: New test Dex2oatTest.MissingBootImageTest. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 188684102 Merged-In: I13ec2ee8a7968c0a5652aa67ec6291d07a986c80 Change-Id: I531b87c25e937f8c5f7d471cb7878e086e9662b5
2021-05-14Ensure verifier deps in the vdex file are 4-byte aligned. am: 2ef367acf3 am: ↵Nicolas Geoffray
9b733f884a am: f684ebdddc Original change: https://android-review.googlesource.com/c/platform/art/+/1701125 Change-Id: Iedfe0f97c67633f21ab099d11de11a1e1763eaa6
2021-05-14Ensure verifier deps in the vdex file are 4-byte aligned.Nicolas Geoffray
It simplifies the encoding / decoding logic. Test: 663-odd-dex-size Bug: 186405713 Change-Id: I26bcf2b6cfa16548a520a501e6e1b38c238eb1df
2021-05-10Link libvixl statically. am: 053e1383c7 am: f70ea1ccbb am: 9d77b4ee0fVladimir Marko
Original change: https://android-review.googlesource.com/c/platform/art/+/1697446 Change-Id: Ib56a4c26d46db5798a3451e4e9fe3353a60f944e
2021-05-10Link libvixl statically.Vladimir Marko
Instead of including shared library libvixl.so in the ART Module, link libvixl statically to all binaries that use it, namely libart-compiler.so and libart-disassembler.so which shall increase in size with the additional libvixl code. The ART Module size with default libvixl symbol visibility: - before: 88460730B - after: 86973943B (-1.42MiB) With hidden libvixl symbol visibility: - before: 88337851B - after: 84962808B (-3.22MiB) (This is with master-art where we do not have a boot profile and therefore compile more code in boot image.) The change from default to hidden visibility is done in https://android-review.googlesource.com/1697237 . Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: run-gtests.sh Test: testrunner.py --target --optimizing Bug: 186902856 Change-Id: I040b0115b94b8690ee7be53e3ded8610d9f13e99
2021-05-07Use `quick_exit` instead of `_exit` (except for error handling). am: ↵Roland Levillain
a28c827fdb am: 9391da1069 am: 1c6cb7b23a Original change: https://android-review.googlesource.com/c/platform/art/+/1692431 Change-Id: I0f3bde81380ea4eafd11026c19d20cf685ef2306
2021-05-07Use `quick_exit` instead of `_exit` (except for error handling).Roland Levillain
Replace every occurrence of `_exit` (for cases other than pure error handling) with `quick_exit`, in order to allow functions registered with `at_quick_exit` to be called before exiting. In particular, this change will allow LLVM's code coverage profile dumping routine to be called before exiting ART processes. Test: mmma art Test: ART tests Bug: 186576313 Change-Id: Ia9b0dbb471e2a26600c8bd23f7567931d050fc9d
2021-04-30Fix gtests with mini-debug-info enabled by default. am: 889da94a59 am: ↵David Srbecky
5484914da5 am: 750ad41942 Original change: https://android-review.googlesource.com/c/platform/art/+/1690899 Change-Id: Ie61a6d8e0b2065f7f17df2fe9b83e80ee0607c17
2021-04-30Fix gtests with mini-debug-info enabled by default.David Srbecky
Ensure we can generate mini-debug-info if it is enabled by default. The tests don't explicitly generate the info on background thread. Test: test.py -g Change-Id: If3cf9a067ce683f728d553394e1407beeadae670
2021-04-30Add apex versions in oat file headers. am: d3c45c298b am: d4b7f695a2 am: ↵Nicolas Geoffray
d17071c1a0 Original change: https://android-review.googlesource.com/c/platform/art/+/1688225 Change-Id: Idce67c864135155bcf5a675fa3081686a16fa066
2021-04-30Add apex versions in oat file headers.Nicolas Geoffray
Use the versions to know whether we need to recompile. Test: oat_file_assistant_test Bug: 182465342 Change-Id: Ic656ed4465d35d325c1823d531f7c4c5bc74598d
2021-04-28Remove RETURN_VOID_NO_BARRIER byte-code. am: 61c624239c am: c2d57b4712 am: ↵David Srbecky
fbded46027 Original change: https://android-review.googlesource.com/c/platform/art/+/1688586 Change-Id: If1aabb8486a8803a0736b809aba746f9fbd5907d
2021-04-28Remove RETURN_VOID_NO_BARRIER byte-code.David Srbecky
Unused and obsolete quickened byte-code. Bug: 170086509 Test: test.py -b --host --64 Change-Id: I1e917c189da7bf64418412522676dc6b081d5c0b
2021-04-26dex2oat: Expect boot image profiles for boot image. am: a220980389 am: ↵Vladimir Marko
5e48d4f823 am: 880cbc4400 Original change: https://android-review.googlesource.com/c/platform/art/+/1685633 Change-Id: Id59495fa6abbc4e1f9fb74c9bd76278a4a4eacf9
2021-04-26dex2oat: Expect boot image profiles for boot image.Vladimir Marko
The profile loading is currently permissive, so this does not really matter but we intend to make it more strict soon. Also clean up ScratchFile to avoid dex2oat_image_test error logs related to ScratchFile destruction. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 148067697 Change-Id: I34526ddb0389444d54b9754afbedeb671c7b05a8
2021-04-21Add number of methods to OatClass. am: 2cca1e029c am: a6fb99b858 am: 31f93629fdVladimir Marko
Original change: https://android-review.googlesource.com/c/platform/art/+/1683151 Change-Id: I6d73eed6ab50d6608b972653b3a880ce8fc5320b
2021-04-21Add number of methods to OatClass.Vladimir Marko
And use it for checks when reading oat file data. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 148412019 Change-Id: I3a2433f94397107a2ce3c198d22e660871c505a8
2021-04-20Change OatClassType to enum class. am: 3d76ebebfb am: 7e9a580576 am: 0cc2bd9cdfVladimir Marko
Original change: https://android-review.googlesource.com/c/platform/art/+/1679611 Change-Id: I9b60fd3072a22afb17087aac1fb5c514af1dc3ee
2021-04-20Change OatClassType to enum class.Vladimir Marko
Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 148412019 Change-Id: I0709a467c92f38e6886d3936b20c2c7869429956
2021-04-19Reland "Move the type lookup table to vdex." am: 0b943287e7 am: 2dd05e193f ↵Nicolas Geoffray
am: caec4871c9 Original change: https://android-review.googlesource.com/c/platform/art/+/1677234 Change-Id: Ie40a79ac509034a11a7923d04482b4a85bbdc949
2021-04-19Reland "Move the type lookup table to vdex."Nicolas Geoffray
This reverts commit 640c448bad41c00599f8f8fb056eba679edc891e. Reason for revert: CL is not the culprit Change-Id: Ia9a404980601998ade118b0e14008e2bc6317d76
2021-04-16Revert "Move the type lookup table to vdex." am: 640c448bad am: 3e9a647ea5 ↵Nicolas Geoffray
am: 860c07ea84 Original change: https://android-review.googlesource.com/c/platform/art/+/1677231 Change-Id: I43eaccc4f6e1739265039f5b1d1887b2f3c1f7a5
2021-04-16Clean up profile tests. am: f4d05ff134 am: b005b7816c am: 87031e18efVladimir Marko
Original change: https://android-review.googlesource.com/c/platform/art/+/1675580 Change-Id: I4434ff0a6b4c0a2702ba1b974daa6cfb507ab2ec
2021-04-16Revert "Move the type lookup table to vdex."Nicolas Geoffray
This reverts commit c005ada78df5edebac74739b2c344e1a2a3efcba. Bug: 112676029 Reason for revert: Fails on asan Change-Id: Id21b84f1f078d6b1c701559e0cbbd3704d269dfb
2021-04-16Clean up profile tests.Vladimir Marko
Use TestDexFileBuilder and remove FakeDex. Add a helper class for shared code between ProfileCompilationInfoTest and ProfileAssistantTest. Test: m test-art-host-gtest Test: run-gtests.sh Bug: 148067697 Change-Id: I0bf5d3fb7a456dcd717bce694d7f832a654fcccb
2021-04-15Move the type lookup table to vdex. am: c005ada78d am: ebddba5521 am: 9ce03f0c2aNicolas Geoffray
Original change: https://android-review.googlesource.com/c/platform/art/+/1673309 Change-Id: I68efa4e7a1d0a822f4b3ba4de27f117a8ecb63c6
2021-04-15Move the type lookup table to vdex.Nicolas Geoffray
The table format has been stable for many releases now, so "promote" it to .vdex, which remains post-OTA. Test: test.py Bug: 112676029 Change-Id: Ie1bbb24b4ab9c7864ae7e69e97db5ee5d1fc9ea1
2021-04-12Add a --force-allow-oj-inlines dex2oat flag am: 4531afd0d8 am: 8915bb1e74 ↵Alex Light
am: d4e21d1c7f Original change: https://android-review.googlesource.com/c/platform/art/+/1659540 Change-Id: Ia37029a256cb2fc8db6463c55d66c0cab89d3b5b
2021-04-12Remove option CreateTypeLookupTable. am: d187d879b0 am: 434013155e am: ↵Nicolas Geoffray
3ddcecd63b Original change: https://android-review.googlesource.com/c/platform/art/+/1673205 Change-Id: I44981917b87ee5e0688d2189568d9cb6a8d5ada3
2021-04-12Add a --force-allow-oj-inlines dex2oat flagAlex Light
When reproducing compilation failures on the host sometimes the automatic core-oj noinline will prevent the issue from reproducing. Add a new --force-allow-oj-inlines to disable this behavior. Test: ./art/tools/compile-jar.py --profile-file bad_compile.prof --arch arm64 ~/no.nrk.mobil.radio_10922_base_split.apk --compiler-filter=speed-profile --dump-stats -j1 --force-allow-oj-inlines Change-Id: I76204bfb061635819d55c2459cfea4e4cfebce79
2021-04-12Remove option CreateTypeLookupTable.Nicolas Geoffray
We have always created them for a while now. Test: test.py Change-Id: I6c9293d90c4b8449f7bd9b26ff8f4666c8ceca0a
2021-04-08Validate vdex checksums during dex2oat compilation am: 92a7857854 am: ↵Calin Juravle
bb08a3609c am: 4edd8708c1 Original change: https://android-review.googlesource.com/c/platform/art/+/1664621 Change-Id: I4c90293a29f67656deab901d72adeccb9be7cd80
2021-04-08Validate vdex checksums during dex2oat compilationCalin Juravle
If the checksums from the vdex files that comes from the .dm archive does not match the input dex files, the compilation will fail. Test: gtest Bug: 184291791 Change-Id: I10db75b4381946d7f2b695ff317d0b4e897a32b0
2021-04-06Add logs for bad .dm input in dex2oatCalin Juravle
Test: adb logcat -b events Bug: 178055795 Change-Id: Ifeacba4cccf048e437b1906cf1592b8c2608cce4
2021-03-31dex2oat: Do not crash on InitializeClass() exceptions.Vladimir Marko
Previously `ClassLinker::EnsureInitialized()` could have returned with a pending exception even when initializing fields and parents was not allowed and the CompilerDriver did not expect it, leading to a crash. Change the behavior to consistently suppress exceptions when initializing fields and/or parents is not allowed. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 184094466 Change-Id: I6a8af8c1da792c946f8f52ed4513ab1f0ccf2c9f
2021-03-30Abort transaction when Class.forName() fails.Vladimir Marko
And update VmClassLoader.findLoadedClass implementation in UnstartedRuntime which has erroneously diverged since https://android-review.googlesource.com/145075 . Also prevent transactional interpreter from transfering control to a catch handler for aborted transactions. Also clean up Transaction::kAbortExceptionDescriptor naming and some unused parameters. Test: TransactionTest.CatchClassForNameAbortClass Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: Ibfc544283f5434efbaab238d11a6152ed2578050
2021-03-29Remove '&' class loader context.Nicolas Geoffray
This is now an unsupported context. Test: class_loader_context Bug: 132357300 Change-Id: I21bc6e3529944a57379845e90c7f49759db30d40
2021-03-25Revamp vdex format for better extensibility.Nicolas Geoffray
- Remove class loader context and boot classpath checksum sections. Those are not needed now that VerifierDeps don't depend on them. - Remove remaining quickening encoding. - Introduce sections in a vdex file, which can be extended without requiring a version change. Test: test.py Bug: 160294863 Change-Id: I4e3e25f34d242dc4de37f30ba9d78bcffbc1436d
2021-03-25Fix UnstartedRunime leaking local reference.Vladimir Marko
And assert that class initialization in CompilerDriver does not leave any local references alive. Test: m test-art-host-gtest Change-Id: Icd6a141da340d21d0103308a9e056009eb86f485
2021-03-22Explictly pass VerifierDeps when asking for class verification.Nicolas Geoffray
This will simplify creating and populating VerifierDeps at runtime, which is needed for doing and saving background verifcation of secondary dex files. Test: test.py Bug: 158463186 Change-Id: Ic17913ebd173700e866ba9309bf6ae131fcbc423