src/share/vm/opto/superword.cpp

changeset 9740
b290489738b8
parent 8285
535618ab1c04
child 9756
2be326848943
child 9768
eaae2ae06faf
equal deleted inserted replaced
9739:bf9503046dd4 9740:b290489738b8
480 assert(vw > 1, "sanity"); 480 assert(vw > 1, "sanity");
481 Node* init_nd = pre_end->init_trip(); 481 Node* init_nd = pre_end->init_trip();
482 if (init_nd->is_Con() && p.invar() == NULL) { 482 if (init_nd->is_Con() && p.invar() == NULL) {
483 int init = init_nd->bottom_type()->is_int()->get_con(); 483 int init = init_nd->bottom_type()->is_int()->get_con();
484 int init_offset = init * p.scale_in_bytes() + offset; 484 int init_offset = init * p.scale_in_bytes() + offset;
485 assert(init_offset >= 0, "positive offset from object start"); 485 if (init_offset < 0) { // negative offset from object start?
486 return false; // may happen in dead loop
487 }
486 if (vw % span == 0) { 488 if (vw % span == 0) {
487 // If vm is a multiple of span, we use formula (1). 489 // If vm is a multiple of span, we use formula (1).
488 if (span > 0) { 490 if (span > 0) {
489 return (vw - (init_offset % vw)) % span == 0; 491 return (vw - (init_offset % vw)) % span == 0;
490 } else { 492 } else {

mercurial