| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The compiler filter / reason reporting was not accurate for a variety
of reasons. (e.g. reporting was only done at startup, it was relying
on imprecise APIs and had errors in the logic).
In order to keep track of the precise optimization status, this CL
introduces the concept of AppInfo, which encapsulates the data about
the application / system server code paths, their optimization status
and possible other metadata (e.g. profiles).
To populate it, we rely on 2 distinct events:
1) The framework calling VMRuntime#registerAppInfo to inform the
runtime about the applications code paths and their types (e.g. primary,
split, secondary).
2) Class loading, when we can determine the actual optimization status
like filters, reasons, and whether or not we can load the odex files.
These events may happen in any order so we could deal with a partial
state at some point in time, but in the majority of cases they always
happen at Class Loading, followed by RegisterAppInfo.
This CL also deletes the OatFileManager#getPrimaryOatFile which was
a misleading API as it didn't work in most cases. It also adds more
tests to the metrics/reporting infra for previous missing or
unimplemented cases.
Test: gtest
Bug: 170149255
Merged-In: If0a7a25d06ff6fb89fe4861139b7dee61c05814d
Change-Id: If0a7a25d06ff6fb89fe4861139b7dee61c05814d
(cherry picked from commit c2753e6beec483b5b14161b6bbc8e0a86aef9397)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
| |
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)
|
| |
|
|
|
|
|
|
|
|
|
| |
oat_file might be null at this point.
Test: m
Bug: 177175508
Bug: 183824895
Change-Id: I945b8a3053ff2ea1967758a621b7e88c3de1f222
Merged-In: I945b8a3053ff2ea1967758a621b7e88c3de1f222
(cherry picked from commit c07e873ddb17620c18420cf2bfcf76b1978dc291)
|
| |
|
|
|
|
|
|
|
| |
It could be that the oat file we're trying to load non-executable is not
there anymore.
Test: test.py
Bug: 177175508
Change-Id: Ic7240d09604d1d967a575c72244f28f36c8ad3b5
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
GetPrimaryOatFile is broken and racy:
- Broken as it returns the first entry of a set, which isn't guaranteed
to be the primary oat file.
- Racy as is returns an .oat file and then drops the oat_file_manager lock,
so the OatFile may be concurrently deleted.
This CL fixes the race by only returning the information needed by the
only user of GetPrimaryOatFile.
Test: test.py
Change-Id: I512cb82a1c8856c06abf9bb243a5eeee33701dd1
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
Multiple threads may try to allocate it.
Also make the ThreadPool lock a bottom lock.
Test: m
Bug: 172811380
Change-Id: I061e20666cb784feb31be94785f2949451db9de9
|
| |
|
|
|
|
|
|
| |
Only allow odex files that don't have AOT or DEX code within.
Test: atest android.appsecurity.cts.UseEmbeddedDexTest
Bug: 179915231
Change-Id: I063c32ac6a9ffb36e908aa9861e275e35d7d23b6
|
| |
|
|
|
|
|
|
|
| |
Re-use the infrastructure for background verification of in-memory dex
files to also trigger for secondary dex files.
Test: 692-vdex-secondary-loader
Bug: 160294863
Change-Id: I754d519b6a903c51e439ccab100d2d8f22f45df3
|
| |
|
|
|
|
|
|
| |
This is now an unsupported context.
Test: class_loader_context
Bug: 132357300
Change-Id: I21bc6e3529944a57379845e90c7f49759db30d40
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
As the NDK guidelines note, the size of an enum is a compiler choice
so an enum of unqualifed width cannot be considered stable ABI.
Bug: 122824298
Test: TH
Change-Id: I63d42fdb5a989aab15ec995529781b1b8c3ddb7a
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
Stripped-apks are no longer supported by the runtime and
the current logic prevents bug fixes and code evolution.
Bug: 111442216
Test: test-art-host
Change-Id: I30d5825e4f6453981ca9165bebafe67557c28b93
|
| |
|
|
|
|
|
| |
Test: m
Bug: 162715919
Bug: 134558686
Change-Id: I293310106b8dcd7bec22d8790fd5f72b315776a8
|
| |
|
|
|
|
|
|
|
|
| |
This reverts commit e886d68b9c40c941d8966b9c90d0e265c75fb19e.
Reason for revert: simulator implemention is not ready yet.
Test: lunch aosp_cf_x86_phone-userdebug && m
Test: art/test.py --run-test --optimizing --host
Change-Id: I03c8c09ea348205b0238d7a26caef3477cd6ae3b
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 3060bb919cd2f37c6a97e87c1581ac5294af72b3.
Reason for revert: relanding original change. The fix is setting
`device_supported: false` for libart(d)-simulator module in the .bp
file (`m checkbuild` attempted to build it for arm32 and failed).
Original commit message:
VIXL simulator for ART (Stage1)
Quick User Guide: test/README.simulator.md
This CL enables running ART run-tests in a simulator on host machine.
Some benefits of using this simulator approach:
- No need to use a target device at all.
Save developers from solving the device troubles: build, flash, usb,
adb, etc.
- Speed up development/debug/test cycle.
- Allows easy debugging/testing new instruction features without real
hardware.
- Allows using a smaller AOSP Android manifest master-art.
The Stage1 CL provides support for running 30% of current run-tests.
The rest unsupported test cases are kept in knownfailures.json.
Future work will be supporting proper stack frame layout between
simulator and quick entrypoints, so that stack walk,
QuickArgumentVisitor, deoptimization, etc can be supported.
This CL adds libart(d)-simulator-container library to the ART APEX. It
has caused the following increase of the APEX size (small, about 0.13%
for release APEX, measured for target aosp_arm64-userdebug):
Before:
88992 com.android.art.debug.apex
51612 com.android.art.release.apex
112352 com.android.art.testing.apex
After:
89124 com.android.art.debug.apex
51680 com.android.art.release.apex
112468 com.android.art.testing.apex
Change-Id: I461c80aa9c4ce0673eef1c0254d2c539f2b6a8d5
Test: art/test.py --run-test --optimizing --simulate-arm64
Test: art/test.py --run-test --optimizing --host
Test: m test-art-host-gtest
|
| |
|
|
|
|
|
|
|
| |
This reverts commit 48ca6a681efe1fa1cf82d8af918bf9bbfd35ae96.
Reason for revert: broken build 6685551 on aosp-master on full-eng
Bug: 161440641
Change-Id: I849fe53f56c4786f0f2a1605cbfd215559f11072
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Quick User Guide: test/README.simulator.md
This CL enables running ART run-tests in a simulator on host machine.
Some benefits of using this simulator approach:
- No need to use a target device at all.
Save developers from solving the device troubles: build, flash, usb,
adb, etc.
- Speed up development/debug/test cycle.
- Allows easy debugging/testing new instruction features without real
hardware.
- Allows using a smaller AOSP Android manifest master-art.
The Stage1 CL provides support for running 30% of current run-tests.
The rest unsupported test cases are kept in knownfailures.json.
Future work will be supporting proper stack frame layout between
simulator and quick entrypoints, so that stack walk,
QuickArgumentVisitor, deoptimization, etc can be supported.
This CL adds libart(d)-simulator-container library to the ART APEX. It
has cause the following increase of the APEX size (small, about 0.13% for
release APEX, measured for target aosp_arm64-userdebug):
Before:
88992 com.android.art.debug.apex
51612 com.android.art.release.apex
112352 com.android.art.testing.apex
After:
89124 com.android.art.debug.apex
51680 com.android.art.release.apex
112468 com.android.art.testing.apex
Test: art/test.py --run-test --optimizing --simulate-arm64
Test: art/test.py --run-test --optimizing --host
Test: m test-art-host-gtest
Change-Id: I078812dde9aaf7128d9f262b2102251927596b7f
|
| |
|
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Do not check the entire class loader hierarchy for duplicate dex files
because some use cases might be valid. The most error prone cases are
actually duplicates within the same class loader.
Test: gtest
Bug: 154032843
Change-Id: I8c5efd4b2053a5b4052de6041d561554dddf4780
Merged-In: I8c5efd4b2053a5b4052de6041d561554dddf4780
(cherry picked from commit 86ac525b1f42876518c9040aeaf1a9710cc4332e)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change creates a new requires-image flag in the OAT header, which
is set when the file was created with an image (app image, etc.). If
this flag is set, we will not load the OAT file as executable if the
image could not be loaded.
Going forward, this allows the compiler to assume there will be an app
image when an app image is generated and in some cases generate better
code.
Note that we still must load the OAT file, because there will not always
be another way to access the underlying DEX files.
Revert submission 1298633-revert-155218105
Reason for revert: Fixing tests and relanding
Reverted Changes:
I701c91d5b:Revert "Disable ART run-test 2231-oat-require-app-...
Ic5cda4c75:Revert "Reject OAT file in speed-profile if app im...
Bug: 38313278
Test: m test-art-host-gtest-oat_file_assistant_test64
Test: atest android.server.wm.MultiDisplaySecurityTests#testDisplayHasAccess_UIDCanPresentOnPrivateDisplay android.classloaders.cts.UsesLibraryHostTest#testUsesLibrary_full
Change-Id: I52cca033fa8e2e6de86514c833798c3d99b99477
|
| |
|
|
|
|
|
|
|
| |
This reverts commit 7c25b09f62eb87b72bd8a98a31ea10fd97050f82.
Reason for revert: b/155218105
Bug: 38313278
Change-Id: Ic5cda4c7546b01aeef73278338fea434ba176e60
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Speed profile should always have an app image available. This change
makes ART refuse to load OAT files compiled with the speed-profile
compiler filter if the app image cannot be loaded. This will enable the
compiler to assume the existence of an app image and generate better
code in some cases.
Bug: 38313278
Test: ./test/run-test --host 2231-oat-require-app-image
Change-Id: I2ee6fa7c7dc1d42d1fe1511fc60a7c0542237bfa
|
| |
|
|
|
|
|
|
|
|
|
| |
Propagate the error to the callers. Also avoid filling in
unused data structures when we want only verified classes.
Test: aosp_taimen-userdebug boots.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Bug: 151220989
Change-Id: I3ad0d725251037006128c1f631e6bd6dcec3a592
|
| |
|
|
|
|
|
|
|
|
|
| |
Creating a class loader with duplicate dex files in its classpath is most
likely an unintended bug. That leads to rejecting any compiled code and
hurts performance by extracting in memory.
Test: run-test gtest
Bug: 149410951
Change-Id: Ieebb69c6bd03acbe95dd8bedb6101d70390b92d8
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Bug: 128688902
Bug: 150032912
Test: boots
This reverts commit e912955b98cdc224f2f13455f592b63e96bf5634.
(cherry-picked from commit 3734c2822fe2dc8eaaedbc311f9828ce443b02e6)
Merged-In: I209489f69e4f2b02e7fa93090539575098a28025
Change-Id: I209489f69e4f2b02e7fa93090539575098a28025
|
| |
|
|
|
|
|
|
|
| |
This reverts commit 9ef308da0ea8d1df2edf65d4957599fafcc56aeb.
Bug: 150032912
Bug: 129454856
Test: boots
Change-Id: I522b1e0e2b9116239ca206aa5c65347976eac7ab
|
| |
|
|
|
|
|
|
|
|
|
|
| |
There is no need to check for collisions or verify the class loader
context if the verification is not enabled for the oat file.
This prevents the collision checks or dex2oat reruns when we only
extracted the dex files from apk and fixes.
Test: test-art-host
Bug: 147208643
Change-Id: I84e77baa89fe36705cc650ff21f95b244e7941d4
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These checks are not valid for --single-image extensions or
for extensions after boot class path components without
corresponding images. Instead of updating these checks,
rely on the checks done by the ImageSpace::LoadBootImage().
Test: aosp_taimen-userdebug boots when built with
`DEXPREOPT_USE_ART_IMAGE=true`. Then
adb root && \
adb shell setprop persist.sys.dalvik.vm.lib.2 libartd.so && \
adb reboot # Starts correctly.
Test: adb root && \
adb shell stop && \
adb shell setprop dalvik.vm.boot-image \
'boot.art:/nonx/boot-framework.art!/system/etc/boot-image.prof' &&
adb shell start # Starts correctly; no tombstones.
Bug: 119800099
Change-Id: Id6615a8ac6b423c5f0784f3c0f621bcc016073b7
|
| |
|
|
|
|
|
|
|
| |
After I8f2a1ab1baa8f09e7a7d4913ff790927eb66cddf there was a stale
comment left around and code left around to extract the runtime
ClassLoader's dex file names.
Test: test/testrunner/testrunner.py -b --host
Change-Id: I8194f1188d23b59c90d0a10fbc14e53225ebce6a
|
| |
|
|
|
|
|
|
|
|
| |
Done so that we will only use JIT + interpreter to get samples for
services.jar.
Bug: 139883463
Test: showmap `pid system_server` and verify
Change-Id: I6f13446948fd92a43a9312988fd6e00ee4a0ed41
|
| |
|
|
|
|
|
|
|
| |
- Fix a stalled ObjPtr reference.
- Fix DCHECKs now invalid with system server also using 'prejit'.
Bug: 119800099
Test: boots
Change-Id: If64e09115192f06763335237a7518df619965a3c
|
| |
|
|
|
|
|
|
|
| |
It's easy to figure out which ABI uses for the issued process.
Bug: none
Test: N/A
Change-Id: Ia3a66e1ab5503fd1061cf51ff560fe5a1d168599
Signed-off-by: randy.jeong <randy.jeong@samsung.com>
|
| |
|
|
|
|
| |
Test: m && boots
Bug: 119800099
Change-Id: Ia02a68bc3f152fe9a733577e66f327264518fe6b
|
| |
|
|
|
|
|
|
|
| |
Some legacy apps depend on InMemoryDexClassLoader not loading classes
immediately. Disable verification result caching for them.
Bug: 2131483
Test: art/test.py -b -r -t 692 -t 693
Change-Id: Ie230b837c2fdd5cda13e06faba501fe07e1f65bc
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This patch creates a new subclass of OatFile - OatFileBackedByVdex -
which initializes OatDexClass instances using the verification info in
a vdex file created by a previous instance of the class loader.
The OatFile is not backed by an actual .oat file.
Bug: 72131483
Test: art/tools/run-libcore-tests.sh
Test: art/test.py -b -r -t 692 -t 693
Change-Id: I3fd055abe17ee9739c07f2e2f4fc2543e4ec8c9e
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When dex bytecode is loaded using InMemoryDexClassLoader, automatically
spawn a background thread which performs bytecode verification on every
class.
This reverts commit b4bb63aa4be80722643611fc931976b3544f14b5. This CL
fixes a previous issue where runtime threads are not allowed to load
classes in debuggable mode.
Bug: 72131483
Change-Id: Icdeb5be2b33ef55675e3a23886e71ce3b4b02f43
Test: art/tools/run-libcore-tests.sh
Test: art/test.py -b -r -t 692
|
| |
|
|
|
|
|
|
|
|
| |
Protect the window between runtime creation and forking.
Bug: 129454856
Test: m test-art-host
Test: Device boots
Test: manual
Change-Id: I6108b4196235cb2a2ede52e9d9e3450afe78f90e
|
| |
|
|
|
|
|
|
|
|
| |
This reverts commit 8b5af2c1fb1f3b54ec4eb8c3188a7f7105466b6d.
Reason for revert: Fix capture of image files.
Bug: 128529256
Change-Id: I55e7ee178695358d5f3e19c0d0641bcaaa3fe355
Test: m test-art-host
|
| |
|
|
|
|
|
|
| |
This reverts commit d592dbe1e2b09079382713220b2ff59f02db1859.
Reason for revert: art buildbots crashing
Change-Id: Ida6bb79cb498e708df5c535edc16e4fe9875442c
|
| |
|
|
|
|
|
|
|
|
|
| |
When dex bytecode is loaded using InMemoryDexClassLoader, automatically
spawn a background thread which performs bytecode verification on every
class.
Bug: 72131483
Test: art/tools/run-libcore-tests.sh
Test: art/test.py -b -r -t 692
Change-Id: Iad54f510de02cd073e68d775d34b7dd5bdef304e
|