Merge

Thu, 31 Mar 2011 15:30:12 -0700

author
never
date
Thu, 31 Mar 2011 15:30:12 -0700
changeset 2701
2a5104162671
parent 2700
352622fd140a
parent 2699
cb162b348743
child 2702
8010c8c623ac

Merge

     1.1 --- a/src/share/vm/opto/loopTransform.cpp	Thu Mar 31 14:00:41 2011 -0700
     1.2 +++ b/src/share/vm/opto/loopTransform.cpp	Thu Mar 31 15:30:12 2011 -0700
     1.3 @@ -432,6 +432,12 @@
     1.4      return false;
     1.5    }
     1.6  
     1.7 +  // Currently we don't have policy to optimize one iteration loops.
     1.8 +  // Maximally unrolling transformation is used for that:
     1.9 +  // it is peeled and the original loop become non reachable (dead).
    1.10 +  if (trip_count == 1)
    1.11 +    return true;
    1.12 +
    1.13    // Do not unroll a loop with String intrinsics code.
    1.14    // String intrinsics are large and have loops.
    1.15    for (uint k = 0; k < _body.size(); k++) {
     2.1 --- a/src/share/vm/opto/memnode.cpp	Thu Mar 31 14:00:41 2011 -0700
     2.2 +++ b/src/share/vm/opto/memnode.cpp	Thu Mar 31 15:30:12 2011 -0700
     2.3 @@ -2628,12 +2628,16 @@
     2.4  Node *StrIntrinsicNode::Ideal(PhaseGVN *phase, bool can_reshape) {
     2.5    if (remove_dead_region(phase, can_reshape)) return this;
     2.6  
     2.7 -  Node* mem = phase->transform(in(MemNode::Memory));
     2.8 -  // If transformed to a MergeMem, get the desired slice
     2.9 -  uint alias_idx = phase->C->get_alias_index(adr_type());
    2.10 -  mem = mem->is_MergeMem() ? mem->as_MergeMem()->memory_at(alias_idx) : mem;
    2.11 -  if (mem != in(MemNode::Memory))
    2.12 -    set_req(MemNode::Memory, mem);
    2.13 +  if (can_reshape) {
    2.14 +    Node* mem = phase->transform(in(MemNode::Memory));
    2.15 +    // If transformed to a MergeMem, get the desired slice
    2.16 +    uint alias_idx = phase->C->get_alias_index(adr_type());
    2.17 +    mem = mem->is_MergeMem() ? mem->as_MergeMem()->memory_at(alias_idx) : mem;
    2.18 +    if (mem != in(MemNode::Memory)) {
    2.19 +      set_req(MemNode::Memory, mem);
    2.20 +      return this;
    2.21 +    }
    2.22 +  }
    2.23    return NULL;
    2.24  }
    2.25  

mercurial