comparison src/share/vm/opto/chaitin.hpp @ 923:a70508bb21c3

6862863: C2 compiler fails in elide_copy() Reviewed-by: kvn
author never
date Fri, 14 Aug 2009 15:53:46 -0700
parents fbc12e71c476
children c18cbe5936b8
comparison
equal deleted inserted replaced
904:ef671fb22f73 923:a70508bb21c3
456 void fixup_spills(); 456 void fixup_spills();
457 457
458 // Post-Allocation peephole copy removal 458 // Post-Allocation peephole copy removal
459 void post_allocate_copy_removal(); 459 void post_allocate_copy_removal();
460 Node *skip_copies( Node *c ); 460 Node *skip_copies( Node *c );
461 // Replace the old node with the current live version of that value
462 // and yank the old value if it's dead.
463 int replace_and_yank_if_dead( Node *old, OptoReg::Name nreg,
464 Block *current_block, Node_List& value, Node_List& regnd ) {
465 Node* v = regnd[nreg];
466 assert(v->outcnt() != 0, "no dead values");
467 old->replace_by(v);
468 return yank_if_dead(old, current_block, &value, &regnd);
469 }
470
461 int yank_if_dead( Node *old, Block *current_block, Node_List *value, Node_List *regnd ); 471 int yank_if_dead( Node *old, Block *current_block, Node_List *value, Node_List *regnd );
462 int elide_copy( Node *n, int k, Block *current_block, Node_List &value, Node_List &regnd, bool can_change_regs ); 472 int elide_copy( Node *n, int k, Block *current_block, Node_List &value, Node_List &regnd, bool can_change_regs );
463 int use_prior_register( Node *copy, uint idx, Node *def, Block *current_block, Node_List &value, Node_List &regnd ); 473 int use_prior_register( Node *copy, uint idx, Node *def, Block *current_block, Node_List &value, Node_List &regnd );
464 bool may_be_copy_of_callee( Node *def ) const; 474 bool may_be_copy_of_callee( Node *def ) const;
465 475