summaryrefslogtreecommitdiff
path: root/runtime/oat_file_assistant.h
Commit message (Collapse)AuthorAgeFilesLines
* odrefresh: enable loading of system_server image filesOrion Hodson2021-06-141-6/+7
| | | | | | | | | | | | | | | | | | | | | | | Fix check in ValidateBootImageChecksum() to account for image files with multiple components which exists for boot-framework when compiling on device. Update logic for only_load_system_executable to be only_load_trusted_executable and treat /system and the ART APEX data directory as trusted. Add test to check .art,.odex,.vdex files derived from the system_server classpath are mapped when the ART module updates. Add test to check .art,.oat,.vdex files for the boot class path extensions are present in the zygote processes. (cherry picked from commit 094b1cfc9fa9e1c02238a2352c190be1746f5622) Fix: 180949581 Test: atest com.android.tests.odsign.OnDeviceSigningHostTest#verifyGeneratedArtifactsLoaded Merged-In: I3114fc6393402d8da2eb16ba756ab5fab713dc20 Change-Id: I493b2eaa99d27a865ced77745debdeaff16b7d6a
* Revert "Revert "Integrate ClassLoaderContext check in ↵Nicolas Geoffray2021-04-191-6/+14
| | | | | | | | | | | | OatFileAssistant::GetBestOatFile."" This reverts commit 656fdcd7f2aa9920ecd464dbb59d284e17969baa. Bug: 176960283 Reason for revert: Racy code fixed in https://android-review.googlesource.com/c/platform/art/+/1678727 Change-Id: I7561aa8fad060bd076006dd4b1fbffc076834635
* Revert "Integrate ClassLoaderContext check in OatFileAssistant::GetBestOatFile."David Srbecky2021-04-171-14/+6
| | | | | | | | | | This reverts commit c8fe6517faf91b45683cddff3c15e08e489e12e9. Reason for revert: Breaks 1002-notify-startup (flaky) Test: "art/test.py -r --host -t 1002" in a loop Bug: 176960283 Change-Id: I4f5467efa5a1e09452b28b86b183791e4105b19e
* Integrate ClassLoaderContext check in OatFileAssistant::GetBestOatFile.Nicolas Geoffray2021-04-151-6/+14
| | | | | | | | | | | | This reduces some code duplication between OatFileManager::OpenDexFilesFromOat and GetDexoptNeeded. It also gives the chance for OatFileAssistant and GetDexoptNeeded to find the real best oat file. Test: test.py Bug: 176960283 Change-Id: Id366aef7a9e91833d8edaea965abda4cfdcd8455
* Support loading vdex files without odex.Nicolas Geoffray2021-02-261-0/+10
| | | | | | | | | GetDexoptNeeded with 'verify' as filter will return false when a vdex is available. Test: 628-vdex, 820-vdex-multidex, test.py Bug: 176960283 Change-Id: I3ac2f747d1e7f5331a49a22c94983959e3b60122
* Use the checksum in the dex header for anynomous vdex files.Nicolas Geoffray2021-02-181-3/+1
| | | | | | | | | We were breaking (non-fatal) assumptions that location checksums are unique per dex file. Test: test.py Test: 692-vdex-inmem-loader Change-Id: I3c2cf186bb244a7e89b9dd0ec9e68cadc4696d6e
* [metrics] Report some ART metadataEric Holk2021-02-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds reporting for some metadata associated with ART metrics, including timestamp relative to ART startup, the session id, and the process's user id. It additionally outputs placeholders for the compilation reason and compiler filter, but these need some additional plumbing from the Runtime and OatFileManager to fill in, so those will come in a followup CL. This CL also includes a fair amount of refactoring around metrics reporting and handling the session data. Example output: *** ART internal metrics *** Metadata: timestamp_since_start_ms: 768 session_id: 5026277321588503825 uid: 123456 compilation_reason: Unknown compiler_filter: (unspecified) Metrics: ClassVerificationTotalTime: count = 4167 JitMethodCompileTime: range = 0...1000000, buckets: 7,0,0,0,0,0 *** Done dumping ART internal metrics *** Test: ./test/run-test --host --jit 2232-write-metrics-to-log Change-Id: Ic74b503b135d71099d9e26bf660b60e4cc3a46bc
* Improve trace logging when loading odex filesCalin Juravle2021-02-021-0/+9
| | | | | | | | | Add extra trace categories with information on the status of odex files and the outcome of the loading process. Test: gtests Bug: 178410926 Change-Id: I02ef78f34ba726f40c8a988db8dc995f4c01c55e
* Remove unused class member `art::OatFileAssistant::flock_`.Roland Levillain2020-07-281-7/+0
| | | | | | | | | | | | | | | | | | This was spotted while updating language to comply with Android's inclusive language guidance, which affected the documentation of this class member. See https://source.android.com/setup/contribute/respectful-code for reference. Also remove the explicit definition of `art::OatFileAssistant::~OatFileAssistant`, which is no longer needed. #inclusivefixit Test: Build ART and run ART tests Bug: 161336379 Bug: 161896447 Change-Id: I30fed43be7b2bf78af5f2cca7e1e54ec0df159fb
* Rewrite OatFileManager::OpenDexFilesFromOat.Nicolas Geoffray2020-07-021-5/+2
| | | | | | | | | | - Remove obsolete option -Xno-dex-file-fallback - Only load an oat file when class loader context matches. - Remove obsolete duplicate class check code. Bug: 132357300 Bug: 156250899 Change-Id: I78e645806e0de2f35ce2614285f1a7cbc705484c
* Revert "Revert "Make class loader context fail for unknown class loaders""Calin Juravle2020-02-151-6/+6
| | | | | | | | | | | | | | | | | | This reverts commit e9818ddd70565d52cc1cc93d6991d7e7ec2bc275. Make class loader context fail for unknown class loaders Update OatFileAssistant to fail the class loader check when getting an unknown (null) class loader. The code is only use in GetDexoptNeeded paths and does not affect the runtime behaviour. This will enable dexoptanalyzer to provide the right answer for dex files whose class loader changes often. Test: test-art-host Bug: 147208643 Change-Id: I2f8229fc25c018436c17439bdc9ac0899af25758
* Revert "Make class loader context fail for unknown class loaders"Stefania Halac2020-02-141-6/+6
| | | | | | | | This reverts commit 2d3de3a40015af07f7645a298f77b398af0c6c2c. Reason for revert: 8s regression in boot time b/149517940 Change-Id: I81365d1bd63c691d715b8f970dac9da64ab419ff
* Make class loader context fail for unknown class loadersCalin Juravle2020-02-121-6/+6
| | | | | | | | | | | | | Update OatFileAssistant to fail the class loader check when getting an unknown (null) class loader. The code is only use in GetDexoptNeeded paths and does not affect the runtime behaviour. This will enable dexoptanalyzer to provide the right answer for dex files whose class loader changes often. Test: test-art-host Bug: 147208643 Change-Id: I869109e669e68afe094e7703ed574575b98d7cc6
* Oat file checksums for boot image extensions.Vladimir Marko2019-10-301-1/+1
| | | | | | | | | | | | | | | | | Modify the oat checksums check for boot image extensions. There may be more extensions loaded at runtime than when the oat file was compiled, so we need to check the checksum type from the checksums string to determine whether to use an image checksum or dex file checksum. Different checksums can be valid for the same boot class path. The creation of boot image extensions and other aspects of loading them shall be implemented in separate CLs. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: aosp_taimen-userdebug boots. Change-Id: I43d1f9464678784e902ad72f4a89cf38b4786122
* Create vdex file for dex loaded with InMemoryDexClassLoaderDavid Brazdil2019-04-021-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | Previous CL introduced a background verification thread for dex bytecode loaded with InMemoryDexClassLoader. Extend the logic to collect the results of class verification into an instance of VerifierDeps and dump it into a vdex file in the app's data folder. The background thread does not collect full VerifierDeps (e.g. assignability dependencies, etc), just a bit vector of whether a class was successfully verified or not. The vdex format is extended to include boot classpath checksums and the class loader context it was created for. These are optional and currently left empty for regular vdex files. The generated vdex files are treated as a cache with a limited capacity, currently capped at 8 files. The least recently used file (in terms of atime reported by stat()) is unlinked if the cache is full and a new vdex is about to be generated. Bug: 72131483 Test: art/tools/run-libcore-tests.sh Test: art/test.py -b -r -t 692 -t 693 Change-Id: I26080d894d34d8f35f00c7925db569f22f008d2c
* Open only necessary files for BCP checksums test.Vladimir Marko2019-03-251-21/+4
| | | | | | | | Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: aosp_taimen-userdebug boots. Bug: 128479972 Change-Id: I13040acb5603d9207c2aaaa51ffd2fc7d3de1d82
* Support FDs for class loader context dex filesDavid Brazdil2019-03-221-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | When compiling secondary dex files, dex2oat/dexoptanalyzer must open all dex files in the given class loader context. However, these tools do not have the SELinux permission to open app data files and instead rely on installd to open them and pass file descriptors via command line arguments. This patch extends ClassLoaderContext::OpenDexFiles to support opening dex files from a provided list of FDs, assuming the order corresponds to the flattened class loader context. FDs can be passed to dex2oat/ dexoptanalyzer using a new '--class-loader-context-fds=' command line argument. The format is a colon-separated list of integers. dexoptanalyzer is also extended with a separate mode in which dexopt-needed analysis is not performed, only the class loader context is flattened and list of its dex files is printed to standard output as a colon-separated list of paths. This mode is enabled with '--flatten-class-loader-context' and is used by installd to obtain a list of files it should open for dex2oat/dexoptanalyzer. Bug: 126674985 Test: atest installd_dexopt_test Change-Id: I46a671c90d14ad8615508c106a88ac1ee8a4ef28
* Revert^2 "Allow boot image for a part of the boot classpath."Vladimir Marko2018-12-141-1/+3
| | | | | | | | | | | | This reverts commit fb83d76a8b186df05f874216b535f5ad57e7bd02. Fixed host run-test dependencies, cleaned up target run-test and gtest dependencies. Test: rm -f out/host/linux-x86/framework/conscrypt-hostdex.jar testrunner.py -b --host --optimizing -t 660-clinit Bug: 119868597 Change-Id: Ia0a5aba0223ae6616bf3e109daf0af7b8355d048
* Revert "Allow boot image for a part of the boot classpath."Andreas Gampe2018-12-131-3/+1
| | | | | | | | This reverts commit 4433c4351aab98005e12a6b53905678758b74665. Reason for revert: May be breaking tests. Change-Id: I3b690dbb06278dc1adce5a389fff938a692bdebd
* Allow boot image for a part of the boot classpath.Vladimir Marko2018-12-121-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | Instead of recording a single uint32_t boot image checksum in the oat header, store a string representing composite boot class path checksums in the key-value store. When checking the boot class path while loading the boot image, allow the boot class path to contain more components. The runtime shall then load the additional dex files from these components. Test: Exclude conscrypt from the the core image modules. 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 Test: run-libcore-tests.sh --mode=host --variant=X64 Test: run-libcore-tests.sh --mode=device --variant=X64 Test: run-jdwp-tests.sh --mode=host --variant=X64 Test: run-jdwp-tests.sh --mode=device --variant=X64 Bug: 119868597 Change-Id: Ia872fdedea0570ace2c8e597ddb3c6f63a43e62a
* ART: Add boot/app image checksums.Vladimir Marko2018-11-211-2/+1
| | | | | | | | | | | | | | | | | | | And check app oat files against the boot image checksum instead of checking the oat checksum. The oat checksums are included in image checksum calculations and the primary image checksum calculation includes the checksums of the secondary images. Also remove the obsolete "patch delta" to keep the size of the ImageHeader 8-byte aligned, remove the key-value store from secondary oat files and move the oat checksum update code from oat.cc to the oat_writer.cc. Test: m test-art-host-gtest Test: testrunner.py --host Test: Pixel 2 XL boots. Test: m test-art-target-gtest Change-Id: If74f5f18479c44ede0503bf1911ddb9ff8f3c4f8
* Remove oat_data_begin checks from OatFile.Vladimir Marko2018-10-171-1/+0
| | | | | | | | | | | | | | | Make it a CHECK() directly in the ImageSpace instead. This check was a rather weird way to prevent the use of dlopen() for boot image on host because it would load the oat file at the wrong address. This is now done by refusing to use dlopen() on host when we have a memory `reservation`. Also clean up affected files for bugprone-argument-comment. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Bug: 77856493 Change-Id: I6f0f9d5a0542574017d98acc2f4f30a585b483f4
* Remove PIC option from oat files.Vladimir Marko2018-09-041-12/+0
| | | | | | | | | | | | | | | dex2oat has been producing only PIC code for some time, so there's no need to record it in the oat file anymore. Also get rid of the now unnecessary relocation logic that was using the flag. 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 Bug: 77856493 Change-Id: I070071ca5a808371f67883f4ae93d633a76231d0
* Revert "Revert "Remove OatFileAssistant::MakeUpToDate and friends.""Nicolas Geoffray2018-08-301-83/+0
| | | | | | | | | | This reverts commit baf3761013a30b8c5dc1d6179cddaeee0a764311. Also remove the now deprecated --{no-}dex2oat option. Change-Id: I502c7011877f43f315abffa9b7d482ef13857125 bug: 111174995 bug: 111342996
* Revert "Remove OatFileAssistant::MakeUpToDate and friends."Mathieu Chartier2018-08-291-0/+83
| | | | | | | | | | | | This reverts commit d6698e34246ea5d99167538b042a70ef203838e6. Reason for revert: 116-nodex2oat failing on no-prebuild Test: test/run-test --always-clean --dex2oat-jobs 4 --host --no-prebuild --compact-dex-level fast --interpreter --no-relocate --runtime-option -Xcheck:jni --pic-test --64 116-nodex2oat bug: 111174995 bug: 111342996 Change-Id: I05da1774e9274da35993ab301d1632022655583f
* Remove OatFileAssistant::MakeUpToDate and friends.Nicolas Geoffray2018-08-281-83/+0
| | | | | | | | | Remove dex2oat invocations for non boot-image compilation for ART. bug: 111174995 bug: 111342996 Test: test.py Change-Id: If7f92537898e326bfd9dfbd969018f4c08da98b7
* Pass the fd to OatFile::Setup to avoid selinux errors.Nicolas Geoffray2018-04-241-1/+6
| | | | | | bug: 77853712 Test: test.py Change-Id: I069cda5296b561284d71b067924e1bc4a8562710
* Move most of runtime/base to libartbase/baseDavid Sehr2018-03-051-1/+1
| | | | | | | | | | | | | | 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
* Revert "Revert "Full-stack integrity: check vdex contents.""Nicolas Geoffray2018-02-281-0/+3
| | | | | | | | | | bug: 30972906 Initial revert due to 'check' file of the test needing updating for target tests. This reverts commit a19b7649faf8780737be7ce3ec48a12d81c6d69f. Change-Id: I455780bd88cd89ff80c9084d399e2beeb819b95f
* Revert "Full-stack integrity: check vdex contents."Nicolas Geoffray2018-02-271-3/+0
| | | | | | | | | | bug: 30972906 Test fails on device. This reverts commit d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb. Change-Id: I53902b0d6d4dbe8237f61bf01542acf538229c71
* Full-stack integrity: check vdex contents.Nicolas Geoffray2018-02-271-0/+3
| | | | | | | | | | | | | | | For priv-apps, if a vdex on /data has dex code, it must be because the APK has compressed dex code. Fall back to APK if not. For test convenience, update --copy-dex-files to also take a "always" variant. bug: 30972906 Test: 677-fsi Change-Id: I49f0eab46650145316a86de2971a3b9c140bcff7
* Expose the optimization status of a dex fileCalin Juravle2018-02-131-0/+14
| | | | | | | | | | | | | | | | Add a method which exposes the optimization status of a dex file based on its expected runtime behaviour. The method returns the status in an array [compilation filter, compilation reason]. The method will try to mimic the runtime effect of loading the dex file. For example, if there is no usable oat file, the compiler filter will be set to "run-from-apk". This will enable more accurate performance monitoring of apks. Test: oat_file_assistant_test Bug: 73102540 Change-Id: Ida9abef502dcb3fd07e1b0988771fb60e9b2a423
* Load /data oat/odex files non-executable when only_use_system_oat_files is set.Nicolas Geoffray2017-12-181-1/+9
| | | | | | | | | | | | | | | | | | | | Make it still ok to use the vdex and the class status in the oat file. This means: - If dex code is uncompressed in APK we'll use that - If dex code is compressed in APK, we'll use the dex code in the vdex. This is a temporary solution in order to almost mimic performance-wise what full stack integrity wants to achieve (priv-apps running from verified, uncompressed dex code in APK). This is to assess the impact of full stack integrity on privileged apps. This CL doesn't ensure any integrity, and doesn't check whether the vdex has been "tainted". bug: 30972906 Change-Id: If0a6ab26dd6211290db53b7f02d88d45aff68c0c
* Add zip-fd support in dexoptanalyzerShubham Ajmera2017-11-021-3/+21
| | | | | | | Test: installd flow(manual), oat_file_assistant_test (cherry-picked from commit 89455b30a30de68d389cef68748a01e13ea1356) Bug: 67111829 Change-Id: Icf24c671ee060c75ba53932a7ccbe422e0ceb2e0
* ART: Make InstructionSet an enum class and add kLast.Vladimir Marko2017-11-021-1/+1
| | | | | | | | | | | | | | Adding InstructionSet::kLast shall make it easier to encode the InstructionSet in fewer bits using BitField<>. However, introducing `kLast` into the `art` namespace is not a good idea, so we change the InstructionSet to an enum class. This also uncovered a case of InstructionSet::kNone being erroneously used instead of vixl32::Condition::None(), so it's good to remove `kNone` from the `art` namespace. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Change-Id: I6fa6168dfba4ed6da86d021a69c80224f09997a6
* Provide an option to pass odex and vdex fds in dexoptanalyzerShubham Ajmera2017-10-111-2/+7
| | | | | | Test: test-art-host-gtest-oat_file_assistant Bug: 67111829 Change-Id: I10b23e665987d4a4a7d0eab67f11bda3d5809554
* Add check that classpath is up to date to getDexOptNeededCalin Juravle2017-09-141-4/+9
| | | | | | | | | | | | | | | Extend getDexOptNeeded to factor into the decision the expected class loader context. If the context does not match, oat file assistant and dexoptanalyzer will advise kDex2OatFromScratch. Note that this does not currently extend the java side DexFile.getDexOptNeeded. The calls coming from the java side will continue to ignore the classpath checks by passing null as the class loader context. Bug: 62269291 Test: m test-art-host Change-Id: Ia01728c06810e418bbcbfe2a774d1f904d2525ba
* Pass the class loader context to dex2oat when optimizing at runtimeCalin Juravle2017-08-021-2/+9
| | | | | | | | | | | | | Until now we always passed the special shared library symbol "&" when we called dex2oat at runtime without an explicit class path. This CL changes that and passes the class loader context inferred from the runtime class loaders to dex2oat. If any of the runtime class loaders is not supported we continue to pass the special library symbol. Bug: 38138251 Test: m test-art-host Change-Id: Ica43ee8a3f36dab2d9ed0e634a9f6341379c8e1c
* Allow DexFile#getDexOptNeeded to check case when downgrading is requiredShubham Ajmera2017-07-191-6/+22
| | | | | | | | | | | | The change in the API will allow comparison of compiler filter in case when downgrade is required. Previously, it used to only consider cases of compiler filter upgrades. Test: make & boot Bug: 36598475 (cherry-picked from commit cf3d122a9234414b7cd2aab340d1450f3e9da213) Change-Id: Ice292ef4f16c373297821c40e39987f3de914c67
* Add support for processing class loader contextsCalin Juravle2017-07-101-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Initial support for recognizing the class loader contexts. In order to correctly compile dex files which at runtime are loaded with a non-trivial class loader chain we need to make dex2oat aware of the precise runtime context. This CL adds the infrastructure to process arbitrary and arbitrary chain of class loaders. ClassLoaderContext is able to parse a class loader spec from a string and create the runtime structure based on it. The integration with dex2oat and oat file assistant will follow up. The string specification looks like "PCL[lib1.dex:lib2.dex];DLC[lib3.dex]" It describes how the class loader chain should be build in order to ensure classes are resolved during dex2aot as they would be resolved at runtime. This spec will be encoded in the oat file. If at runtime the dex file will be loaded in a different context, the oat file will be rejected. The chain is interpreted in the natural 'parent order', meaning that class loader 'i+1' will be the parent of class loader 'i'. The compilation sources will be added to the classpath of the last class loader. This allows the compiled dex files to be loaded at runtime in a class loader that contains other dex files as well (e.g. shared libraries). Note that we accept chains for which the source dex files specified with --dex-file are found in the classpath. In this case the source dex files will be removed from the any class loader's classpath possibly resulting in empty class loaders. * This is the first CL, which adds the infrastructure for processing a class loader context. Currently it CHECKS that only a single PathClassLoader is created. Test: m test-art-host Bug: 38138251 Change-Id: I312aa12b5732288f3c1df4746b5775a32e0bfb04
* Revert "Revert "Use OatFileAssistant default filter instead of the dex2oat one""Calin Juravle2017-06-081-2/+4
| | | | | | | | | | | | | | | Disable checker when testing no-prebuilds. By default, the compiler will only quicken (in no prebuild mode) and will not generate a cfg file. The checker test are already covered by other modes like: art-preopt (pic) or art-optimizing (npic). Test: testrunner.py --host --no-prebuild This reverts commit df663fb4f871ae2e49aad7b58e31952ff647b061. Bug: 38442248 Change-Id: Ifc43715d610787a33a97f13620a80ba3c9f217db
* Revert "Use OatFileAssistant default filter instead of the dex2oat one"Vladimir Marko2017-06-071-4/+2
| | | | | | | | | | | The change broke --no-prebuild tests. Test: testrunner.py --host --no-prebuild Bug: 38442248 This reverts commit f62422ed7a0a0e0ec70c520192efb79e8360340b. Change-Id: I820226ca448375e36059e6f8f5540ba5d831261f
* Use OatFileAssistant default filter instead of the dex2oat oneCalin Juravle2017-06-071-2/+4
| | | | | | | | | Ensure that when OatFileAssistant needs to generate oat files it uses its default filter (quicken) instead of the one from dex2oat (speed). Bug: 38442248 Test: m test-art-host Change-Id: I6071d3b76063ad719e3fe372b4dc9f5a4881d3a8
* Revert "Revert "Ensure dex file are extracted and verified at load time""Calin Juravle2017-05-041-17/+20
| | | | | | | | | | | | | | | | The issue was caused by running device-gtests as root (which will always have full write access everywhere). For now, disable the tests that rely on file permissions when running as root. Test: m test-art-target-gtest-oat_file_assistant_test Bug: 36605597 Bug: 36824842 This reverts commit 9bfc6bb1f44797aec19a151e47c0902ef2516095. Change-Id: I60e8c3d602ca40b1f1e12e8808055effcbb8dcc6
* Revert "Ensure dex file are extracted and verified at load time"Calin Juravle2017-05-041-20/+17
| | | | | | | | The art build bot fails for the oat location tests. I suspect that ScopedNonWritable is not working properly on the bot. This reverts commit d2510c92e7c1f571ab012fcb82e77d7e1806ae3b. Change-Id: Ica70862fd608ebdeb3c710f786ae21b99b69bc20
* Ensure dex file are extracted and verified at load timeCalin Juravle2017-05-031-17/+20
| | | | | | | | | | | | | | | | | | | | | | This change removes the ability to specify an explicit OAT location and ensures that the best oat file (either the oat or the odex) is compiled according to its special filter (kDefaultCompilerFilterForDexLoading). The oat files location can therefore be: - in dalvik-cache: referred as the OAT location. - in dex_parent_dir/oat/ISA/: referred as the ODEX location. The "best oat file" for a dex location is changed to prefer the ODEX location whenever the location is writable (see OatFileAssistant::GetBestInfo()). MakeUpTodate will now attempt to generate the "best oat file" instead of always defaulting to the oat location. Test: m test-art-host-getest-oat_file_assistant_test Bug: 36605597 Bug: 36824842 Change-Id: Ic54b3b94be06c8c47f211ce3d738b0db0a9c7bb3
* ART: Clean up field initializationAndreas Gampe2017-03-271-1/+1
| | | | | | | | Add explicit field initialization to default value where necessary. Also clean up interpreter intrinsics header. Test: m Change-Id: I7a850ac30dcccfb523a5569fb8400b9ac892c8e5
* Make image oat checksum depend on secondary images.Richard Uhler2017-03-131-2/+0
| | | | | | | | | | | | | | | | Rather than explicitly having to load and combine the checksums from secondary images in the case of multi-image, have the image oat checksum for the primary image depend on the contents of all the images. Bug: 35659889 Bug: 34385298 Bug: 35992406 Test: test-art-host Test: Manually add field to ZygoteInit, update boot image, verify image is properly relocated and used on device. Change-Id: I38bd957d165682edabd0fd1874e8ef7acf923deb
* Clean up OatFileAssistant getting of image info.Richard Uhler2017-03-021-5/+4
| | | | | | | | | | * ImageInfo.oat_checksum is no longer unused. * Don't abort if we can't read secondary isa images. Test: m art-test-host Bug: 34385298 Bug: 34800919 Change-Id: I4d1ad4e2435cc62d38cd7143bc71313e319e952d
* Improve checking of multidex dex checksums.Richard Uhler2017-02-141-12/+12
| | | | | | | | | | | | | | | * Fall back to odex file for all multidex entries if the apk is stripped, not just for the main multidex entry. * Verify the number of multidex entries has not changed. * Improve performance by getting all checksums from the apk in one go and cache the results instead of repeatedly opening the apk. * Stop referring to non-main multidex entries as "secondary" dex files. Bug: 34604632 Test: added tests to dex_file_test and oat_file_assistant_test Test: m test-art-host Change-Id: I58b17ecfbc9165a5bfeffd5281ee21d108f64479