Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/opto/memnode.cpp
          +++ new/src/share/vm/opto/memnode.cpp
↓ open down ↓ 2620 lines elided ↑ open up ↑
2621 2621  uint StrIntrinsicNode::match_edge(uint idx) const {
2622 2622    return idx == 2 || idx == 3;
2623 2623  }
2624 2624  
2625 2625  //------------------------------Ideal------------------------------------------
2626 2626  // Return a node which is more "ideal" than the current node.  Strip out
2627 2627  // control copies
2628 2628  Node *StrIntrinsicNode::Ideal(PhaseGVN *phase, bool can_reshape) {
2629 2629    if (remove_dead_region(phase, can_reshape)) return this;
2630 2630  
2631      -  Node* mem = phase->transform(in(MemNode::Memory));
2632      -  // If transformed to a MergeMem, get the desired slice
2633      -  uint alias_idx = phase->C->get_alias_index(adr_type());
2634      -  mem = mem->is_MergeMem() ? mem->as_MergeMem()->memory_at(alias_idx) : mem;
2635      -  if (mem != in(MemNode::Memory))
2636      -    set_req(MemNode::Memory, mem);
     2631 +  if (can_reshape) {
     2632 +    Node* mem = phase->transform(in(MemNode::Memory));
     2633 +    // If transformed to a MergeMem, get the desired slice
     2634 +    uint alias_idx = phase->C->get_alias_index(adr_type());
     2635 +    mem = mem->is_MergeMem() ? mem->as_MergeMem()->memory_at(alias_idx) : mem;
     2636 +    if (mem != in(MemNode::Memory)) {
     2637 +      set_req(MemNode::Memory, mem);
     2638 +      return this;
     2639 +    }
     2640 +  }
2637 2641    return NULL;
2638 2642  }
2639 2643  
2640 2644  //=============================================================================
2641 2645  MemBarNode::MemBarNode(Compile* C, int alias_idx, Node* precedent)
2642 2646    : MultiNode(TypeFunc::Parms + (precedent == NULL? 0: 1)),
2643 2647      _adr_type(C->get_adr_type(alias_idx))
2644 2648  {
2645 2649    init_class_id(Class_MemBar);
2646 2650    Node* top = C->top();
↓ open down ↓ 1508 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX