src/share/vm/adlc/formssel.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/adlc/formssel.cpp	Fri Jul 15 18:49:50 2011
--- new/src/share/vm/adlc/formssel.cpp	Fri Jul 15 18:49:50 2011

*** 3621,3631 **** --- 3621,3651 ---- // Check that the current operands/operations match assert( _opType, "Must have _opType"); assert( mNode2->_opType, "Must have _opType"); const Form *form = globals[_opType]; const Form *form2 = globals[mNode2->_opType]; return (form == form2); + if( form != form2 ) { + return false; + } + + // Check that their children also match + if (_lChild ) { + if( !_lChild->equivalent(globals, mNode2->_lChild) ) + return false; + } else if (mNode2->_lChild) { + return false; // I have NULL left child, mNode2 has non-NULL left child. + } + + if (_rChild ) { + if( !_rChild->equivalent(globals, mNode2->_rChild) ) + return false; + } else if (mNode2->_rChild) { + return false; // I have NULL right child, mNode2 has non-NULL right child. + } + + // We've made it through the gauntlet. + return true; } //-------------------------- has_commutative_op ------------------------------- // Recursively check for commutative operations with subtree operands // which could be swapped.

src/share/vm/adlc/formssel.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File