diff options
| author | Vladimir Marko <vmarko@google.com> | 2018-06-26 11:02:04 +0100 |
|---|---|---|
| committer | Vladimir Marko <vmarko@google.com> | 2018-06-29 14:39:00 +0100 |
| commit | 6fd1606a3f3fc2dd53ab4f8b371e420b3e33c74f (patch) | |
| tree | 9f944d267ce3616eb969c027665e4a451c2b3879 /compiler/optimizing/code_generator_arm_vixl.h | |
| parent | bb089b6bf850c87e0e42917a383cc7298dcb09c5 (diff) | |
| download | art-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.h | 6 |
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_; |
