< prev index next >

src/cpu/arm/vm/macroAssembler_arm.hpp

Print this page




 670 
 671   void bind_literal(InlinedString& L) {
 672     const char* msg = L.msg();
 673     if (code()->consts()->contains((address)msg)) {
 674       // The Label should not be used; avoid binding it
 675       // to detect errors.
 676       return;
 677     }
 678     AARCH64_ONLY(align(wordSize));
 679     bind(L.label);
 680     AbstractAssembler::emit_address((address)L.msg());
 681   }
 682 
 683   void bind_literal(InlinedMetadata& L) {
 684     AARCH64_ONLY(align(wordSize));
 685     bind(L.label);
 686     relocate(metadata_Relocation::spec_for_immediate());
 687     AbstractAssembler::emit_address((address)L.data());
 688   }
 689 

 690   void load_mirror(Register mirror, Register method, Register tmp);
 691 
 692   // Porting layer between 32-bit ARM and AArch64
 693 
 694 #define COMMON_INSTR_1(common_mnemonic, aarch64_mnemonic, arm32_mnemonic, arg_type) \
 695   void common_mnemonic(arg_type arg) { \
 696       AARCH64_ONLY(aarch64_mnemonic) NOT_AARCH64(arm32_mnemonic) (arg); \
 697   }
 698 
 699 #define COMMON_INSTR_2(common_mnemonic, aarch64_mnemonic, arm32_mnemonic, arg1_type, arg2_type) \
 700   void common_mnemonic(arg1_type arg1, arg2_type arg2) { \
 701       AARCH64_ONLY(aarch64_mnemonic) NOT_AARCH64(arm32_mnemonic) (arg1, arg2); \
 702   }
 703 
 704 #define COMMON_INSTR_3(common_mnemonic, aarch64_mnemonic, arm32_mnemonic, arg1_type, arg2_type, arg3_type) \
 705   void common_mnemonic(arg1_type arg1, arg2_type arg2, arg3_type arg3) { \
 706       AARCH64_ONLY(aarch64_mnemonic) NOT_AARCH64(arm32_mnemonic) (arg1, arg2, arg3); \
 707   }
 708 
 709   COMMON_INSTR_1(jump, br,  bx,  Register)




 670 
 671   void bind_literal(InlinedString& L) {
 672     const char* msg = L.msg();
 673     if (code()->consts()->contains((address)msg)) {
 674       // The Label should not be used; avoid binding it
 675       // to detect errors.
 676       return;
 677     }
 678     AARCH64_ONLY(align(wordSize));
 679     bind(L.label);
 680     AbstractAssembler::emit_address((address)L.msg());
 681   }
 682 
 683   void bind_literal(InlinedMetadata& L) {
 684     AARCH64_ONLY(align(wordSize));
 685     bind(L.label);
 686     relocate(metadata_Relocation::spec_for_immediate());
 687     AbstractAssembler::emit_address((address)L.data());
 688   }
 689 
 690   void resolve_oop_handle(Register result);
 691   void load_mirror(Register mirror, Register method, Register tmp);
 692 
 693   // Porting layer between 32-bit ARM and AArch64
 694 
 695 #define COMMON_INSTR_1(common_mnemonic, aarch64_mnemonic, arm32_mnemonic, arg_type) \
 696   void common_mnemonic(arg_type arg) { \
 697       AARCH64_ONLY(aarch64_mnemonic) NOT_AARCH64(arm32_mnemonic) (arg); \
 698   }
 699 
 700 #define COMMON_INSTR_2(common_mnemonic, aarch64_mnemonic, arm32_mnemonic, arg1_type, arg2_type) \
 701   void common_mnemonic(arg1_type arg1, arg2_type arg2) { \
 702       AARCH64_ONLY(aarch64_mnemonic) NOT_AARCH64(arm32_mnemonic) (arg1, arg2); \
 703   }
 704 
 705 #define COMMON_INSTR_3(common_mnemonic, aarch64_mnemonic, arm32_mnemonic, arg1_type, arg2_type, arg3_type) \
 706   void common_mnemonic(arg1_type arg1, arg2_type arg2, arg3_type arg3) { \
 707       AARCH64_ONLY(aarch64_mnemonic) NOT_AARCH64(arm32_mnemonic) (arg1, arg2, arg3); \
 708   }
 709 
 710   COMMON_INSTR_1(jump, br,  bx,  Register)


< prev index next >