comparison src/share/vm/opto/lcm.cpp @ 8883:b9a918201d47

Merge with hsx25
author Gilles Duboscq <duboscq@ssw.jku.at>
date Sat, 06 Apr 2013 20:04:06 +0200
parents 571076d3c79d
children 70120f47d403
comparison
equal deleted inserted replaced
8660:d47b52b0ff68 8883:b9a918201d47
419 419
420 uint choice = 0; // Bigger is most important 420 uint choice = 0; // Bigger is most important
421 uint latency = 0; // Bigger is scheduled first 421 uint latency = 0; // Bigger is scheduled first
422 uint score = 0; // Bigger is better 422 uint score = 0; // Bigger is better
423 int idx = -1; // Index in worklist 423 int idx = -1; // Index in worklist
424 int cand_cnt = 0; // Candidate count
424 425
425 for( uint i=0; i<cnt; i++ ) { // Inspect entire worklist 426 for( uint i=0; i<cnt; i++ ) { // Inspect entire worklist
426 // Order in worklist is used to break ties. 427 // Order in worklist is used to break ties.
427 // See caller for how this is used to delay scheduling 428 // See caller for how this is used to delay scheduling
428 // of induction variable increments to after the other 429 // of induction variable increments to after the other
501 502
502 uint n_latency = cfg->_node_latency->at_grow(n->_idx); 503 uint n_latency = cfg->_node_latency->at_grow(n->_idx);
503 uint n_score = n->req(); // Many inputs get high score to break ties 504 uint n_score = n->req(); // Many inputs get high score to break ties
504 505
505 // Keep best latency found 506 // Keep best latency found
506 if( choice < n_choice || 507 cand_cnt++;
507 ( choice == n_choice && 508 if (choice < n_choice ||
508 ( latency < n_latency || 509 (choice == n_choice &&
509 ( latency == n_latency && 510 ((StressLCM && Compile::randomized_select(cand_cnt)) ||
510 ( score < n_score ))))) { 511 (!StressLCM &&
512 (latency < n_latency ||
513 (latency == n_latency &&
514 (score < n_score))))))) {
511 choice = n_choice; 515 choice = n_choice;
512 latency = n_latency; 516 latency = n_latency;
513 score = n_score; 517 score = n_score;
514 idx = i; // Also keep index in worklist 518 idx = i; // Also keep index in worklist
515 } 519 }