< prev index next >

src/cpu/aarch64/vm/macroAssembler_aarch64.hpp

Print this page
rev 12173 : 8170106: AArch64: Multiple JVMCI issues
Reviewed-by: duke


 573   static address target_addr_for_insn(address insn_addr, unsigned insn);
 574   static address target_addr_for_insn(address insn_addr) {
 575     unsigned insn = *(unsigned*)insn_addr;
 576     return target_addr_for_insn(insn_addr, insn);
 577   }
 578 
 579   // Required platform-specific helpers for Label::patch_instructions.
 580   // They _shadow_ the declarations in AbstractAssembler, which are undefined.
 581   static int pd_patch_instruction_size(address branch, address target);
 582   static void pd_patch_instruction(address branch, address target) {
 583     pd_patch_instruction_size(branch, target);
 584   }
 585   static address pd_call_destination(address branch) {
 586     return target_addr_for_insn(branch);
 587   }
 588 #ifndef PRODUCT
 589   static void pd_print_patched_instruction(address branch);
 590 #endif
 591 
 592   static int patch_oop(address insn_addr, address o);

 593 
 594   address emit_trampoline_stub(int insts_call_instruction_offset, address target);
 595 
 596   // The following 4 methods return the offset of the appropriate move instruction
 597 
 598   // Support for fast byte/short loading with zero extension (depending on particular CPU)
 599   int load_unsigned_byte(Register dst, Address src);
 600   int load_unsigned_short(Register dst, Address src);
 601 
 602   // Support for fast byte/short loading with sign extension (depending on particular CPU)
 603   int load_signed_byte(Register dst, Address src);
 604   int load_signed_short(Register dst, Address src);
 605 
 606   int load_signed_byte32(Register dst, Address src);
 607   int load_signed_short32(Register dst, Address src);
 608 
 609   // Support for sign-extension (hi:lo = extend_sign(lo))
 610   void extend_sign(Register hi, Register lo);
 611 
 612   // Load and store values by size and signed-ness




 573   static address target_addr_for_insn(address insn_addr, unsigned insn);
 574   static address target_addr_for_insn(address insn_addr) {
 575     unsigned insn = *(unsigned*)insn_addr;
 576     return target_addr_for_insn(insn_addr, insn);
 577   }
 578 
 579   // Required platform-specific helpers for Label::patch_instructions.
 580   // They _shadow_ the declarations in AbstractAssembler, which are undefined.
 581   static int pd_patch_instruction_size(address branch, address target);
 582   static void pd_patch_instruction(address branch, address target) {
 583     pd_patch_instruction_size(branch, target);
 584   }
 585   static address pd_call_destination(address branch) {
 586     return target_addr_for_insn(branch);
 587   }
 588 #ifndef PRODUCT
 589   static void pd_print_patched_instruction(address branch);
 590 #endif
 591 
 592   static int patch_oop(address insn_addr, address o);
 593   static int patch_narrow_klass(address insn_addr, narrowKlass n);
 594 
 595   address emit_trampoline_stub(int insts_call_instruction_offset, address target);
 596 
 597   // The following 4 methods return the offset of the appropriate move instruction
 598 
 599   // Support for fast byte/short loading with zero extension (depending on particular CPU)
 600   int load_unsigned_byte(Register dst, Address src);
 601   int load_unsigned_short(Register dst, Address src);
 602 
 603   // Support for fast byte/short loading with sign extension (depending on particular CPU)
 604   int load_signed_byte(Register dst, Address src);
 605   int load_signed_short(Register dst, Address src);
 606 
 607   int load_signed_byte32(Register dst, Address src);
 608   int load_signed_short32(Register dst, Address src);
 609 
 610   // Support for sign-extension (hi:lo = extend_sign(lo))
 611   void extend_sign(Register hi, Register lo);
 612 
 613   // Load and store values by size and signed-ness


< prev index next >