comparison src/share/vm/opto/type.cpp @ 17726:085b304a1cc5

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 de95063c0e34
children 62825ea7e51f
comparison
equal deleted inserted replaced
17725:b4ce4e9eb97d 17726:085b304a1cc5
299 TypeInt::SHORT = TypeInt::make(-32768,32767, WidenMin); // Java shorts 299 TypeInt::SHORT = TypeInt::make(-32768,32767, WidenMin); // Java shorts
300 TypeInt::POS = TypeInt::make(0,max_jint, WidenMin); // Non-neg values 300 TypeInt::POS = TypeInt::make(0,max_jint, WidenMin); // Non-neg values
301 TypeInt::POS1 = TypeInt::make(1,max_jint, WidenMin); // Positive values 301 TypeInt::POS1 = TypeInt::make(1,max_jint, WidenMin); // Positive values
302 TypeInt::INT = TypeInt::make(min_jint,max_jint, WidenMax); // 32-bit integers 302 TypeInt::INT = TypeInt::make(min_jint,max_jint, WidenMax); // 32-bit integers
303 TypeInt::SYMINT = TypeInt::make(-max_jint,max_jint,WidenMin); // symmetric range 303 TypeInt::SYMINT = TypeInt::make(-max_jint,max_jint,WidenMin); // symmetric range
304 TypeInt::TYPE_DOMAIN = TypeInt::INT;
304 // CmpL is overloaded both as the bytecode computation returning 305 // CmpL is overloaded both as the bytecode computation returning
305 // a trinary (-1,0,+1) integer result AND as an efficient long 306 // a trinary (-1,0,+1) integer result AND as an efficient long
306 // compare returning optimizer ideal-type flags. 307 // compare returning optimizer ideal-type flags.
307 assert( TypeInt::CC_LT == TypeInt::MINUS_1, "types must match for CmpL to work" ); 308 assert( TypeInt::CC_LT == TypeInt::MINUS_1, "types must match for CmpL to work" );
308 assert( TypeInt::CC_GT == TypeInt::ONE, "types must match for CmpL to work" ); 309 assert( TypeInt::CC_GT == TypeInt::ONE, "types must match for CmpL to work" );
315 TypeLong::ONE = TypeLong::make( 1); // 1 316 TypeLong::ONE = TypeLong::make( 1); // 1
316 TypeLong::POS = TypeLong::make(0,max_jlong, WidenMin); // Non-neg values 317 TypeLong::POS = TypeLong::make(0,max_jlong, WidenMin); // Non-neg values
317 TypeLong::LONG = TypeLong::make(min_jlong,max_jlong,WidenMax); // 64-bit integers 318 TypeLong::LONG = TypeLong::make(min_jlong,max_jlong,WidenMax); // 64-bit integers
318 TypeLong::INT = TypeLong::make((jlong)min_jint,(jlong)max_jint,WidenMin); 319 TypeLong::INT = TypeLong::make((jlong)min_jint,(jlong)max_jint,WidenMin);
319 TypeLong::UINT = TypeLong::make(0,(jlong)max_juint,WidenMin); 320 TypeLong::UINT = TypeLong::make(0,(jlong)max_juint,WidenMin);
321 TypeLong::TYPE_DOMAIN = TypeLong::LONG;
320 322
321 const Type **fboth =(const Type**)shared_type_arena->Amalloc_4(2*sizeof(Type*)); 323 const Type **fboth =(const Type**)shared_type_arena->Amalloc_4(2*sizeof(Type*));
322 fboth[0] = Type::CONTROL; 324 fboth[0] = Type::CONTROL;
323 fboth[1] = Type::CONTROL; 325 fboth[1] = Type::CONTROL;
324 TypeTuple::IFBOTH = TypeTuple::make( 2, fboth ); 326 TypeTuple::IFBOTH = TypeTuple::make( 2, fboth );
1154 const TypeInt *TypeInt::SHORT; // Java shorts, -32768-32767 1156 const TypeInt *TypeInt::SHORT; // Java shorts, -32768-32767
1155 const TypeInt *TypeInt::POS; // Positive 32-bit integers or zero 1157 const TypeInt *TypeInt::POS; // Positive 32-bit integers or zero
1156 const TypeInt *TypeInt::POS1; // Positive 32-bit integers 1158 const TypeInt *TypeInt::POS1; // Positive 32-bit integers
1157 const TypeInt *TypeInt::INT; // 32-bit integers 1159 const TypeInt *TypeInt::INT; // 32-bit integers
1158 const TypeInt *TypeInt::SYMINT; // symmetric range [-max_jint..max_jint] 1160 const TypeInt *TypeInt::SYMINT; // symmetric range [-max_jint..max_jint]
1161 const TypeInt *TypeInt::TYPE_DOMAIN; // alias for TypeInt::INT
1159 1162
1160 //------------------------------TypeInt---------------------------------------- 1163 //------------------------------TypeInt----------------------------------------
1161 TypeInt::TypeInt( jint lo, jint hi, int w ) : Type(Int), _lo(lo), _hi(hi), _widen(w) { 1164 TypeInt::TypeInt( jint lo, jint hi, int w ) : Type(Int), _lo(lo), _hi(hi), _widen(w) {
1162 } 1165 }
1163 1166
1411 const TypeLong *TypeLong::ONE; // 1 1414 const TypeLong *TypeLong::ONE; // 1
1412 const TypeLong *TypeLong::POS; // >=0 1415 const TypeLong *TypeLong::POS; // >=0
1413 const TypeLong *TypeLong::LONG; // 64-bit integers 1416 const TypeLong *TypeLong::LONG; // 64-bit integers
1414 const TypeLong *TypeLong::INT; // 32-bit subrange 1417 const TypeLong *TypeLong::INT; // 32-bit subrange
1415 const TypeLong *TypeLong::UINT; // 32-bit unsigned subrange 1418 const TypeLong *TypeLong::UINT; // 32-bit unsigned subrange
1419 const TypeLong *TypeLong::TYPE_DOMAIN; // alias for TypeLong::LONG
1416 1420
1417 //------------------------------TypeLong--------------------------------------- 1421 //------------------------------TypeLong---------------------------------------
1418 TypeLong::TypeLong( jlong lo, jlong hi, int w ) : Type(Long), _lo(lo), _hi(hi), _widen(w) { 1422 TypeLong::TypeLong( jlong lo, jlong hi, int w ) : Type(Long), _lo(lo), _hi(hi), _widen(w) {
1419 } 1423 }
1420 1424