< prev index next >
src/hotspot/share/opto/mulnode.cpp
Print this page
*** 233,249 ****
const Type *MulINode::mul_ring(const Type *t0, const Type *t1) const {
const TypeInt *r0 = t0->is_int(); // Handy access
const TypeInt *r1 = t1->is_int();
// Fetch endpoints of all ranges
! int32_t lo0 = r0->_lo;
double a = (double)lo0;
! int32_t hi0 = r0->_hi;
double b = (double)hi0;
! int32_t lo1 = r1->_lo;
double c = (double)lo1;
! int32_t hi1 = r1->_hi;
double d = (double)hi1;
// Compute all endpoints & check for overflow
int32_t A = java_multiply(lo0, lo1);
if( (double)A != a*c ) return TypeInt::INT; // Overflow?
--- 233,249 ----
const Type *MulINode::mul_ring(const Type *t0, const Type *t1) const {
const TypeInt *r0 = t0->is_int(); // Handy access
const TypeInt *r1 = t1->is_int();
// Fetch endpoints of all ranges
! jint lo0 = r0->_lo;
double a = (double)lo0;
! jint hi0 = r0->_hi;
double b = (double)hi0;
! jint lo1 = r1->_lo;
double c = (double)lo1;
! jint hi1 = r1->_hi;
double d = (double)hi1;
// Compute all endpoints & check for overflow
int32_t A = java_multiply(lo0, lo1);
if( (double)A != a*c ) return TypeInt::INT; // Overflow?
< prev index next >