754 Node* adr, 755 uint alias_idx, 756 Node* val, 757 const TypeOopPtr* val_type, 758 Node* pre_val, 759 BasicType bt); 760 761 void g1_write_barrier_post(Node* store, 762 Node* obj, 763 Node* adr, 764 uint alias_idx, 765 Node* val, 766 BasicType bt, 767 bool use_precise); 768 // Helper function for g1 769 private: 770 void g1_mark_card(IdealKit& ideal, Node* card_adr, Node* store, uint oop_alias_idx, 771 Node* index, Node* index_adr, 772 Node* buffer, const TypeFunc* tf); 773 774 public: 775 // Helper function to round double arguments before a call 776 void round_double_arguments(ciMethod* dest_method); 777 void round_double_result(ciMethod* dest_method); 778 779 // rounding for strict float precision conformance 780 Node* precision_rounding(Node* n); 781 782 // rounding for strict double precision conformance 783 Node* dprecision_rounding(Node* n); 784 785 // rounding for non-strict double stores 786 Node* dstore_rounding(Node* n); 787 788 // Helper functions for fast/slow path codes 789 Node* opt_iff(Node* region, Node* iff); 790 Node* make_runtime_call(int flags, 791 const TypeFunc* call_type, address call_addr, 792 const char* call_name, 793 const TypePtr* adr_type, // NULL if no memory effects | 754 Node* adr, 755 uint alias_idx, 756 Node* val, 757 const TypeOopPtr* val_type, 758 Node* pre_val, 759 BasicType bt); 760 761 void g1_write_barrier_post(Node* store, 762 Node* obj, 763 Node* adr, 764 uint alias_idx, 765 Node* val, 766 BasicType bt, 767 bool use_precise); 768 // Helper function for g1 769 private: 770 void g1_mark_card(IdealKit& ideal, Node* card_adr, Node* store, uint oop_alias_idx, 771 Node* index, Node* index_adr, 772 Node* buffer, const TypeFunc* tf); 773 774 bool g1_can_remove_pre_barrier(PhaseTransform* phase, Node* adr, BasicType bt, uint adr_idx); 775 776 bool g1_can_remove_post_barrier(PhaseTransform* phase, Node* store, Node* adr); 777 778 public: 779 // Helper function to round double arguments before a call 780 void round_double_arguments(ciMethod* dest_method); 781 void round_double_result(ciMethod* dest_method); 782 783 // rounding for strict float precision conformance 784 Node* precision_rounding(Node* n); 785 786 // rounding for strict double precision conformance 787 Node* dprecision_rounding(Node* n); 788 789 // rounding for non-strict double stores 790 Node* dstore_rounding(Node* n); 791 792 // Helper functions for fast/slow path codes 793 Node* opt_iff(Node* region, Node* iff); 794 Node* make_runtime_call(int flags, 795 const TypeFunc* call_type, address call_addr, 796 const char* call_name, 797 const TypePtr* adr_type, // NULL if no memory effects |