diff options
author | Roland Levillain <rpl@google.com> | 2023-06-08 14:56:25 +0100 |
---|---|---|
committer | Cherrypicker Worker <android-build-cherrypicker-worker@google.com> | 2023-06-19 13:30:56 +0000 |
commit | 87837ed32611853377fa43e229834c647d6557e1 (patch) | |
tree | 9497f5c1122ef358782c9d7721b237097d687281 | |
parent | 1733aa10e29501c32a84d98ea32ddd1642a33025 (diff) | |
download | art-87837ed32611853377fa43e229834c647d6557e1.tar.gz |
Disable some Checker assertions in `1004-checker-volatile-ref-load`.
Temporarily disable some Checker assertions on Baker read barriers in
ART run-test `1004-checker-volatile-ref-load` as they are only valid
when the compiler is emitting Baker read barriers, i.e. when ART is
using the Concurrent Copying (CC) garbage collector.
Since ART's `userfaultfd` Concurrent Mark-Compact (CMC) collector was
enabled in
https://android-review.git.corp.google.com/c/platform/build/+/2607296
(commit 117212e422c98b32305fa934bd0d5250642749a5), those assertions
have started to fail on test configurations using devices that support
`userfaultfd`. Disable them for now, until we have a better way to
support multiple garbage collectors in Checker (see b/283780888).
Test: `atest -a art-run-test-1004-checker-volatile-ref-load` on Pixel 6
Bug: 283392413
(cherry picked from https://android-review.googlesource.com/q/commit:4313c979224cd50c0887a7a51257f0d007916533)
Merged-In: I0cd9cea4e4da4e3a642086c0e3bcc7f00700b199
Change-Id: I0cd9cea4e4da4e3a642086c0e3bcc7f00700b199
-rw-r--r-- | test/1004-checker-volatile-ref-load/src/Main.java | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/test/1004-checker-volatile-ref-load/src/Main.java b/test/1004-checker-volatile-ref-load/src/Main.java index 9542f363a4..6455e3ec3f 100644 --- a/test/1004-checker-volatile-ref-load/src/Main.java +++ b/test/1004-checker-volatile-ref-load/src/Main.java @@ -36,16 +36,23 @@ public class Main { /// CHECK: <<Foo:l\d+>> InstanceFieldGet [{{l\d+}}] field_name:Main.foo field_type:Reference loop:<<Loop:B\d+>> /// CHECK: NullCheck [<<Foo>>] dex_pc:<<PC:\d+>> loop:<<Loop>> /// CHECK-NEXT: InstanceFieldGet [<<Foo>>] dex_pc:<<PC>> field_name:Foo.bar field_type:Reference loop:<<Loop>> - /// CHECK-NEXT: add w<<BaseRegNum:\d+>>, {{w\d+}}, #0x8 (8) - /// CHECK-NEXT: adr lr, #+0x{{c|10}} + /* The following following Checker assertions are only valid when the compiler is emitting Baker + read barriers, i.e. when ART is using the Concurrent Copying (CC) garbage collector. + + TODO(b/283392413, b/283780888): Re-enable the following Checker assertions (by replacing the + double forward slash comments with triple forward slash ones) when b/283780888 is resolved. + + // CHECK-NEXT: add w<<BaseRegNum:\d+>>, {{w\d+}}, #0x8 (8) + // CHECK-NEXT: adr lr, #+0x{{c|10}} // The following instruction (generated by // `art::arm64::CodeGeneratorARM64::EmitBakerReadBarrierCbnz`) checks the // Marking Register (X20) and goes into the Baker read barrier thunk if MR is // not null. The null offset (#+0x0) in the CBNZ instruction is a placeholder // for the offset to the Baker read barrier thunk (which is not yet set when // the CFG output is emitted). - /// CHECK-NEXT: cbnz x20, #+0x0 - /// CHECK-NEXT: ldar {{w\d+}}, [x<<BaseRegNum>>] + // CHECK-NEXT: cbnz x20, #+0x0 + // CHECK-NEXT: ldar {{w\d+}}, [x<<BaseRegNum>>] + */ public void test() { // Continually check that reading field `foo.bar` throws a |