2574 is_root() ? 0 : this->head()->pre_order(),
2575 is_root() ? 0 : this->tail()->pre_order(),
2576 is_irreducible()?" irr":"");
2577 st->print(" defs: ");
2578 def_locals()->print_on(st, _head->outer()->method()->max_locals());
2579 st->cr();
2580 for (Loop* ch = child(); ch != NULL; ch = ch->sibling())
2581 ch->print(st, indent+2);
2582 }
2583 #endif
2584
2585 // ------------------------------------------------------------------
2586 // ciTypeFlow::df_flow_types
2587 //
2588 // Perform the depth first type flow analysis. Helper for flow_types.
2589 void ciTypeFlow::df_flow_types(Block* start,
2590 bool do_flow,
2591 StateVector* temp_vector,
2592 JsrSet* temp_set) {
2593 int dft_len = 100;
2594 GrowableArray<Block*> stk(arena(), dft_len, 0, NULL);
2595
2596 ciBlock* dummy = _methodBlocks->make_dummy_block();
2597 JsrSet* root_set = new JsrSet(NULL, 0);
2598 Block* root_head = new (arena()) Block(this, dummy, root_set);
2599 Block* root_tail = new (arena()) Block(this, dummy, root_set);
2600 root_head->set_pre_order(0);
2601 root_head->set_post_order(0);
2602 root_tail->set_pre_order(max_jint);
2603 root_tail->set_post_order(max_jint);
2604 set_loop_tree_root(new (arena()) Loop(root_head, root_tail));
2605
2606 stk.push(start);
2607
2608 _next_pre_order = 0; // initialize pre_order counter
2609 _rpo_list = NULL;
2610 int next_po = 0; // initialize post_order counter
2611
2612 // Compute RPO and the control flow graph
2613 int size;
2614 while ((size = stk.length()) > 0) {
|
2574 is_root() ? 0 : this->head()->pre_order(),
2575 is_root() ? 0 : this->tail()->pre_order(),
2576 is_irreducible()?" irr":"");
2577 st->print(" defs: ");
2578 def_locals()->print_on(st, _head->outer()->method()->max_locals());
2579 st->cr();
2580 for (Loop* ch = child(); ch != NULL; ch = ch->sibling())
2581 ch->print(st, indent+2);
2582 }
2583 #endif
2584
2585 // ------------------------------------------------------------------
2586 // ciTypeFlow::df_flow_types
2587 //
2588 // Perform the depth first type flow analysis. Helper for flow_types.
2589 void ciTypeFlow::df_flow_types(Block* start,
2590 bool do_flow,
2591 StateVector* temp_vector,
2592 JsrSet* temp_set) {
2593 int dft_len = 100;
2594 GrowableArray<Block*> stk(dft_len);
2595
2596 ciBlock* dummy = _methodBlocks->make_dummy_block();
2597 JsrSet* root_set = new JsrSet(NULL, 0);
2598 Block* root_head = new (arena()) Block(this, dummy, root_set);
2599 Block* root_tail = new (arena()) Block(this, dummy, root_set);
2600 root_head->set_pre_order(0);
2601 root_head->set_post_order(0);
2602 root_tail->set_pre_order(max_jint);
2603 root_tail->set_post_order(max_jint);
2604 set_loop_tree_root(new (arena()) Loop(root_head, root_tail));
2605
2606 stk.push(start);
2607
2608 _next_pre_order = 0; // initialize pre_order counter
2609 _rpo_list = NULL;
2610 int next_po = 0; // initialize post_order counter
2611
2612 // Compute RPO and the control flow graph
2613 int size;
2614 while ((size = stk.length()) > 0) {
|