| Age | Commit message (Collapse) | Author |
|
After this change, error messages in OatFileAssistant are all propagated
along the way to `GetBestInfo` and logged there.
This change reduces the amount of artd log by 82%.
Before: https://paste.googleplex.com/4527623093616640
After: https://paste.googleplex.com/4842357558870016
As we are adding two more paths to check, for SDM files, reducing the
amount of artd log becomes more critical than before. Otherwise, the log
spamming problem will get even worse.
Bug: 377474232
Bug: 345762752
Test: adb shell pm art dump
Change-Id: I34cdd7228fb063466c86511610687f831ae465ad
|
|
Refactor `move{,-wide,-object}` verification. Make sure we
keep the locking info for no-op `move-object vN, vN`.
Refactor `monitor-enter` and `monitor-exit` verification as
well because the former used the same helper functions as
`move-object`. Bail out on a hard failure - previously,
we'd keep processing previous instructions and use helper
functions that can add an additional hard failure.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Change-Id: I2d76812ecf1b8232b4a5da0426461d6f572da13b
|
|
Soong was accidentally allowing a corner case where modules that
were not supposed to be available to the platform (due to
apex_available being set to an apex and not including
"//apex_available:platform") were being made available to the
platform as long as no apex modules depended on them.
art_test_defaults has apex_available: ["com.android.art.bug"] to work
around an issue with duplicate install rules. Add
"//apex_available:platform" explicitly to some art tests whose install
rules are hidden when the corner case is fixed. These can be removed
when b/395617594 is investigated and fixed.
Bug: 394664568
Bug: 395617594
Test: compare out/soong/installs-${TARGET_PRODUCT}.mk
Change-Id: If0646aa317b1033f5a7c0622fa0fbf89286b4a83
|
|
... `DotToDescriptor()` and `DescriptorToName()` parameter.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Bug: 338123769
Change-Id: I9cda6e70f52ed8779fcd532a4e34515c12c40c78
|
|
This patch removes almost 16 KiB of padding at the start of each
OAT file, by reducing .rodata alignment from kElfSegmentAlignment
(16 KiB) to 4 bytes. It is valid to do because:
* The first loadable segment in the OAT (ELF) file is specified to
start at 0x0 and includes the .rodata and data before it (ELF
header, program headers, etc.):
+--------+---------+--------------------+---------+
| ELF | program | optional | .rodata |
| header | headers | .note.gnu.build-id | |
+--------+---------+--------------------+---------+
^ ^
| |
+-------- first loadable segment in memory -------+
|
+-- page-aligned
This patch does not change the alignment of this first loadable
segment mapped by the linker (both bionic's linker and ART's one),
it only reduces the size of the mapping by reducing the padding
within it.
* Content of .rodata doesn't need to be page-aligned, the maximum
memory alignment that it requires is 4 bytes.
At the moment the OatWriter uses offsets relative to the oat header
(actually the start of the .rodata); so all data *in other sections*
that requires more than 4-byte memory-alignment must account for
the fact that the header is no longer kElfSegmentAlignment aligned
and instead use the offset from the start of the file.
This patch also fixes an issue with the algorithm in
ImmuneSpaces::CreateLargestImmuneRegion, specifically when ART's
ELF loader is used. As this loader only guarantees mmaps begin on a
page-size aligned virtual address (rather than aligning to the largest
segment alignment as done via dlopen implementations), it is possible
that when an image space's end is rounded up to 16K, it may overlap
the next space's begin (see an illustration below), causing a failure.
Therefore, instead round up the end to the next 4K boundary when
calculating the region.
image space interval
/---------------------------+ oat space interval
\ +------+----------------------------/
/ | | \
\---+----------+-----+------+----------------------------/
/ | | | | \
\---+----------+-----+------+----------------------------/
^ ^ ^ ^
| | | +----- image space end (16 KiB aligned)
image end | |
| +-- oatdata (.rodata)
|
oat file (4 KiB aligned)
Actual disk usage reduction from this patch:
* Approx 90% of tested dense .odex files are reduced by 16 KiB
(all reductions are in range 0-16 KiB).
* Approx 75% of tested sparse .odex files are reduced by 4 KiB
(all reductions are in range 0-4 KiB).
Authors: Richard Neill <richard.neill@arm.com>
Konstantin Baladurin <konstantin.baladurin@arm.com>
Test: testrunner.py --optimizing
Bug: 378792349
Change-Id: I874bad5bea28fa1bcf66f331e7d74a506dda72cc
|
|
Test: m test-art-host-test
Test: testrunner.py --host --optimizing --interpreter
Change-Id: I8fd0cfa02ed3242c84143a4a99a76a4fec95a4ee
|
|
It's not just host testing that sends logcat messages to stderr. Simply
remove the condition for the sed command - it just won't have any
effect on device where the messages don't go to stderr in the first
place.
Test: 674-hiddenapi 690-hiddenapi-same-name-methods 691-hiddenapi-proxy
817-hiddenapi 822-hiddenapi-future 999-redefine-hiddenapi
2038-hiddenapi-jvmti-ext 2270-mh-internal-hiddenapi-use
on host and device
Bug: 377676642
Change-Id: I3faf97557dcb3e47bf3e927185cce1c96fe2ac8b
|
|
Necessary to allow executing run tests without a chroot setup, e.g. on
user devices. Also, the documented approach in README.chroot.md is that
the user should set ART_TEST_CHROOT explicitly to enable chroot mode.
Fixes regression from https://r.android.com/2977715.
Test: art/test/testrunner/testrunner.py --target 2279-aconfig-flags
Change-Id: I3deabdf2ef3b807065583fadc4f2c4e847956401
|
|
If enforcement is enabled then log as error instead of warning.
Also add "hiddenapi:" prefix to all log messages to make it easier to
search for them.
Test: Boot and check errors in logcat
Test: 674-hiddenapi 690-hiddenapi-same-name-methods 691-hiddenapi-proxy
817-hiddenapi 822-hiddenapi-future 999-redefine-hiddenapi
2038-hiddenapi-jvmti-ext 2270-mh-internal-hiddenapi-use
on host and target
Bug: 377676642
Change-Id: Ib4f790d7ab4850d398639c64f55be0d14c5c0408
|
|
This complements the treatment of NATIVELOADER_DEFAULT_NAMESPACE_LIBS,
so that ART internal libs can load the libraries listed in that
variable, as well as the other way around.
This makes it possible to load libartagent(d).so without absolute paths
in run tests on target, so use that to re-enable 900-hello-plugin.
Test: art/test/testrunner/testrunner.py --target --64 900
in armv8 target chroot
Test: art/test/testrunner/testrunner.py --host 900
Bug: 186654484
Change-Id: Ic418b26b2b77af8839af7b65ad44ea8b5121169c
|
|
and enable it on target again.
Test: art/test/testrunner/testrunner.py --target --64 656
in armv8 target chroot
Test: art/test/testrunner/testrunner.py --host 656
Bug: 186654484
Change-Id: I4cd3dde548aa30afe46c249bc79e36aa952a4aae
|
|
again.
This changes the test to load the native library by name instead of
through an absolute path, but that shouldn't affect what the test is
intended to do, i.e. test that the class loader object for the boot
class loader gets translated to nullptr internally.
Test: art/test/testrunner/testrunner.py --target --64 150
in armv8 target chroot
Test: art/test/testrunner/testrunner.py --host 150
Bug: 186654484
Change-Id: Ib951c287ba8e7a721b671b0d50aa84da4d89bf90
|
|
target again.
This requires adding an extra link from system to default linker
namespaces for NATIVELOADER_DEFAULT_NAMESPACE_LIBS, since some of the
test cases load a child class with the boot class loader, which in turn
loads libarttest(d)_external.so.
Test: art/test/testrunner/testrunner.py --target --64 674
in armv8 target chroot
Test: art/test/testrunner/testrunner.py --host 674
Bug: 186654484
Change-Id: I19a3332d99a4d8b2c7682e688cf3d965425a2eb0
|
|
No longer test that we actually time out quickly enough if we're running
on an emulator. That test sometimes fails on slow platforms because we
don't succeed in shutting down the process on time..
Bug: 385362249
Test: Check 1336-short-finalizer-timeout with a much too short timeout
Test: Treehugger
Change-Id: I33b7a25be4d8e15ffaace98b08262832a24206e0
|
|
... to `HControlFlowSimplifier` because "control flow" is
the correct technical term.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Change-Id: I2607ac699fa33c3e7ca7f54364e1e8497148412b
|
|
... as long as they have identical inputs at the relevant
indexes.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Change-Id: I40168de61d2dfe1143786a2e4a27549cc54b0451
|
|
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Bug: 358519867
Change-Id: I5b49f27c09582dc42eba8b6650a7032fad0ff14d
|
|
and re-enable 817-hiddenapi.
817-hiddenapi and some other run tests have been disabled on target
since https://r.android.com/1689792. A problem has been that (at least
some of) those tests depended on libarttest(d).so being in
java.library.path, so that the .so could be e.g. found and copied from
there by the test.
That's not possible to get to work with libarttest(d).so, since we have
to "register" it with NATIVELOADER_DEFAULT_NAMESPACE_LIBS before
dalvikvm starts.
Instead introduce a new test library libarttest(d)_external.so that
takes the place libarttest(d) had before https://r.android.com/1689792.
I.e. it gets installed in /data/nativetest(64)/art/<arch>, which is
present on java.library.path. It will be loaded in the test's
classloader namespace rather than com_android_art, so it cannot access
ART internals. However, it can access symbols in libarttest(d).so, so
it's possible to export an (unstable) API there that the "external"
library can call across the linker namespace boundary.
Use this approach to fix 817-hiddenapi, and re-enable it again.
Note: Since libarttest(d)_external doesn't have direct access to ART
internal it ought not need to be split into -d and non-d variants. The
only reason that's still the case is that its variants need to depend
on the corresponding variants of libarttest(d).
Test: art/test/testrunner/testrunner.py --target --64 817
in armv8 target chroot
Test: art/test/testrunner/testrunner.py --host 817
Bug: 186654484
Change-Id: I13c186e8d086d07c2480e96a1c1f85651dac7d84
|
|
... to `HCodeFlowSimplifier` in preparation for adding
more optimizations to this pass.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Change-Id: Icb05c3455d93a7b939f82ced9b08165e533bb21a
|
|
If the invokesuper is from a default method, fail the resolution as we
only expect interfaces in super calls from interface methods.
Test: 736-interface-super-Object
Change-Id: I7bd105cf1e441a9e575250db867678908b147477
|
|
Update expectation to not run on RI and be more robust by throwing an
error if the expected exception doesn't happen.
Test: 735-interface-clone
Change-Id: Ia8594a4cec9744fef2e5eed7f1f4441b18ddb7f7
|
|
Test: test.py
Change-Id: Ib97fca637a8866a41a4389b150c6000d9fb6d99b
|
|
We used to have it as an error, but aosp/3117218 accidentally changed it
to a crash.
Test: 735-interface-clone
Bug: 349569228
Change-Id: I5005ac0a97d32e88ea3f89cdc9176a174a721224
|
|
Test: test.py
Change-Id: I063e951a1660c6fb5b4890eb94751b3d2ef409dc
|
|
Just like we ensure direct and virtual methods don't conflict, check
that static and instance fields also don't conflict.
Test: test.py
Test: 734-duplicate-fields
Change-Id: I3b959bf68a43fda573788ed848976a5fae91f8d1
|
|
That works only on art runtime.
Test: art/test.py -t 2286 --jvm
Change-Id: I4d65b800458c09bc40deae3d3dceb6e888bc5060
|
|
Test: art/test/testrunner/testrunner.py --host 2279-aconfig-flags
Test: art/test/testrunner/testrunner.py --target 2279-aconfig-flags
Test: art/tools/run-gtests.sh \
/apex/com.android.art/bin/art/x86/art_libartbase_tests \
| grep Aconfig
Test: m test-art-host-gtest-art_libartbase_tests | grep Aconfig
Bug: 352723620
Change-Id: I693cbef25a8b62f437e6eef95003944f35354177
|
|
The interpreter handles such invoke-virtual as if they are native
method and executes MethodHandle_invokeExact, which throws UOE.
Bug: 383057088
Test: ./art/test/testrunner/testrunner.py --host --64 -b --optimizing
Test: ./art/test/testrunner/testrunner.py --host --64 -b --interpreter
Change-Id: I4dd4dea46eddd2b26e5866c80548b530a603d9c9
|
|
Adds a test to check that AOT code is restored when available when
method tracing is stopped.
Also updates isAotCompiled to work with more methods.
Bug: 303686344
Test: art/test.py -t 2286
Change-Id: I4b7abdeef4aa2bddb85e9cf86f3d844974b69dba
|
|
Make the archive filename less verbose
Also follow eng-prod convention of including '#' in test name.
Test: locall run (with further local changes)
Change-Id: I815db825f59fa6418f1d4459ab14ee118977544c
|
|
CL aosp/3370562 refactored method resolution but accidentally removed an
ICCE check.
Test: 733-icce
Bug: 381631627
Change-Id: Ic9ad2f13053c0c81844ee09ed12a99a9fe9b8b99
|
|
Remove redundant '$' symbol
Test: test-art-host, test-art-target.
Change-Id: Ic50c07e8c9fad06b57fbac7b74d52bd3a162f4a0
|
|
Test: run locally on ARM qemu
Change-Id: I9ff301199c7753da1fad8624b8a54601df4427c2
|
|
Test: ./art/test.py -r --target 2040
Change-Id: I27da38750182b324cbb50d774e5afd4c6de6b315
|
|
JNI implementation for now.
Bug: 297147201
Test: ./art/test/testrunner/testrunner.py -b --host --64
Change-Id: Ib0d485f4e6f5b5db22398718c71a460de9c3e941
|
|
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Bug: 170086509
Change-Id: I1865f016934158e2691116b59a5b6d462c99eccb
|
|
Bug: 379259800
Test: ./art/test/testrunner/testrunner.py -b --jvm
Test: ./art/test/testrunner/testrunner.py -b --host --64
Change-Id: Ie0c4a60ed1ff3b25c35dc324ae11d24b8fdcec92
|
|
It timed out in
https://ci.chromium.org/ui/p/art/builders/ci/qemu.riscv.64/68/overview
besides the previous debuggable + poison timeout.
Bug: 378656071
Test: Presubmit
Change-Id: I713db317e8ef2ca54e470644ddab071bc4b20e62
|
|
Check uninitialized `this` field access early and make the
check more strict than before.
Ideally, two cases should be rejected now and the run-test
064-field-access is updated with the corresponding tests.
First, we no longer allow `iget` on uninitialized `this`.
Second, we do not allow iput on uninitialized `this` to
specify a field by referencing a subclass even if the
field id actually resolves to the class being verified.
However, the first case is actually something that we see
in some existing apps - they get the zero-initialized field
values from the object before the superclass constructor
call. To avoid breaking these apps, we continue to allow
such access if the class is resolved; when it's unresolved
for AOT, we reject the class and it shall be reverified at
runtime. Note that the RI would reject such access.
Note that doing this check early can also result in
reporting bad uninitialized `this` access instead of
another hard failure when both apply. It also suppresses
soft failures that would have been reported previously.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Change-Id: Ieb41115e6aaf618bc283f3aebf0739b606caa3b3
|
|
Promote the following post-submit tests to pre-submit test groups in
ART's Test Mapping file:
* `art-run-test-2282-checker-always-throws-try-catch`
* `art-run-test-2283-checker-remove-null-check`
Output of `art/test/utils/regen-test-files`:
$ art/test/utils/regen-test-files
Generated Blueprint files for 750 ART run-tests out of 1065 (70%).
Generated TEST_MAPPING entries for 467 ART run-tests out of 1065 (43%):
467 ART run-tests (100%) in `art-mainline-presubmit` test group.
467 ART run-tests (100%) in `mainline-presubmit` test group.
467 ART run-tests (100%) in `presubmit` test group.
0 ART run-tests (0%) in `postsubmit` test group.
26 ART gtests (100%) in `mainline-presubmit` test group.
26 ART gtests (100%) in `presubmit` test group.
0 ART gtests (0%) in `postsubmit` test group.
Note: Tests in `*presubmit` test groups are executed in pre- and
post-submit test runs. Tests in the `postsubmit` test group
are only executed in post-submit test runs.
Test: atest --test-mapping art:presubmit
Bug: 152374989
Change-Id: Id117278ac514e0d72eab4194b53bf4f0ca5459bb
|
|
Bug: 297147201
Test: ./art/test/testrunner/testrunner.py -b --host --64 -t 2277
Change-Id: Ia9ecbe10eefb386074d50c556b496545a60f96f7
|
|
This change enables build-time support for the following test:
* `art-run-test-2282-single-step-before-catch`
Output of `art/test/utils/regen-test-files`:
$ art/test/utils/regen-test-files
Generated Blueprint files for 750 ART run-tests out of 1065 (70%).
Generated TEST_MAPPING entries for 467 ART run-tests out of 1065 (43%):
465 ART run-tests (99%) in `art-mainline-presubmit` test group.
465 ART run-tests (99%) in `mainline-presubmit` test group.
465 ART run-tests (99%) in `presubmit` test group.
2 ART run-tests (0%) in `postsubmit` test group.
26 ART gtests (100%) in `mainline-presubmit` test group.
26 ART gtests (100%) in `presubmit` test group.
0 ART gtests (0%) in `postsubmit` test group.
Note: Tests in `*presubmit` test groups are executed in pre- and
post-submit test runs. Tests in the `postsubmit` test group
are only executed in post-submit test runs.
Test: m art-run-test-2282-single-step-before-catch
Bug: 147814778
Change-Id: Iaa94ed9c763fd273349f9c666ed78fcbd3fb0cca
|
|
Bug: 297147201
Test: ./art/test/testrunner/testrunner.py -b --host --64
Test: ./art/test/testrunner/testrunner.py -b --jvm
Change-Id: I2c07ae919921363e8e419ec7296cd24696e7f3b5
|
|
The test times out
Test: ./art/test.py -r --target --gcstress 710-varhandle-creation
Change-Id: Ica07a16ba0f21e1c0a1964a2f76f49e47e0c8ab8
|
|
Test: Presubmit
Change-Id: I12455c807f9ef4dee41c89d3e8e1e24e0ea5e9d7
|
|
New methods in Integer and Long classes were introduced.
Bug: 378651167
Test: ./art/test/testrunner/testrunner.py -b --host --64
Change-Id: Ie4ecadcfb5eca9164f055b9bacce4b52ddf9b344
|
|
When we update the entrypoint of one JNI method, we update all
registered JNI methods that share the same stub. Therefore, we should
also remove those methods from the zombie list.
Also have `RemoveMethod` remove the method from all zombie lists.
Test: test.py
Bug: 325919750
Change-Id: Ia174ff16909be92ab9b4990e948670e3cf2844b0
|
|
Bug: 378823200
Fixes: 378823200
Test: art/test/testrunner/testrunner.py --host --64 -b --optimizing
with r8 version 8.9.2-dev
Change-Id: Ic70da9f2996c2a2671b2e5781900784c194b9064
|
|
Test: launched custom LUCI build as:
led get-builder art/ci/qemu.riscv.64 \
| led edit-gerrit-cl https://android-review.googlesource.com/c/platform/art/+/3364946 \
| led launch
Change-Id: I517ee0528c385cca8d1e65aee760286477897bd7
|
|
Prefer ordering any startup-specific methods first in the compiled oat
file, ensuring a contiguous region of startup methods. A follow-up
change will embed this region as a hint that we can use to bulk madvise
*only* startup methods during process startup, avoiding unnecessary
paging in of code that is likely unneeded at startup.
Bug: 379179925
Test: m + inspect services.odex method ordering
Test: art/test/testrunner/testrunner.py -b --host -t 661
Test: ART benchmark service
Change-Id: I7a7ff3cb69d4bff21d702c4a17da62c41796bfd6
|