summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/code_generator_arm_vixl.h
diff options
context:
space:
mode:
authorVladimir Marko <vmarko@google.com>2018-06-26 11:02:04 +0100
committerVladimir Marko <vmarko@google.com>2018-06-29 14:39:00 +0100
commit6fd1606a3f3fc2dd53ab4f8b371e420b3e33c74f (patch)
tree9f944d267ce3616eb969c027665e4a451c2b3879 /compiler/optimizing/code_generator_arm_vixl.h
parentbb089b6bf850c87e0e42917a383cc7298dcb09c5 (diff)
downloadart-6fd1606a3f3fc2dd53ab4f8b371e420b3e33c74f.tar.gz
art-6fd1606a3f3fc2dd53ab4f8b371e420b3e33c74f.tar.bz2
art-6fd1606a3f3fc2dd53ab4f8b371e420b3e33c74f.zip
Implement Integer.valueOf() intrinsic for boot image.
And generate only one "boot image live objects" array rather than one per boot*.art file. Test: m test-art-host-gtest Test: testrunner.py --host --optimizing Test: Pixel 2 XL boots. Test: testrunner.py --target --optimizing Bug: 71526895 Change-Id: I23af7f47fea5150805f801cd2512f2d152ee5b73
Diffstat (limited to 'compiler/optimizing/code_generator_arm_vixl.h')
-rw-r--r--compiler/optimizing/code_generator_arm_vixl.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/compiler/optimizing/code_generator_arm_vixl.h b/compiler/optimizing/code_generator_arm_vixl.h
index ae19cdbc50..fc8cf98173 100644
--- a/compiler/optimizing/code_generator_arm_vixl.h
+++ b/compiler/optimizing/code_generator_arm_vixl.h
@@ -578,6 +578,7 @@ class CodeGeneratorARMVIXL : public CodeGenerator {
vixl::aarch32::Label add_pc_label;
};
+ PcRelativePatchInfo* NewBootImageIntrinsicPatch(uint32_t intrinsic_data);
PcRelativePatchInfo* NewBootImageRelRoPatch(uint32_t boot_image_offset);
PcRelativePatchInfo* NewBootImageMethodPatch(MethodReference target_method);
PcRelativePatchInfo* NewMethodBssEntryPatch(MethodReference target_method);
@@ -600,7 +601,8 @@ class CodeGeneratorARMVIXL : public CodeGenerator {
dex::TypeIndex type_index,
Handle<mirror::Class> handle);
- void LoadBootImageAddress(vixl::aarch32::Register reg, uint32_t boot_image_offset);
+ void LoadBootImageAddress(vixl::aarch32::Register reg, uint32_t boot_image_reference);
+ void AllocateInstanceForIntrinsic(HInvokeStaticOrDirect* invoke, uint32_t boot_image_offset);
void EmitLinkerPatches(ArenaVector<linker::LinkerPatch>* linker_patches) OVERRIDE;
bool NeedsThunkCode(const linker::LinkerPatch& patch) const OVERRIDE;
@@ -904,6 +906,8 @@ class CodeGeneratorARMVIXL : public CodeGenerator {
ArenaDeque<PcRelativePatchInfo> boot_image_string_patches_;
// PC-relative String patch info for kBssEntry.
ArenaDeque<PcRelativePatchInfo> string_bss_entry_patches_;
+ // PC-relative patch info for IntrinsicObjects.
+ ArenaDeque<PcRelativePatchInfo> boot_image_intrinsic_patches_;
// Baker read barrier patch info.
ArenaDeque<BakerReadBarrierPatchInfo> baker_read_barrier_patches_;