Lines Matching defs:def
1905 Node *def = use->in(k);
1906 if (!def)
1909 uint l = _node_latency[def->_idx] + use->latency(k);
2101 Node *def = n->in(i);
2102 if (!def) continue;
2103 if( def->is_Proj() ) // If this is a machine projection, then
2104 def = def->in(0); // propagate usage thru to the base instruction
2106 if( _bbs[def->_idx] != bb ) // Ignore if not block-local
2111 if (_current_latency[def->_idx] < l)
2112 _current_latency[def->_idx] = l;
2115 if ((--_uses[def->_idx]) == 0)
2116 AddNodeToAvailableList(def);
2582 void Scheduling::verify_do_def( Node *n, OptoReg::Name def, const char *msg ) {
2584 if( OptoReg::is_valid(def) ) { // Ignore stores & control flow
2585 Node *prior_use = _reg_node[def];
2587 tty->print("%s = ",OptoReg::as_VMReg(def)->name());
2593 _reg_node.map(def,NULL); // Kill live USEs
2625 Node *def = n->in(i);
2626 assert(def != 0, "input edge required");
2627 OptoReg::Name reg_lo = _regalloc->get_reg_first(def);
2628 OptoReg::Name reg_hi = _regalloc->get_reg_second(def);
2630 assert(!_reg_node[reg_lo] || edge_from_to(_reg_node[reg_lo],def), msg);
2634 assert(!_reg_node[reg_hi] || edge_from_to(_reg_node[reg_hi],def), msg);
2658 void Scheduling::anti_do_def( Block *b, Node *def, OptoReg::Name def_reg, int is_def ) {
2664 is_def ) { // Check for a true def (not a kill)
2665 _reg_node.map(def_reg,def); // Record def/kill as the optimistic pinch-point
2669 Node *kill = def; // Rename 'def' to more descriptive 'kill'
2670 debug_only( def = (Node*)0xdeadbeef; )
2672 // After some number of kills there _may_ be a later def
2678 if( pinch->Opcode() != Op_Node ) { // Or later-def/kill as pinch-point?
2679 later_def = pinch; // Must be def/kill as optimistic pinch-point
2692 if( later_def->outcnt() == 0 || later_def->ideal_reg() == MachProjNode::fat_proj ) { // Distinguish def from kill
2695 later_def = NULL; // and no later def
2697 pinch->set_req(0,later_def); // Hook later def so we can find it
2699 if( pinch->in(0) ) // If there is a later-def
2703 // Add output-dependence edge from later def to kill
2704 if( later_def ) // If there is some original def
2705 add_prec_edge_from_to(later_def,kill); // Add edge from def to kill
2738 pinch->del_req(0); // yank pointer to later-def, also set flag
2760 // of: a def, then some uses (connected to the def by true dependencies),
2762 // def. The uses are allowed to float relative to each other, as are the
2763 // kills. No use is allowed to slide past a kill (or def). This requires
2764 // antidependencies between all uses of a single def and all kills that
2765 // follow, up to the next def. More edges are redundant, because later defs
2768 // one use or more than one kill/def.
2776 // register-to-def mapping. If there is a prior DEF/KILL, we insert a
2787 // or a valid def/kill/pinch-point, or a leftover node from some prior
2789 // prior def, so no anti-dependence needed). Valid def is distinguished by
2797 int is_def = n->outcnt(); // def if some uses prior to adding precedence edges
2800 // This can add edges to 'n' and obscure whether or not it was a def,
2835 Node *def = n->in(j);
2836 if( def ) {
2837 assert( !def->is_MachProj() || def->ideal_reg() != MachProjNode::fat_proj, "" );
2838 anti_do_use( b, n, _regalloc->get_reg_first(def) );
2839 anti_do_use( b, n, _regalloc->get_reg_second(def) );
2892 // and use (or def), a pinch is inserted between them:
2906 // used or def'ed in the block.