< prev index next >

src/cpu/s390/vm/macroAssembler_s390.hpp

Print this page




 709   // biased lock. In this case a failure will go either to the slow
 710   // case or fall through with the notEqual condition code set with
 711   // the expectation that the slow case in the runtime will be called.
 712   // In the fall-through case where the CAS-based lock is done,
 713   // mark_reg is not destroyed.
 714   void biased_locking_enter(Register obj_reg, Register mark_reg, Register temp_reg,
 715                             Register temp2_reg, Label& done, Label* slow_case = NULL);
 716   // Upon entry, the base register of mark_addr must contain the oop.
 717   // Destroys temp_reg.
 718   // If allow_delay_slot_filling is set to true, the next instruction
 719   // emitted after this one will go in an annulled delay slot if the
 720   // biased locking exit case failed.
 721   void biased_locking_exit(Register mark_addr, Register temp_reg, Label& done);
 722 
 723   void compiler_fast_lock_object(Register oop, Register box, Register temp1, Register temp2, bool try_bias = UseBiasedLocking);
 724   void compiler_fast_unlock_object(Register oop, Register box, Register temp1, Register temp2, bool try_bias = UseBiasedLocking);
 725 
 726   // Write to card table for modification at store_addr - register is destroyed afterwards.
 727   void card_write_barrier_post(Register store_addr, Register tmp);
 728 
 729   void resolve_jobject(Register value, Register tmp1, Register tmp2);
 730 
 731 #if INCLUDE_ALL_GCS
 732   // General G1 pre-barrier generator.
 733   // Purpose: record the previous value if it is not null.
 734   // All non-tmps are preserved.
 735   void g1_write_barrier_pre(Register           Robj,
 736                             RegisterOrConstant offset,
 737                             Register           Rpre_val,        // Ideally, this is a non-volatile register.
 738                             Register           Rval,            // Will be preserved.
 739                             Register           Rtmp1,           // If Rpre_val is volatile, either Rtmp1
 740                             Register           Rtmp2,           // or Rtmp2 has to be non-volatile.
 741                             bool               pre_val_needed); // Save Rpre_val across runtime call, caller uses it.
 742 
 743   // General G1 post-barrier generator.
 744   // Purpose: Store cross-region card.
 745   void g1_write_barrier_post(Register Rstore_addr,
 746                              Register Rnew_val,
 747                              Register Rtmp1,
 748                              Register Rtmp2,
 749                              Register Rtmp3);
 750 #endif // INCLUDE_ALL_GCS




 709   // biased lock. In this case a failure will go either to the slow
 710   // case or fall through with the notEqual condition code set with
 711   // the expectation that the slow case in the runtime will be called.
 712   // In the fall-through case where the CAS-based lock is done,
 713   // mark_reg is not destroyed.
 714   void biased_locking_enter(Register obj_reg, Register mark_reg, Register temp_reg,
 715                             Register temp2_reg, Label& done, Label* slow_case = NULL);
 716   // Upon entry, the base register of mark_addr must contain the oop.
 717   // Destroys temp_reg.
 718   // If allow_delay_slot_filling is set to true, the next instruction
 719   // emitted after this one will go in an annulled delay slot if the
 720   // biased locking exit case failed.
 721   void biased_locking_exit(Register mark_addr, Register temp_reg, Label& done);
 722 
 723   void compiler_fast_lock_object(Register oop, Register box, Register temp1, Register temp2, bool try_bias = UseBiasedLocking);
 724   void compiler_fast_unlock_object(Register oop, Register box, Register temp1, Register temp2, bool try_bias = UseBiasedLocking);
 725 
 726   // Write to card table for modification at store_addr - register is destroyed afterwards.
 727   void card_write_barrier_post(Register store_addr, Register tmp);
 728 


 729 #if INCLUDE_ALL_GCS
 730   // General G1 pre-barrier generator.
 731   // Purpose: record the previous value if it is not null.
 732   // All non-tmps are preserved.
 733   void g1_write_barrier_pre(Register           Robj,
 734                             RegisterOrConstant offset,
 735                             Register           Rpre_val,        // Ideally, this is a non-volatile register.
 736                             Register           Rval,            // Will be preserved.
 737                             Register           Rtmp1,           // If Rpre_val is volatile, either Rtmp1
 738                             Register           Rtmp2,           // or Rtmp2 has to be non-volatile.
 739                             bool               pre_val_needed); // Save Rpre_val across runtime call, caller uses it.
 740 
 741   // General G1 post-barrier generator.
 742   // Purpose: Store cross-region card.
 743   void g1_write_barrier_post(Register Rstore_addr,
 744                              Register Rnew_val,
 745                              Register Rtmp1,
 746                              Register Rtmp2,
 747                              Register Rtmp3);
 748 #endif // INCLUDE_ALL_GCS


< prev index next >