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.