< prev index next >

src/hotspot/cpu/riscv/macroAssembler_riscv.hpp

Print this page

 769   void pop_v(VectorRegSet regs, Register stack)  { if (regs.bits()) pop_v(regs.bits(), stack); }
 770 #endif // COMPILER2
 771 
 772   // Push and pop everything that might be clobbered by a native
 773   // runtime call except t0 and t1. (They are always
 774   // temporary registers, so we don't have to protect them.)
 775   // Additional registers can be excluded in a passed RegSet.
 776   void push_call_clobbered_registers_except(RegSet exclude);
 777   void pop_call_clobbered_registers_except(RegSet exclude);
 778 
 779   void push_call_clobbered_registers() {
 780     push_call_clobbered_registers_except(RegSet());
 781   }
 782   void pop_call_clobbered_registers() {
 783     pop_call_clobbered_registers_except(RegSet());
 784   }
 785 
 786   void push_CPU_state(bool save_vectors = false, int vector_size_in_bytes = 0);
 787   void pop_CPU_state(bool restore_vectors = false, int vector_size_in_bytes = 0);
 788 
 789   void push_cont_fastpath(Register java_thread);
 790   void pop_cont_fastpath(Register java_thread);



 791 
 792   // if heap base register is used - reinit it with the correct value
 793   void reinit_heapbase();
 794 
 795   void bind(Label& L) {
 796     Assembler::bind(L);
 797     // fences across basic blocks should not be merged
 798     code()->clear_last_insn();
 799   }
 800 
 801   typedef void (MacroAssembler::* compare_and_branch_insn)(Register Rs1, Register Rs2, const address dest);
 802   typedef void (MacroAssembler::* compare_and_branch_label_insn)(Register Rs1, Register Rs2, Label &L, bool is_far);
 803   typedef void (MacroAssembler::* jal_jalr_insn)(Register Rt, address dest);
 804 
 805   void wrap_label(Register r, Label &L, jal_jalr_insn insn);
 806   void wrap_label(Register r1, Register r2, Label &L,
 807                   compare_and_branch_insn insn,
 808                   compare_and_branch_label_insn neg_insn, bool is_far = false);
 809 
 810   // la will use movptr instead of GOT when not in reach for auipc.

 769   void pop_v(VectorRegSet regs, Register stack)  { if (regs.bits()) pop_v(regs.bits(), stack); }
 770 #endif // COMPILER2
 771 
 772   // Push and pop everything that might be clobbered by a native
 773   // runtime call except t0 and t1. (They are always
 774   // temporary registers, so we don't have to protect them.)
 775   // Additional registers can be excluded in a passed RegSet.
 776   void push_call_clobbered_registers_except(RegSet exclude);
 777   void pop_call_clobbered_registers_except(RegSet exclude);
 778 
 779   void push_call_clobbered_registers() {
 780     push_call_clobbered_registers_except(RegSet());
 781   }
 782   void pop_call_clobbered_registers() {
 783     pop_call_clobbered_registers_except(RegSet());
 784   }
 785 
 786   void push_CPU_state(bool save_vectors = false, int vector_size_in_bytes = 0);
 787   void pop_CPU_state(bool restore_vectors = false, int vector_size_in_bytes = 0);
 788 
 789   void push_cont_fastpath(Register java_thread = xthread);
 790   void pop_cont_fastpath(Register java_thread = xthread);
 791 
 792   void inc_held_monitor_count(Register tmp = t0);
 793   void dec_held_monitor_count(Register tmp = t0);
 794 
 795   // if heap base register is used - reinit it with the correct value
 796   void reinit_heapbase();
 797 
 798   void bind(Label& L) {
 799     Assembler::bind(L);
 800     // fences across basic blocks should not be merged
 801     code()->clear_last_insn();
 802   }
 803 
 804   typedef void (MacroAssembler::* compare_and_branch_insn)(Register Rs1, Register Rs2, const address dest);
 805   typedef void (MacroAssembler::* compare_and_branch_label_insn)(Register Rs1, Register Rs2, Label &L, bool is_far);
 806   typedef void (MacroAssembler::* jal_jalr_insn)(Register Rt, address dest);
 807 
 808   void wrap_label(Register r, Label &L, jal_jalr_insn insn);
 809   void wrap_label(Register r1, Register r2, Label &L,
 810                   compare_and_branch_insn insn,
 811                   compare_and_branch_label_insn neg_insn, bool is_far = false);
 812 
 813   // la will use movptr instead of GOT when not in reach for auipc.
< prev index next >