--- old/src/share/vm/c1/c1_LinearScan.hpp 2016-02-12 14:19:18.500824532 +0300 +++ new/src/share/vm/c1/c1_LinearScan.hpp 2016-02-12 14:19:18.420824534 +0300 @@ -42,10 +42,7 @@ class MoveResolver; class Range; -define_array(IntervalArray, Interval*) -define_stack(IntervalList, IntervalArray) - -define_array(IntervalsArray, IntervalList*) +define_array(IntervalsArray, GrowableArray*) define_stack(IntervalsList, IntervalsArray) define_array(OopMapArray, OopMap*) @@ -145,9 +142,9 @@ int _max_spills; // number of stack slots used for intervals allocated to memory int _unused_spill_slot; // unused spill slot for a single-word value because of alignment of a double-word value - IntervalList _intervals; // mapping from register number to interval - IntervalList* _new_intervals_from_allocation; // list with all intervals created during allocation when an existing interval is split - IntervalArray* _sorted_intervals; // intervals sorted by Interval::from() + GrowableArray _intervals; // mapping from register number to interval + GrowableArray* _new_intervals_from_allocation; // list with all intervals created during allocation when an existing interval is split + GrowableArray* _sorted_intervals; // intervals sorted by Interval::from() bool _needs_full_resort; // set to true if an Interval::from() is changed and _sorted_intervals must be resorted LIR_OpArray _lir_ops; // mapping from LIR_Op id to LIR_Op node @@ -200,7 +197,7 @@ int interval_count() const { return _intervals.length(); } Interval* interval_at(int reg_num) const { return _intervals.at(reg_num); } - IntervalList* new_intervals_from_allocation() const { return _new_intervals_from_allocation; } + GrowableArray* new_intervals_from_allocation() const { return _new_intervals_from_allocation; } // access to LIR_Ops and Blocks indexed by op_id int max_lir_op_id() const { assert(_lir_ops.length() > 0, "no operations"); return (_lir_ops.length() - 1) << 1; } @@ -301,7 +298,7 @@ // (Uses LinearScanWalker) // // helper functions for building a sorted list of intervals - NOT_PRODUCT(bool is_sorted(IntervalArray* intervals);) + NOT_PRODUCT(bool is_sorted(GrowableArray* intervals);) static int interval_cmp(Interval** a, Interval** b); void add_to_list(Interval** first, Interval** prev, Interval* interval); void create_unhandled_lists(Interval** list1, Interval** list2, bool (is_list1)(const Interval* i), bool (is_list2)(const Interval* i)); @@ -427,9 +424,9 @@ int _insert_idx; LIR_InsertionBuffer _insertion_buffer; // buffer where moves are inserted - IntervalList _mapping_from; + GrowableArray _mapping_from; LIR_OprList _mapping_from_opr; - IntervalList _mapping_to; + GrowableArray _mapping_to; bool _multiple_reads_allowed; int _register_blocked[LinearScan::nof_regs]; @@ -533,7 +530,7 @@ VMReg _cached_vm_reg; Interval* _split_parent; // the original interval where this interval is derived from - IntervalList _split_children; // list of all intervals that are split off from this interval (only available for split parents) + GrowableArray _split_children; // list of all intervals that are split off from this interval (only available for split parents) Interval* _current_split_child; // the current split child that has been active or inactive last (always stored in split parents) int _canonical_spill_slot; // the stack slot where all split parts of this interval are spilled to (always stored in split parents) @@ -722,7 +719,7 @@ int _use_pos[LinearScan::nof_regs]; int _block_pos[LinearScan::nof_regs]; - IntervalList* _spill_intervals[LinearScan::nof_regs]; + GrowableArray* _spill_intervals[LinearScan::nof_regs]; MoveResolver _move_resolver; // for ordering spill moves