hotspot/src/share/vm/adlc/formssel.cpp
changeset 10252 0981ce1c3eef
parent 7433 b418028612ad
child 10255 bab46e6f7661
--- a/hotspot/src/share/vm/adlc/formssel.cpp	Thu Jul 21 08:38:25 2011 -0700
+++ b/hotspot/src/share/vm/adlc/formssel.cpp	Thu Jul 21 11:25:07 2011 -0700
@@ -3623,7 +3623,27 @@
   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 -------------------------------