diff options
author | Mathieu Chartier <mathieuc@google.com> | 2016-11-09 15:18:27 -0800 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2016-11-09 15:59:33 -0800 |
commit | aa474eb597056d21c0b21d353b9b6aa460351d0f (patch) | |
tree | 738ba965a552ac0e4814cb1131ef0dd96ae14142 /compiler/optimizing/code_generator_arm.h | |
parent | 334b5c3d0d5d84242b4528241c759789e532ce08 (diff) |
Avoid read barriers for inlined check cast
Avoiding read barriers improves speed and reduces code size.
Doing this can never result in false positives, only false negatives.
These false negatives are handled correcly by rechecking in the
entrypoint.
Ritzperf code size for CC:
arm32: 13439400->13300136 (-1.04%)
arm64: 16405120->16253568 (-0.92%)
Perf: TODO
Bug: 29516974
Bug: 12687968
Test: test-art-host, run ritzperf both with CC
Change-Id: Ie024e0b1e8ee415781fb73e8029e87e8a5318f86
Diffstat (limited to 'compiler/optimizing/code_generator_arm.h')
-rw-r--r-- | compiler/optimizing/code_generator_arm.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/compiler/optimizing/code_generator_arm.h b/compiler/optimizing/code_generator_arm.h index 6561984fe4..e953df893d 100644 --- a/compiler/optimizing/code_generator_arm.h +++ b/compiler/optimizing/code_generator_arm.h @@ -263,7 +263,8 @@ class InstructionCodeGeneratorARM : public InstructionCodeGenerator { void GenerateReferenceLoadOneRegister(HInstruction* instruction, Location out, uint32_t offset, - Location maybe_temp); + Location maybe_temp, + bool emit_read_barrier); // Generate a heap reference load using two different registers // `out` and `obj`: // |