OSDN Git Service

Use the "GC is marking" information in compiler read barriers (ARM, ARM64).
authorRoland Levillain <rpl@google.com>
Fri, 13 Jan 2017 11:47:39 +0000 (11:47 +0000)
committerRoland Levillain <rpl@google.com>
Thu, 23 Feb 2017 13:50:11 +0000 (13:50 +0000)
commit1372c9f40df1e47bf775f1466bbb96f472b6b9ed
treed00923d1045ab66c6aa07ed5a42a69899580d210
parent6cc0250f1d1507957fc2fe1543179eab5a8b53f9
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
compiler/optimizing/code_generator_arm.cc
compiler/optimizing/code_generator_arm.h
compiler/optimizing/code_generator_arm64.cc
compiler/optimizing/code_generator_arm64.h
compiler/optimizing/code_generator_arm_vixl.cc
compiler/optimizing/code_generator_arm_vixl.h
compiler/optimizing/intrinsics_arm.cc
compiler/optimizing/intrinsics_arm64.cc
compiler/optimizing/intrinsics_arm_vixl.cc
runtime/lock_word.h
runtime/type_lookup_table.h