summaryrefslogtreecommitdiff
path: root/compiler/driver/compiler_driver_test.cc
Commit message (Collapse)AuthorAgeFilesLines
* Move CompilerDriver to dex2oat/.Vladimir Marko2019-03-111-370/+0
| | | | | | | | | | | | | | | | | | Also DexToDexCompiler, QuickCompilerCallbacks and tests. aosp_taimen-userdebug: - before: lib64/libart-compiler.so: 3112344 lib/libart-compiler.so: 2312908 bin/dex2oat: 563176 - after: lib64/libart-compiler.so: 2986720 (-123KiB) lib/libart-compiler.so: 2219852 (-91KiB) bin/dex2oat: 635832 (+71KiB) Test: m test-art-host-gtest Test: testrunner.py --host --optimizing --jit Change-Id: I36e63b83dff1d5c731d05de27d3663cfc81de6ad
* Refactor compiler tests around CompilerDriver.Vladimir Marko2019-03-051-2/+16
| | | | | | | | | Introduce CommonCompilerDriverTest and inherit that in tests that need to use CompilerDriver. This is in preparation for moving the CompilerDriver to dex2oat/. Test: m test-art-host-gtest Change-Id: I46cf0bc1df4327569eef5526eeab0781473173a1
* ART: Move dex structs into own headerAndreas Gampe2019-01-021-1/+1
| | | | | | | | | Separating out the structs from DexFile allows them to be forward- declared, which reduces the need to include the dex_file header. Bug: 119869270 Test: m Change-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4
* Refactor CompilerDriver::CompileAll().Vladimir Marko2018-12-061-10/+8
| | | | | | | | | | | | 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
* Use 'final' and 'override' specifiers directly in ART.Roland Levillain2018-08-281-3/+3
| | | | | | | | | | | | | | | Remove all uses of macros 'FINAL' and 'OVERRIDE' and replace them with 'final' and 'override' specifiers. Remove all definitions of these macros as well, which were located in these files: - libartbase/base/macros.h - test/913-heaps/heaps.cc - test/ti-agent/ti_macros.h ART is now using C++14; the 'final' and 'override' specifiers have been introduced in C++11. Test: mmma art Change-Id: I256c7758155a71a2940ef2574925a44076feeebf
* Move dex_files_for_oat_file_ to CompilerOptions.Vladimir Marko2018-06-251-2/+2
| | | | | | | | | 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
* ObjPtr<>-ify ClassLinker::FindClass(), fix 1 stale reference use.Vladimir Marko2018-05-311-7/+7
| | | | | | | | | | Thread::CreateAnnotatedStackTrace() was using a stale reference `aste_array_class`. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 31113334 Change-Id: I191907c0053456bb57de425aa6ccd9668df818a2
* Add a profiling libraryDavid Sehr2018-04-261-1/+1
| | | | | | | | | Move profile_compilation_info to a separate library. Another step towards building many of our tools without libart[d]. Bug: 78459333 Test: make -j 50 checkbuild Change-Id: Ib281d3d1fde6d06ebb429c5d39d62a7038af0f44
* ART: Remove support for compiled-methods and compiled-classesAndreas Gampe2018-04-131-53/+0
| | | | | | | | | | | | This has been superseded by profile support. This reverts commit 70bef0d8f6aa30b0da5c6ca56e1bc5729f74654b. This reverts commit 4bf3ae9930a155f238dfd471413c866912b2579e. Bug: 76145463 Test: mmma art Test: m test-art-host Change-Id: I5a368cd01812e16869352ec219eae095df4919c4
* Create dex subdirectoryDavid Sehr2018-01-051-2/+2
| | | | | | | | | Move all the DexFile related source to a common subdirectory dex/ of runtime. Bug: 71361973 Test: make -j 50 test-art-host Change-Id: I59e984ed660b93e0776556308be3d653722f5223
* Change ClassStatus to fit into 4 bits.Vladimir Marko2018-01-051-11/+15
| | | | | | | | | | | | | | | | | In preparation for extending the type check bit string from 24 to 28 bits, rewrite ClassStatus to fit into 4 bits. Also perform a proper cleanup of the ClassStatus, i.e. change it to an enum class, remove the "Status" word from enumerator names, replace "Max" with "Last" in line with other enumerations and remove aliases from mirror::Class. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: Pixel 2 XL boots. Test: testrunner.py --target --optimizing Bug: 64692057 Bug: 65318848 Change-Id: Iec1610ba5dac2c527b36c12819f132e1a77f2d45
* ART: Change CanAssumeVerified to GetPreviousClassStateAndreas Gampe2017-09-051-8/+0
| | | | | | | | | | Return any stored class state instead of a bool to allow more recognized states in the future. Bug: 63467744 Bug: 65318848 Test: m test-art-host Change-Id: Id097273a41e09ee77c8d53377ad9beb09104a944
* Revert "Revert "Support class unloading in dex2oat for quicken multidex""Mathieu Chartier2017-08-091-1/+11
| | | | | | | | | Bug: 63467744 Test: test-art-host This reverts commit 6921d90a241f0307ac25120f8f976744d4a57706. Change-Id: If70e31d3a15579dc75fd40bfef186e0124568c87
* Revert "Support class unloading in dex2oat for quicken multidex"Richard Uhler2017-08-091-11/+1
| | | | | | | | This reverts commit 0b1c341d2d89a483142cd14bdeb4650ab00184f1. New test Dex2oatDeterminism.UnloadCompile fails on bots gtest-debug-gc and friends. Change-Id: Ib101fc4390d90f88fe017d8482775d5e975f2ccb
* Support class unloading in dex2oat for quicken multidexMathieu Chartier2017-08-081-1/+11
| | | | | | | | | | | | | | | | | Support class unloading for the quicken compilation filter. This will be enabled in a follow up CL. Added a test that compares with and without unloading. The way that it tests this is by adding an output app image. Having an app image disables the unloading. This test also covers that app images don't change the odex (currently). Added a test for the assumed verified logic. Bug: 63467744 Test: test-art-host Test: test/testrunner/testrunner.py --interpreter --host -j40 Change-Id: I1e8a862c6f089c06c58aa0c846797e4c24bd072c
* Fix issue where classes that fail verification have kStatusNotReady.Jeff Hao2017-08-061-0/+34
| | | | | | | | | | | | | Classes that failed verification at compile time were not getting the status kStatusRetryVerificationAtRuntime. This is because GetCompiledClass would return false for anything that wasn't verified, making it look like the compiler had not touched the class at all, when it should have failed verification. Test: mm test-art-host Bug: 64392002 Change-Id: I9687bcb53c60c1fb0a2df2f642ce9102cb488822
* Use class unloading in dex2oat for verify and extractMathieu Chartier2017-07-281-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Unload the main classloader in between each dex file compilation to reduce RAM. This frees the whole java heap and associated linear allocs. This is only used for quickening since filters that do compilation may require loaded classes in the compiler and oat writer. This reduces dex2oat peak PSS for compiling a large app from 196MB to 135MB. Only works for verify and extract since the current approach is incompatible with oat writer patching. b/63911263 Added a verification override that reads the compiled class status to avoid ever verifying classes that were quickened (since this is not supported and causes failures). There is still some duplicated verification for some class with superclasses in other dex files. Support for quicken will be added in a follow up CL. Bug: 63467744 Test: test-art-host Test: test/testrunner/testrunner.py --interpreter --host -j40 Change-Id: Id0e4f84eb5db91d6143f752b498f4832a5b25b6e
* ART: Include cleanupAndreas Gampe2017-07-241-3/+3
| | | | | | | | | | | | | | | | | | | Let clang-format reorder the header includes. Derived with: * .clang-format: BasedOnStyle: Google IncludeIsMainRegex: '(_test|-inl)?$' * Steps: find . -name '*.cc' -o -name '*.h' | xargs sed -i.bak -e 's/^#include/ #include/' ; git commit -a -m 'ART: Include cleanup' git-clang-format -style=file HEAD^ manual inspection git commit -a --amend Test: mmma art Change-Id: Ia963a8ce3ce5f96b5e78acd587e26908c7a70d02
* Hash-based DexCache methods array.Vladimir Marko2017-07-201-1/+4
| | | | | | | | | | | | | | | | | | Total boot*.art size for aosp_angler-userdebug: - arm64: - before: 11603968 - after: 10129408 (-1.4MiB, -12.7%) - arm: - before: 8626176 - after: 7888896 (-0.7MiB, -8.5%) Test: m test-art-host-gtest Test: testrunner.py --host Test: Nexus 6P boots. Test: testrunner.py --target Test: Build aosp_mips64-eng Bug: 30627598 Change-Id: I7f858605de5f074cbd7f0d9c4c072fbd44aee28f
* Merge "Refactor some profiling info functions"Mathieu Chartier2017-06-151-8/+4
|\
| * Refactor some profiling info functionsMathieu Chartier2017-06-151-8/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | Deleted profile_compilation_info-inl.h Added a new helper class MethodHotness to reduce the number of required getters for reading method hotness, startup, and post startup booleans. Test: test-art-host Bug: 62040831 Change-Id: I799a38e2bea6177ba5816c54524f4ccacedba772
* | Code cleanup around vdex.Nicolas Geoffray2017-06-141-4/+1
|/ | | | | | | | 1) Handle the vdex in dex2oat instead of compiler_driver 2) CHECK instead of DCHECK that we don't dexlayout with vdex. Test: test.py Change-Id: Idf7be59bb25708181e391d17128480659ac697e5
* Move profiles to use bitmaps for startup methodsMathieu Chartier2017-06-021-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | This CL enables changes like compiling only hot methods while still doing layout for hot and startup methods. The bitmaps are also a bit smaller for post-launch use cases. No change in compilation strategy yet. Fixed some bugs in dexlayout test like using a profile with the wrong dex location. This meant the second invocation of dexlayout didn't have any profile data. Added profman support for dump-classes-and-methods, create-profile-from, and related test. Profile sizes (bytes) post launch: Gmail: 7290 -> 6136 Maps: 22896 -> 18984 Music: 8582 -> 7050 YouTube: 16733 -> 14592 Test: test-art-host Bug: 62040831 Change-Id: I9915b81a2ff2c47464acbbdeb55ce30a33d5483f
* ART: Remove CompiledClassAndreas Gampe2017-05-111-5/+5
| | | | | | | | | Replace by direct storage of the class status, and modify accessor to return boolean value of whether the item exits. Reduces RAM requirements and allocations for dex2oat. Test: m test-art-host Change-Id: I6a80ac3d644c7fd0da167996ab991b6d2796a458
* Rename and obsolete compiler filter names.Nicolas Geoffray2017-04-211-1/+1
| | | | | | | | ART side of the change. bug:34715556 test: test-art-host, jdwp, libcore Change-Id: I3a73ae4af2d602431150c8ecfceaddb9ba519cee
* Record class status after verification.Nicolas Geoffray2017-04-191-0/+42
| | | | | | | | | | The class status was recorded when doing vdex verification, or any compilation (quickening or optimizing), but not when only doing verification. bug:37446669 Test:compiler_driver_test Change-Id: Id027c7a9776ed651de570a0f3417c969c8cff9cd
* Clean up after MIPS got read barriers supportGoran Jakovljevic2017-04-061-3/+0
| | | | | | | | | | | This enables checker tests, as well as compiler_driver_test and reflection_test for MIPS32 and MIPS64. Test: mma test-art-host-gtest Test: mma test-art-target-gtest in QEMU (MIPS64) Test: ./testrunner.py --optimizing --target in QEMU (MIPS64) Change-Id: Ic6fe5b17f7f2cd7e38e12fef25afccf9358b80e0
* Revert^2 "Hash-based DexCache field array."Vladimir Marko2017-03-141-2/+3
| | | | | | | | | Test: testrunner.py --host --interpreter Bug: 30627598 This reverts commit 6374c58f2ea403b3a05fb27376110fe4d0fc8e3f. Change-Id: I275508e288a85d3aa08f7405a1a4f362af43b775
* Revert^6 "Hash-based dex cache type array."Vladimir Marko2017-03-141-0/+1
| | | | | | | | | | | | | | | | | Fixed ImageWriter to write class table also if it contains only boot class loader classes. Added a regression test and added extra checks for debug-build to verify that dex cache types from app image are also in the class table. Removed some unnecessary debug output. Test: 158-app-image-class-table Bug: 34839984 Bug: 30627598 Bug: 34659969 This reverts commit 0b66d6174bf1f6023f9d36dda8538490b79c2e9f. Change-Id: I6a747904940c6ebc297f4946feef99dc0adf930c
* Revert^5 "Hash-based dex cache type array."Vladimir Marko2017-03-131-1/+0
| | | | | | | | | | | | | | | | | | | | For app images, ImageWriter does not add boot image classes to the app image class table even though it keeps them in the dex caches. The reason for that is unknown, the code looks OK. Bug: 34839984 Bug: 30627598 Bug: 34659969 Also reverts "Improve debugging output for a crash." This reverts commits bfb80d25eaeb7a604d5dd25a370e3869e96a33ab, 8dd56fcb3196f466ecaffd445397cb11ef85f89f. Test: testrunner.py --host Change-Id: Ic8db128207c07588c7f11563208ae1e85c8b0e84
* Revert "Hash-based DexCache field array."Vladimir Marko2017-03-131-3/+2
| | | | | | | | | | | | Reverting to allow rebasing the revert https://android-review.googlesource.com/351689 without too many conflicts. Bug: 30627598 This reverts commit 1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64. Change-Id: I4af65e9f41c8bad8106c028947eca7c5a9534c53
* Hash-based DexCache field array.Vladimir Marko2017-03-101-2/+3
| | | | | | | | Test: m test-art-host, both AOT and interpreter Test: m test-art-target, both AOT and interpreter Test: m valgrind-test-art-host Bug: 30627598 Change-Id: If992f091aadd862d17b09928d21659573dd285a0
* Extend profman to generate profiles with inline cachesCalin Juravle2017-03-031-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extend profman logic to generate profiles based on a simple textual respresentation. This will help writing tests for profile guided compilation. Before this CL, profman was able to generate profiles based on a list of classes like: java.lang.Comparable java.lang.Math java.lang.Object This CL, enables profman to understand methods and classes alike. The new format is: # Classes Ljava/lang/Comparable; Ljava/lang/Math; # Methods with inline caches LTestInline;->inlinePolymorhic(LSuper;)I+LSubA;,LSubB;,LSubC; LTestInline;->noInlineCache(LSuper;)I "LTestInline;->inlinePolymorhic(LSuper;)I+LSubA;,LSubB;,LSubC;" means that method `int inlineMonomorphicSubA(Super)` from class Main will be added to the profile with the inline cache (SubA,SubB) for its one and only invoke virtual. @Main#noInlineCache:(LSuper;)I+; meaning that method `int noInlineCache' from class Main will be added to the profile with no inline cache. Note that the methods are allowed to have a single invoke virtual in their dex bytecode. That is to keep the parsing the file format simple and easy to use. Also, add a few more tests for profiles and fix an issue caused by writing the dex files in a possibly wrong order. Test: m run-test-host-gtest-profile_assistant_test Bug: 32434870 Change-Id: I6b7340cf613007117d9818be206ccb3a27b815bf
* Revert^4 "Hash-based dex cache type array."Vladimir Marko2017-02-201-0/+1
| | | | | | | | | | | | | | | Added extra output to the abort message to collect more data when we hit the crash. Added extra check when loading an app image to verify that the class table isn't already broken. Test: testrunner.py --host Bug: 34839984 Bug: 30627598 Bug: 34659969 This reverts commit 5812e20ff7cbc8efa0b8d7486ada2f58840a6ad5. Change-Id: I9bb442a184c236dcb75b3e42a095f39cd6bee59d
* Make dex2oat support profiles passed to non profile filtersMathieu Chartier2017-02-171-1/+5
| | | | | | | | | | | | | | | | | | | | | Using a non profile filter with an input profile should compile everything but generate an app image and optimize layout based on the profile. Change UseProfileGuidedCompilation to use the profile arguments. Using profile arguments instead of being based on the compiler filter lets us do full speed compile and layout based on profile. Fix ShouldCompileBasedOnProfile to use the compiler filter instead of the existence of a profile. Fixed gtests. Test: test-art-host Bug: 34927277 Change-Id: I325a10d2072ed427bb32f96e4efa54cf81e94ad3
* Revert^3 "Hash-based dex cache type array."Mathieu Chartier2017-02-131-1/+0
| | | | | | | | | | | | | | Assert failing for "earchbox:search": F zygote64: class_linker.cc:4612] Check failed: handle_scope_iface.Get() != nullptr Test: m test-art-host Bug: 34839984 Bug: 30627598 Bug: 34659969 This reverts commit 85c0f2ac03417f5125bc2ff1dab8109859c67d5c. Change-Id: I39846c20295af5875b0f945be7035c73ded23135
* Revert^2 "Hash-based dex cache type array."Vladimir Marko2017-02-101-0/+1
| | | | | | | | | | | | | | | | | The reason for the revert was fixed by https://android-review.googlesource.com/332666 . We now enable clearing dex cache types in test 155 from that CL. Also avoid an unnecessary store in LookupResolvedTypes() and prevent verifier from messing up the dex cache types. Test: m test-art-host Bug: 34839984 Bug: 30627598 Bug: 34659969 This reverts commit d16363a93053de0f32252c7897d839a46aff14ae. Change-Id: Ie8603cfa772e78e648d005b0b6eae59062ae729d
* Revert "Hash-based dex cache type array."Vladimir Marko2017-02-011-1/+0
| | | | | | | | | | | | | | | | Reverting to work around some programs crashing with Check failed: handle_scope_iface.Get() != nullptr. though the reason for the failure not yet understood. Test: m test-art-host Bug: 34839984 Bug: 30627598 Bug: 34659969 Bug: 30419309 This reverts commit ec7862283dd49f5a58d0ac45960ce27c2f7671b8. Change-Id: Ifded663633082f1e59e5b6ff2e026dc559bd6b82
* Hash-based dex cache type array.Vladimir Marko2017-01-301-0/+1
| | | | | | | | | | | Test: m test-art-host (Interpreter, Optimizing, JIT) Test: m test-art-target on Nexus 6P (Interpreter, Optimizing, JIT) Test: Nexus 6P boots Test: m valgrind-test-art-host Bug: 30627598 Bug: 34659969 Bug: 30419309 Change-Id: Ic00eda89e58088a3573fc9ec0ad04c0e69e161d1
* Rename offline_profiling_info to profile_compilation_infoCalin Juravle2017-01-181-1/+1
| | | | | | | | | | This solves a long standing TODO to align the names of the files and the class. Bug: 32434870 Test: test-art-host Change-Id: I2707da8fef8736a7223189d894fc00ff11bfab12
* ART: Add dex::StringIndexAndreas Gampe2016-11-291-1/+1
| | | | | | | Add abstraction for uint32_t string index. Test: m test-art-host Change-Id: I917c2881702fe3df112c713f06980f2278ced7ed
* ART: Add dex::TypeIndexAndreas Gampe2016-11-211-2/+3
| | | | | | | Add abstraction for uint16_t type index. Test: m test-art-host Change-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a
* Integrate VerifierDeps in compiler driver.Nicolas Geoffray2016-11-031-0/+1
| | | | | | | | | If a VerifierDeps is given, try fast verify. Otherwise create a new VerifierDeps and do the full verification. test: test-art-host, verifier_deps_test bug: 30937355 Change-Id: Ifb030d7b5232c95872164f601057a56ab96038e1
* Move most of class linker to ObjPtrMathieu Chartier2016-10-191-1/+1
| | | | | | | | | | | Return values are still mirror pointer. Fix some failing asserts in compiler driver and tests. Bug: 31113334 Test: test-art-host Change-Id: I4450bf9dfb2541749496b8388616e8aae8488919
* Remove mirror:: and ArtMethod deps in utils.{h,cc}David Sehr2016-10-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | 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
* Move remaining jobject related functions to use ObjPtrMathieu Chartier2016-10-061-4/+4
| | | | | | | | | | Also added ObjPtr::DownCast. Bug: 31113334 Test: test-art-host Change-Id: I59c253211dc435579ffdfd49f856861ab13d262c
* Clean up ScopedThreadStateChange to use ObjPtrMathieu Chartier2016-09-291-2/+2
| | | | | | | | | | | | | | | Also fixed inclusion of -inl.h files in .h files by adding scoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h Changed AddLocalReference / Decode to use ObjPtr. Changed libartbenchmark to be debug to avoid linkage errors. Bug: 31113334 Test: test-art-host Change-Id: I4d2e160483a29d21e1e0e440585ed328b9811483
* Remove more Quick-related macros in tests.Roland Levillain2016-04-071-6/+0
| | | | | | | | | | | Remove these macros, as Quick is gone: - TEST_DISABLED_FOR_HEAP_REFERENCE_POISONING_WITH_QUICK - TEST_DISABLED_FOR_READ_BARRIER_WITH_QUICK Also remove TEST_DISABLED_FOR_NON_PIC_COMPILING_WITH_OPTIMIZING, as it is no longer used anywhere. Change-Id: I78617fc060b7727f9b6fffcb2348d6fca01b4928
* Fix and re-enable compiler_driver_testYi Kong2016-04-061-9/+1
| | | | | | | | | | | This reverts commit 6f58cb85328bed2f3ea246cce4080244544d7c2b. The move to OpenJDK introduces new dependencies to compile these methods, however we don't actually need them to run this test. Remove them here to enable the test again. Bug: 25836016 Change-Id: I75b12c48941fca6646142004accae8364e8c6dbc
* Add and use loaded class profilingMathieu Chartier2016-02-261-2/+2
| | | | | | | | | | | | | | Class profiling is a way to keep track of which classes are resolved. From here the compiler can use this information to generate a smaller app image. TODO: Add tests for profile stuff. Bug: 22858531 (cherry picked from commit 8913fc1a27df8cf3b37fd99e94d87f290591328e) Change-Id: Ifcd09230cbdc266305bc1247e0d31e7920eb353e