summaryrefslogtreecommitdiff
path: root/compiler/driver/compiler_driver_test.cc
AgeCommit message (Collapse)Author
2019-03-11Move CompilerDriver to dex2oat/.Vladimir Marko
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
2019-03-05Refactor compiler tests around CompilerDriver.Vladimir Marko
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
2019-01-02ART: Move dex structs into own headerAndreas Gampe
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
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-08-28Use 'final' and 'override' specifiers directly in ART.Roland Levillain
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
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-05-31ObjPtr<>-ify ClassLinker::FindClass(), fix 1 stale reference use.Vladimir Marko
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
2018-04-26Add a profiling libraryDavid Sehr
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
2018-04-13ART: Remove support for compiled-methods and compiled-classesAndreas Gampe
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
2018-01-05Create dex subdirectoryDavid Sehr
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
2018-01-05Change ClassStatus to fit into 4 bits.Vladimir Marko
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
2017-09-05ART: Change CanAssumeVerified to GetPreviousClassStateAndreas Gampe
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
2017-08-09Revert "Revert "Support class unloading in dex2oat for quicken multidex""Mathieu Chartier
Bug: 63467744 Test: test-art-host This reverts commit 6921d90a241f0307ac25120f8f976744d4a57706. Change-Id: If70e31d3a15579dc75fd40bfef186e0124568c87
2017-08-09Revert "Support class unloading in dex2oat for quicken multidex"Richard Uhler
This reverts commit 0b1c341d2d89a483142cd14bdeb4650ab00184f1. New test Dex2oatDeterminism.UnloadCompile fails on bots gtest-debug-gc and friends. Change-Id: Ib101fc4390d90f88fe017d8482775d5e975f2ccb
2017-08-08Support class unloading in dex2oat for quicken multidexMathieu Chartier
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
2017-08-06Fix issue where classes that fail verification have kStatusNotReady.Jeff Hao
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
2017-07-28Use class unloading in dex2oat for verify and extractMathieu Chartier
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
2017-07-24ART: Include cleanupAndreas Gampe
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
2017-07-20Hash-based DexCache methods array.Vladimir Marko
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
2017-06-15Merge "Refactor some profiling info functions"Mathieu Chartier
2017-06-15Refactor some profiling info functionsMathieu Chartier
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
2017-06-14Code cleanup around vdex.Nicolas Geoffray
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
2017-06-02Move profiles to use bitmaps for startup methodsMathieu Chartier
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
2017-05-11ART: Remove CompiledClassAndreas Gampe
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
2017-04-21Rename and obsolete compiler filter names.Nicolas Geoffray
ART side of the change. bug:34715556 test: test-art-host, jdwp, libcore Change-Id: I3a73ae4af2d602431150c8ecfceaddb9ba519cee
2017-04-19Record class status after verification.Nicolas Geoffray
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
2017-04-06Clean up after MIPS got read barriers supportGoran Jakovljevic
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
2017-03-14Revert^2 "Hash-based DexCache field array."Vladimir Marko
Test: testrunner.py --host --interpreter Bug: 30627598 This reverts commit 6374c58f2ea403b3a05fb27376110fe4d0fc8e3f. Change-Id: I275508e288a85d3aa08f7405a1a4f362af43b775
2017-03-14Revert^6 "Hash-based dex cache type array."Vladimir Marko
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
2017-03-13Revert^5 "Hash-based dex cache type array."Vladimir Marko
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
2017-03-13Revert "Hash-based DexCache field array."Vladimir Marko
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
2017-03-10Hash-based DexCache field array.Vladimir Marko
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
2017-03-03Extend profman to generate profiles with inline cachesCalin Juravle
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
2017-02-20Revert^4 "Hash-based dex cache type array."Vladimir Marko
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
2017-02-17Make dex2oat support profiles passed to non profile filtersMathieu Chartier
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
2017-02-13Revert^3 "Hash-based dex cache type array."Mathieu Chartier
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
2017-02-10Revert^2 "Hash-based dex cache type array."Vladimir Marko
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
2017-02-01Revert "Hash-based dex cache type array."Vladimir Marko
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
2017-01-30Hash-based dex cache type array.Vladimir Marko
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
2017-01-18Rename offline_profiling_info to profile_compilation_infoCalin Juravle
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
2016-11-29ART: Add dex::StringIndexAndreas Gampe
Add abstraction for uint32_t string index. Test: m test-art-host Change-Id: I917c2881702fe3df112c713f06980f2278ced7ed
2016-11-21ART: Add dex::TypeIndexAndreas Gampe
Add abstraction for uint16_t type index. Test: m test-art-host Change-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a
2016-11-03Integrate VerifierDeps in compiler driver.Nicolas Geoffray
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
2016-10-19Move most of class linker to ObjPtrMathieu Chartier
Return values are still mirror pointer. Fix some failing asserts in compiler driver and tests. Bug: 31113334 Test: test-art-host Change-Id: I4450bf9dfb2541749496b8388616e8aae8488919
2016-10-18Remove mirror:: and ArtMethod deps in utils.{h,cc}David Sehr
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
2016-10-06Move remaining jobject related functions to use ObjPtrMathieu Chartier
Also added ObjPtr::DownCast. Bug: 31113334 Test: test-art-host Change-Id: I59c253211dc435579ffdfd49f856861ab13d262c
2016-09-29Clean up ScopedThreadStateChange to use ObjPtrMathieu Chartier
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
2016-04-07Remove more Quick-related macros in tests.Roland Levillain
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
2016-04-06Fix and re-enable compiler_driver_testYi Kong
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
2016-02-26Add and use loaded class profilingMathieu Chartier
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