Lines Matching defs:allocator
1171 // it is split before the first use by the register allocator.
1420 // -> the register allocator need not handle unhandled fixed intervals
2616 // during fpu stack allocation, so the stack allocator object
2721 // during fpu stack allocation, so the stack allocator object
2975 // -> debug information is created inside the fpu stack allocator
3417 RegisterVerifier(LinearScan* allocator)
3418 : _allocator(allocator)
3601 // When an operand is marked with is_last_use, then the fpu stack allocator
3672 MoveResolver::MoveResolver(LinearScan* allocator) :
3673 _allocator(allocator),
3720 BitMap used_regs(LinearScan::nof_regs + allocator()->frame_map()->argcount() + allocator()->max_spills());
3928 spill_slot = allocator()->allocate_spill_slot(type2spill_size[spill_interval->type()] == 2);
3932 allocator()->append_interval(spill_interval);
4589 IntervalWalker::IntervalWalker(LinearScan* allocator, Interval* unhandled_fixed_first, Interval* unhandled_any_first)
4590 : _compilation(allocator->compilation())
4591 , _allocator(allocator)
4803 LinearScanWalker::LinearScanWalker(LinearScan* allocator, Interval* unhandled_fixed_first, Interval* unhandled_any_first)
4804 : IntervalWalker(allocator, unhandled_fixed_first, unhandled_any_first)
4805 , _move_resolver(allocator)
4978 BlockBegin* op_block = allocator()->block_of_op_with_id(op_id);
4979 assert(op_id > 0 && allocator()->block_of_op_with_id(op_id - 2) == op_block, "cannot insert move at block boundary");
5028 assert(optimal_split_pos > allocator()->max_lir_op_id() || allocator()->is_block_begin(optimal_split_pos), "algorithm must move split pos to block boundary");
5048 BlockBegin* min_block = allocator()->block_of_op_with_id(min_split_pos - 1);
5052 // (in this case, max_split_pos == allocator()->max_lir_op_id() + 2, and there is no
5054 BlockBegin* max_block = allocator()->block_of_op_with_id(max_split_pos - 1);
5062 } else if (it->has_hole_between(max_split_pos - 1, max_split_pos) && !allocator()->is_block_begin(max_split_pos)) {
5087 BlockBegin* loop_block = allocator()->block_of_op_with_id(loop_end_pos);
5143 bool move_necessary = !allocator()->is_block_begin(optimal_split_pos) && !it->has_hole_between(optimal_split_pos - 1, optimal_split_pos);
5145 if (!allocator()->is_block_begin(optimal_split_pos)) {
5151 assert(allocator()->is_block_begin(optimal_split_pos) || (optimal_split_pos % 2 == 1), "split pos must be odd when not on block boundary");
5152 assert(!allocator()->is_block_begin(optimal_split_pos) || (optimal_split_pos % 2 == 0), "split pos must be even on block boundary");
5156 allocator()->append_interval(split_part);
5157 allocator()->copy_register_flags(it, split_part);
5191 allocator()->assign_spill_slot(it);
5192 allocator()->change_spill_state(it, min_split_pos);
5205 allocator()->assign_spill_slot(parent);
5221 if (!allocator()->is_block_begin(optimal_split_pos)) {
5227 assert(allocator()->is_block_begin(optimal_split_pos) || (optimal_split_pos % 2 == 1), "split pos must be odd when not on block boundary");
5228 assert(!allocator()->is_block_begin(optimal_split_pos) || (optimal_split_pos % 2 == 0), "split pos must be even on block boundary");
5231 allocator()->append_interval(spilled_part);
5232 allocator()->assign_spill_slot(spilled_part);
5233 allocator()->change_spill_state(spilled_part, optimal_split_pos);
5235 if (!allocator()->is_block_begin(optimal_split_pos)) {
5377 if (allocator()->is_precolored_cpu_interval(register_hint)) {
5594 allocator()->assign_spill_slot(cur);
5627 if (pos < allocator()->max_lir_op_id() && allocator()->has_call(pos + 1)) {
5694 if (end_pos > allocator()->max_lir_op_id() || (begin_pos & 1) != 0 || (end_pos & 1) != 0) {
5699 if (!is_move(allocator()->lir_op_with_id(begin_pos), register_hint, cur) || !is_move(allocator()->lir_op_with_id(end_pos), cur, register_hint)) {
5746 } else if (allocator()->gen()->is_vreg_flag_set(cur->reg_num(), LIRGenerator::must_start_in_memory)) {
5752 allocator()->assign_spill_slot(cur);
6455 void LinearScanStatistic::collect(LinearScan* allocator) {
6457 if (allocator->has_fpu_registers()) {
6460 if (allocator->num_loops() > 0) {
6463 inc_counter(counter_loop, allocator->num_loops());
6464 inc_counter(counter_spill_slots, allocator->max_spills());
6467 for (i = 0; i < allocator->interval_count(); i++) {
6468 Interval* cur = allocator->interval_at(i);
6491 for (i = 0; i < allocator->ir()->code()->length(); i++) {
6492 BlockBegin* cur = allocator->ir()->code()->at(i);
6629 void LinearScanStatistic::compute(LinearScan* allocator, LinearScanStatistic &global_statistic) {
6634 local_statistic.collect(allocator);
6680 void LinearScanTimers::end_method(LinearScan* allocator) {
6691 tty->print("@"); allocator->compilation()->method()->print_name();
6693 tty->print("@ %d ", allocator->compilation()->method()->code_size());
6694 tty->print("@ %d ", allocator->block_at(allocator->block_count() - 1)->last_lir_instruction_id() / 2);
6695 tty->print("@ %d ", allocator->block_count());
6696 tty->print("@ %d ", allocator->num_virtual_regs());
6697 tty->print("@ %d ", allocator->interval_count());
6698 tty->print("@ %d ", allocator->_num_calls);
6699 tty->print("@ %d ", allocator->num_loops());