751 return C->too_many_recompiles(method(), bci(), reason); 752 } 753 754 // Returns the object (if any) which was created the moment before. 755 Node* just_allocated_object(Node* current_control); 756 757 static bool use_ReduceInitialCardMarks(); 758 759 // Sync Ideal and Graph kits. 760 void sync_kit(IdealKit& ideal); 761 void final_sync(IdealKit& ideal); 762 763 // vanilla/CMS post barrier 764 void write_barrier_post(Node *store, Node* obj, 765 Node* adr, uint adr_idx, Node* val, bool use_precise); 766 767 // Allow reordering of pre-barrier with oop store and/or post-barrier. 768 // Used for load_store operations which loads old value. 769 bool can_move_pre_barrier() const; 770 771 // G1 pre/post barriers 772 void g1_write_barrier_pre(bool do_load, 773 Node* obj, 774 Node* adr, 775 uint alias_idx, 776 Node* val, 777 const TypeOopPtr* val_type, 778 Node* pre_val, 779 BasicType bt); 780 781 void g1_write_barrier_post(Node* store, 782 Node* obj, 783 Node* adr, 784 uint alias_idx, 785 Node* val, 786 BasicType bt, 787 bool use_precise); 788 // Helper function for g1 789 private: 790 void g1_mark_card(IdealKit& ideal, Node* card_adr, Node* store, uint oop_alias_idx, 791 Node* index, Node* index_adr, 792 Node* buffer, const TypeFunc* tf); 793 794 bool g1_can_remove_pre_barrier(PhaseTransform* phase, Node* adr, BasicType bt, uint adr_idx); 795 796 bool g1_can_remove_post_barrier(PhaseTransform* phase, Node* store, Node* adr); 797 798 public: 799 // Helper function to round double arguments before a call 800 void round_double_arguments(ciMethod* dest_method); 801 void round_double_result(ciMethod* dest_method); 802 803 // rounding for strict float precision conformance 804 Node* precision_rounding(Node* n); 805 806 // rounding for strict double precision conformance 807 Node* dprecision_rounding(Node* n); 808 809 // rounding for non-strict double stores 810 Node* dstore_rounding(Node* n); 811 812 // Helper functions for fast/slow path codes 813 Node* opt_iff(Node* region, Node* iff); 814 Node* make_runtime_call(int flags, 815 const TypeFunc* call_type, address call_addr, 816 const char* call_name, | 751 return C->too_many_recompiles(method(), bci(), reason); 752 } 753 754 // Returns the object (if any) which was created the moment before. 755 Node* just_allocated_object(Node* current_control); 756 757 static bool use_ReduceInitialCardMarks(); 758 759 // Sync Ideal and Graph kits. 760 void sync_kit(IdealKit& ideal); 761 void final_sync(IdealKit& ideal); 762 763 // vanilla/CMS post barrier 764 void write_barrier_post(Node *store, Node* obj, 765 Node* adr, uint adr_idx, Node* val, bool use_precise); 766 767 // Allow reordering of pre-barrier with oop store and/or post-barrier. 768 // Used for load_store operations which loads old value. 769 bool can_move_pre_barrier() const; 770 771 #if INCLUDE_G1GC 772 // G1 pre/post barriers 773 void g1_write_barrier_pre(bool do_load, 774 Node* obj, 775 Node* adr, 776 uint alias_idx, 777 Node* val, 778 const TypeOopPtr* val_type, 779 Node* pre_val, 780 BasicType bt); 781 782 void g1_write_barrier_post(Node* store, 783 Node* obj, 784 Node* adr, 785 uint alias_idx, 786 Node* val, 787 BasicType bt, 788 bool use_precise); 789 // Helper function for g1 790 private: 791 void g1_mark_card(IdealKit& ideal, Node* card_adr, Node* store, uint oop_alias_idx, 792 Node* index, Node* index_adr, 793 Node* buffer, const TypeFunc* tf); 794 795 bool g1_can_remove_pre_barrier(PhaseTransform* phase, Node* adr, BasicType bt, uint adr_idx); 796 797 bool g1_can_remove_post_barrier(PhaseTransform* phase, Node* store, Node* adr); 798 #endif // INCLUDE_G1GC 799 800 public: 801 // Helper function to round double arguments before a call 802 void round_double_arguments(ciMethod* dest_method); 803 void round_double_result(ciMethod* dest_method); 804 805 // rounding for strict float precision conformance 806 Node* precision_rounding(Node* n); 807 808 // rounding for strict double precision conformance 809 Node* dprecision_rounding(Node* n); 810 811 // rounding for non-strict double stores 812 Node* dstore_rounding(Node* n); 813 814 // Helper functions for fast/slow path codes 815 Node* opt_iff(Node* region, Node* iff); 816 Node* make_runtime_call(int flags, 817 const TypeFunc* call_type, address call_addr, 818 const char* call_name, |