--- old/src/hotspot/share/opto/compile.hpp 2018-11-14 17:52:48.759255381 +0100 +++ new/src/hotspot/share/opto/compile.hpp 2018-11-14 17:52:40.565229542 +0100 @@ -384,6 +384,7 @@ int _major_progress; // Count of something big happening bool _inlining_progress; // progress doing incremental inlining? bool _inlining_incrementally;// Are we doing incremental inlining (post parse) + bool _in_object_equals; bool _has_loops; // True if the method _may_ have some loops bool _has_split_ifs; // True if the method _may_ have some split-if bool _has_unsafe_access; // True if the method _may_ produce faults in unsafe loads or stores. @@ -495,6 +496,7 @@ GrowableArray _string_late_inlines; // same but for string operations GrowableArray _boxing_late_inlines; // same but for boxing operations + GrowableArray _object_equals_late_inlines; // same but for Object.equals() int _late_inlines_pos; // Where in the queue should the next late inlining candidate go (emulate depth first inlining) uint _number_of_mh_late_inlines; // number of method handle late inlining still pending @@ -654,6 +656,8 @@ int inlining_progress() const { return _inlining_progress; } void set_inlining_incrementally(bool z) { _inlining_incrementally = z; } int inlining_incrementally() const { return _inlining_incrementally; } + void set_in_object_equals(bool z) { _in_object_equals = z; } + int in_object_equals() const { return _in_object_equals; } void set_major_progress() { _major_progress++; } void clear_major_progress() { _major_progress = 0; } int num_loop_opts() const { return _num_loop_opts; } @@ -729,6 +733,8 @@ bool has_irreducible_loop() const { return _has_irreducible_loop; } void set_has_irreducible_loop(bool z) { _has_irreducible_loop = z; } + void trace_type_profile(ciMethod *method, int depth, int bci, ciMethod *prof_method, ciKlass *prof_klass, int site_count, int receiver_count); + // JSR 292 bool has_method_handle_invokes() const { return _has_method_handle_invokes; } void set_has_method_handle_invokes(bool z) { _has_method_handle_invokes = z; } @@ -1075,6 +1081,10 @@ _boxing_late_inlines.push(cg); } + void add_object_equals_late_inline(CallGenerator* cg) { + _object_equals_late_inlines.push(cg); + } + void remove_useless_late_inlines(GrowableArray* inlines, Unique_Node_List &useful); void process_print_inlining(); @@ -1096,6 +1106,7 @@ void inline_incrementally(PhaseIterGVN& igvn); void inline_string_calls(bool parse_time); void inline_boxing_calls(PhaseIterGVN& igvn); + void inline_object_equals_calls(PhaseIterGVN& igvn); bool optimize_loops(int& loop_opts_cnt, PhaseIterGVN& igvn, LoopOptsMode mode); // Matching, CFG layout, allocation, code generation