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 |