src/share/vm/opto/mulnode.cpp

changeset 580
f3de1255b035
parent 435
a61af66fc99e
child 631
d1605aabd0a1
     1.1 --- a/src/share/vm/opto/mulnode.cpp	Tue Apr 29 19:45:22 2008 -0700
     1.2 +++ b/src/share/vm/opto/mulnode.cpp	Wed May 07 08:06:46 2008 -0700
     1.3 @@ -365,6 +365,25 @@
     1.4  }
     1.5  
     1.6  //=============================================================================
     1.7 +//------------------------------Value------------------------------------------
     1.8 +const Type *MulHiLNode::Value( PhaseTransform *phase ) const {
     1.9 +  // Either input is TOP ==> the result is TOP
    1.10 +  const Type *t1 = phase->type( in(1) );
    1.11 +  const Type *t2 = phase->type( in(2) );
    1.12 +  if( t1 == Type::TOP ) return Type::TOP;
    1.13 +  if( t2 == Type::TOP ) return Type::TOP;
    1.14 +
    1.15 +  // Either input is BOTTOM ==> the result is the local BOTTOM
    1.16 +  const Type *bot = bottom_type();
    1.17 +  if( (t1 == bot) || (t2 == bot) ||
    1.18 +      (t1 == Type::BOTTOM) || (t2 == Type::BOTTOM) )
    1.19 +    return bot;
    1.20 +
    1.21 +  // It is not worth trying to constant fold this stuff!
    1.22 +  return TypeLong::LONG;
    1.23 +}
    1.24 +
    1.25 +//=============================================================================
    1.26  //------------------------------mul_ring---------------------------------------
    1.27  // Supplied function returns the product of the inputs IN THE CURRENT RING.
    1.28  // For the logical operations the ring's MUL is really a logical AND function.

mercurial