Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/loopopts.cpp @ 6848:8e47bac5643a
7054512: Compress class pointers after perm gen removal
Summary: support of compress class pointers in the compilers.
Reviewed-by: kvn, twisti
author | roland |
---|---|
date | Tue, 09 Oct 2012 10:11:38 +0200 |
parents | e626685e9f6c |
children | d804e148cff8 |
comparison
equal
deleted
inserted
replaced
6847:65d07d9ee446 | 6848:8e47bac5643a |
---|---|
548 } | 548 } |
549 // See if the Phi is used by a Cmp or Narrow oop Decode/Encode. | 549 // See if the Phi is used by a Cmp or Narrow oop Decode/Encode. |
550 // This will likely Split-If, a higher-payoff operation. | 550 // This will likely Split-If, a higher-payoff operation. |
551 for (DUIterator_Fast kmax, k = phi->fast_outs(kmax); k < kmax; k++) { | 551 for (DUIterator_Fast kmax, k = phi->fast_outs(kmax); k < kmax; k++) { |
552 Node* use = phi->fast_out(k); | 552 Node* use = phi->fast_out(k); |
553 if (use->is_Cmp() || use->is_DecodeN() || use->is_EncodeP()) | 553 if (use->is_Cmp() || use->is_DecodeNarrowPtr() || use->is_EncodeNarrowPtr()) |
554 cost += ConditionalMoveLimit; | 554 cost += ConditionalMoveLimit; |
555 // Is there a use inside the loop? | 555 // Is there a use inside the loop? |
556 // Note: check only basic types since CMoveP is pinned. | 556 // Note: check only basic types since CMoveP is pinned. |
557 if (!used_inside_loop && is_java_primitive(bt)) { | 557 if (!used_inside_loop && is_java_primitive(bt)) { |
558 IdealLoopTree* u_loop = get_loop(has_ctrl(use) ? get_ctrl(use) : use); | 558 IdealLoopTree* u_loop = get_loop(has_ctrl(use) ? get_ctrl(use) : use); |
1004 // tried setting control edges on the x's to force them to | 1004 // tried setting control edges on the x's to force them to |
1005 // not combine, but the matching gets worried when it tries | 1005 // not combine, but the matching gets worried when it tries |
1006 // to fold a StoreP and an AddP together (as part of an | 1006 // to fold a StoreP and an AddP together (as part of an |
1007 // address expression) and the AddP and StoreP have | 1007 // address expression) and the AddP and StoreP have |
1008 // different controls. | 1008 // different controls. |
1009 if( !x->is_Load() && !x->is_DecodeN() ) _igvn._worklist.yank(x); | 1009 if (!x->is_Load() && !x->is_DecodeNarrowPtr()) _igvn._worklist.yank(x); |
1010 } | 1010 } |
1011 _igvn.remove_dead_node(n); | 1011 _igvn.remove_dead_node(n); |
1012 } | 1012 } |
1013 } | 1013 } |
1014 } | 1014 } |