comparison src/share/vm/opto/type.cpp @ 14495:cd5d10655495

8027754: Enable loop optimizations for loops with MathExact inside Reviewed-by: kvn, iveresov
author rbackman
date Thu, 23 Jan 2014 12:08:28 +0100
parents 45467c53f178
children 484a359ff649
comparison
equal deleted inserted replaced
14494:5292439ef895 14495:cd5d10655495
304 TypeInt::SHORT = TypeInt::make(-32768,32767, WidenMin); // Java shorts 304 TypeInt::SHORT = TypeInt::make(-32768,32767, WidenMin); // Java shorts
305 TypeInt::POS = TypeInt::make(0,max_jint, WidenMin); // Non-neg values 305 TypeInt::POS = TypeInt::make(0,max_jint, WidenMin); // Non-neg values
306 TypeInt::POS1 = TypeInt::make(1,max_jint, WidenMin); // Positive values 306 TypeInt::POS1 = TypeInt::make(1,max_jint, WidenMin); // Positive values
307 TypeInt::INT = TypeInt::make(min_jint,max_jint, WidenMax); // 32-bit integers 307 TypeInt::INT = TypeInt::make(min_jint,max_jint, WidenMax); // 32-bit integers
308 TypeInt::SYMINT = TypeInt::make(-max_jint,max_jint,WidenMin); // symmetric range 308 TypeInt::SYMINT = TypeInt::make(-max_jint,max_jint,WidenMin); // symmetric range
309 TypeInt::TYPE_DOMAIN = TypeInt::INT;
309 // CmpL is overloaded both as the bytecode computation returning 310 // CmpL is overloaded both as the bytecode computation returning
310 // a trinary (-1,0,+1) integer result AND as an efficient long 311 // a trinary (-1,0,+1) integer result AND as an efficient long
311 // compare returning optimizer ideal-type flags. 312 // compare returning optimizer ideal-type flags.
312 assert( TypeInt::CC_LT == TypeInt::MINUS_1, "types must match for CmpL to work" ); 313 assert( TypeInt::CC_LT == TypeInt::MINUS_1, "types must match for CmpL to work" );
313 assert( TypeInt::CC_GT == TypeInt::ONE, "types must match for CmpL to work" ); 314 assert( TypeInt::CC_GT == TypeInt::ONE, "types must match for CmpL to work" );
320 TypeLong::ONE = TypeLong::make( 1); // 1 321 TypeLong::ONE = TypeLong::make( 1); // 1
321 TypeLong::POS = TypeLong::make(0,max_jlong, WidenMin); // Non-neg values 322 TypeLong::POS = TypeLong::make(0,max_jlong, WidenMin); // Non-neg values
322 TypeLong::LONG = TypeLong::make(min_jlong,max_jlong,WidenMax); // 64-bit integers 323 TypeLong::LONG = TypeLong::make(min_jlong,max_jlong,WidenMax); // 64-bit integers
323 TypeLong::INT = TypeLong::make((jlong)min_jint,(jlong)max_jint,WidenMin); 324 TypeLong::INT = TypeLong::make((jlong)min_jint,(jlong)max_jint,WidenMin);
324 TypeLong::UINT = TypeLong::make(0,(jlong)max_juint,WidenMin); 325 TypeLong::UINT = TypeLong::make(0,(jlong)max_juint,WidenMin);
326 TypeLong::TYPE_DOMAIN = TypeLong::LONG;
325 327
326 const Type **fboth =(const Type**)shared_type_arena->Amalloc_4(2*sizeof(Type*)); 328 const Type **fboth =(const Type**)shared_type_arena->Amalloc_4(2*sizeof(Type*));
327 fboth[0] = Type::CONTROL; 329 fboth[0] = Type::CONTROL;
328 fboth[1] = Type::CONTROL; 330 fboth[1] = Type::CONTROL;
329 TypeTuple::IFBOTH = TypeTuple::make( 2, fboth ); 331 TypeTuple::IFBOTH = TypeTuple::make( 2, fboth );
1159 const TypeInt *TypeInt::SHORT; // Java shorts, -32768-32767 1161 const TypeInt *TypeInt::SHORT; // Java shorts, -32768-32767
1160 const TypeInt *TypeInt::POS; // Positive 32-bit integers or zero 1162 const TypeInt *TypeInt::POS; // Positive 32-bit integers or zero
1161 const TypeInt *TypeInt::POS1; // Positive 32-bit integers 1163 const TypeInt *TypeInt::POS1; // Positive 32-bit integers
1162 const TypeInt *TypeInt::INT; // 32-bit integers 1164 const TypeInt *TypeInt::INT; // 32-bit integers
1163 const TypeInt *TypeInt::SYMINT; // symmetric range [-max_jint..max_jint] 1165 const TypeInt *TypeInt::SYMINT; // symmetric range [-max_jint..max_jint]
1166 const TypeInt *TypeInt::TYPE_DOMAIN; // alias for TypeInt::INT
1164 1167
1165 //------------------------------TypeInt---------------------------------------- 1168 //------------------------------TypeInt----------------------------------------
1166 TypeInt::TypeInt( jint lo, jint hi, int w ) : Type(Int), _lo(lo), _hi(hi), _widen(w) { 1169 TypeInt::TypeInt( jint lo, jint hi, int w ) : Type(Int), _lo(lo), _hi(hi), _widen(w) {
1167 } 1170 }
1168 1171
1416 const TypeLong *TypeLong::ONE; // 1 1419 const TypeLong *TypeLong::ONE; // 1
1417 const TypeLong *TypeLong::POS; // >=0 1420 const TypeLong *TypeLong::POS; // >=0
1418 const TypeLong *TypeLong::LONG; // 64-bit integers 1421 const TypeLong *TypeLong::LONG; // 64-bit integers
1419 const TypeLong *TypeLong::INT; // 32-bit subrange 1422 const TypeLong *TypeLong::INT; // 32-bit subrange
1420 const TypeLong *TypeLong::UINT; // 32-bit unsigned subrange 1423 const TypeLong *TypeLong::UINT; // 32-bit unsigned subrange
1424 const TypeLong *TypeLong::TYPE_DOMAIN; // alias for TypeLong::LONG
1421 1425
1422 //------------------------------TypeLong--------------------------------------- 1426 //------------------------------TypeLong---------------------------------------
1423 TypeLong::TypeLong( jlong lo, jlong hi, int w ) : Type(Long), _lo(lo), _hi(hi), _widen(w) { 1427 TypeLong::TypeLong( jlong lo, jlong hi, int w ) : Type(Long), _lo(lo), _hi(hi), _widen(w) {
1424 } 1428 }
1425 1429