diff options
| author | 2017-01-13 11:47:39 +0000 | |
|---|---|---|
| committer | 2017-02-23 13:50:11 +0000 | |
| commit | 1372c9f40df1e47bf775f1466bbb96f472b6b9ed (patch) | |
| tree | d00923d1045ab66c6aa07ed5a42a69899580d210 /compiler/optimizing/intrinsics_arm.cc | |
| parent | 6cc0250f1d1507957fc2fe1543179eab5a8b53f9 (diff) | |
Use the "GC is marking" information in compiler read barriers (ARM, ARM64).
In compiler-generated code, when deciding whether to mark
a heap reference or not in a read barrier, check whether
the GC is currently marking, instead of checking the gray
bit in the reference's holder's lock word.
This change is only for ARM and ARM64, as it does not
benefit x86 nor x86-64.
Test: Run ART tests in Baker read barrier configuration.
Test: Boot a device in Baker read barrier configuration.
Bug: 29516974
Change-Id: Ia5d90286bb9f753f3bbcb3a6254eb166523a2ff5
Diffstat (limited to 'compiler/optimizing/intrinsics_arm.cc')
| -rw-r--r-- | compiler/optimizing/intrinsics_arm.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/compiler/optimizing/intrinsics_arm.cc b/compiler/optimizing/intrinsics_arm.cc index c262cf983d..751623c177 100644 --- a/compiler/optimizing/intrinsics_arm.cc +++ b/compiler/optimizing/intrinsics_arm.cc @@ -1946,6 +1946,8 @@ void IntrinsicCodeGeneratorARM::VisitSystemArrayCopy(HInvoke* invoke) { } if (kEmitCompilerReadBarrier && kUseBakerReadBarrier) { + // TODO: Also convert this intrinsic to the IsGcMarking strategy? + // The base destination address is computed later, as `temp2` is // used for intermediate computations. |