Mercurial > hg > truffle
comparison src/share/vm/opto/matcher.cpp @ 12071:adb9a7d94cb5
8023003: Cleanup the public interface to PhaseCFG
Summary: public methods that don't need to be public should be private.
Reviewed-by: kvn, twisti
author | adlertz |
---|---|
date | Fri, 16 Aug 2013 10:23:55 +0200 |
parents | fcf521c3fbc6 |
children | c9ccd7b85f20 e2722a66aba7 |
comparison
equal
deleted
inserted
replaced
12070:afbe18ae0905 | 12071:adb9a7d94cb5 |
---|---|
65 RegMask Matcher::c_frame_ptr_mask; | 65 RegMask Matcher::c_frame_ptr_mask; |
66 const uint Matcher::_begin_rematerialize = _BEGIN_REMATERIALIZE; | 66 const uint Matcher::_begin_rematerialize = _BEGIN_REMATERIALIZE; |
67 const uint Matcher::_end_rematerialize = _END_REMATERIALIZE; | 67 const uint Matcher::_end_rematerialize = _END_REMATERIALIZE; |
68 | 68 |
69 //---------------------------Matcher------------------------------------------- | 69 //---------------------------Matcher------------------------------------------- |
70 Matcher::Matcher( Node_List &proj_list ) : | 70 Matcher::Matcher() |
71 PhaseTransform( Phase::Ins_Select ), | 71 : PhaseTransform( Phase::Ins_Select ), |
72 #ifdef ASSERT | 72 #ifdef ASSERT |
73 _old2new_map(C->comp_arena()), | 73 _old2new_map(C->comp_arena()), |
74 _new2old_map(C->comp_arena()), | 74 _new2old_map(C->comp_arena()), |
75 #endif | 75 #endif |
76 _shared_nodes(C->comp_arena()), | 76 _shared_nodes(C->comp_arena()), |
77 _reduceOp(reduceOp), _leftOp(leftOp), _rightOp(rightOp), | 77 _reduceOp(reduceOp), _leftOp(leftOp), _rightOp(rightOp), |
78 _swallowed(swallowed), | 78 _swallowed(swallowed), |
79 _begin_inst_chain_rule(_BEGIN_INST_CHAIN_RULE), | 79 _begin_inst_chain_rule(_BEGIN_INST_CHAIN_RULE), |
80 _end_inst_chain_rule(_END_INST_CHAIN_RULE), | 80 _end_inst_chain_rule(_END_INST_CHAIN_RULE), |
81 _must_clone(must_clone), _proj_list(proj_list), | 81 _must_clone(must_clone), |
82 _register_save_policy(register_save_policy), | 82 _register_save_policy(register_save_policy), |
83 _c_reg_save_policy(c_reg_save_policy), | 83 _c_reg_save_policy(c_reg_save_policy), |
84 _register_save_type(register_save_type), | 84 _register_save_type(register_save_type), |
85 _ruleName(ruleName), | 85 _ruleName(ruleName), |
86 _allocation_started(false), | 86 _allocation_started(false), |
1302 C->record_method_not_compilable_all_tiers("unsupported outgoing calling sequence"); | 1302 C->record_method_not_compilable_all_tiers("unsupported outgoing calling sequence"); |
1303 } else { | 1303 } else { |
1304 for (int i = begin_out_arg_area; i < out_arg_limit_per_call; i++) | 1304 for (int i = begin_out_arg_area; i < out_arg_limit_per_call; i++) |
1305 proj->_rout.Insert(OptoReg::Name(i)); | 1305 proj->_rout.Insert(OptoReg::Name(i)); |
1306 } | 1306 } |
1307 if( proj->_rout.is_NotEmpty() ) | 1307 if (proj->_rout.is_NotEmpty()) { |
1308 _proj_list.push(proj); | 1308 push_projection(proj); |
1309 } | |
1309 } | 1310 } |
1310 // Transfer the safepoint information from the call to the mcall | 1311 // Transfer the safepoint information from the call to the mcall |
1311 // Move the JVMState list | 1312 // Move the JVMState list |
1312 msfpt->set_jvms(sfpt->jvms()); | 1313 msfpt->set_jvms(sfpt->jvms()); |
1313 for (JVMState* jvms = msfpt->jvms(); jvms; jvms = jvms->caller()) { | 1314 for (JVMState* jvms = msfpt->jvms(); jvms; jvms = jvms->caller()) { |
1683 } | 1684 } |
1684 #endif | 1685 #endif |
1685 } | 1686 } |
1686 | 1687 |
1687 // If the _leaf is an AddP, insert the base edge | 1688 // If the _leaf is an AddP, insert the base edge |
1688 if( leaf->is_AddP() ) | 1689 if (leaf->is_AddP()) { |
1689 mach->ins_req(AddPNode::Base,leaf->in(AddPNode::Base)); | 1690 mach->ins_req(AddPNode::Base,leaf->in(AddPNode::Base)); |
1690 | 1691 } |
1691 uint num_proj = _proj_list.size(); | 1692 |
1693 uint number_of_projections_prior = number_of_projections(); | |
1692 | 1694 |
1693 // Perform any 1-to-many expansions required | 1695 // Perform any 1-to-many expansions required |
1694 MachNode *ex = mach->Expand(s,_proj_list, mem); | 1696 MachNode *ex = mach->Expand(s, _projection_list, mem); |
1695 if( ex != mach ) { | 1697 if (ex != mach) { |
1696 assert(ex->ideal_reg() == mach->ideal_reg(), "ideal types should match"); | 1698 assert(ex->ideal_reg() == mach->ideal_reg(), "ideal types should match"); |
1697 if( ex->in(1)->is_Con() ) | 1699 if( ex->in(1)->is_Con() ) |
1698 ex->in(1)->set_req(0, C->root()); | 1700 ex->in(1)->set_req(0, C->root()); |
1699 // Remove old node from the graph | 1701 // Remove old node from the graph |
1700 for( uint i=0; i<mach->req(); i++ ) { | 1702 for( uint i=0; i<mach->req(); i++ ) { |
1711 // in space, and will not get emitted as output code. Catch this. | 1713 // in space, and will not get emitted as output code. Catch this. |
1712 // Also, catch any new register allocation constraints ("projections") | 1714 // Also, catch any new register allocation constraints ("projections") |
1713 // generated belatedly during spill code generation. | 1715 // generated belatedly during spill code generation. |
1714 if (_allocation_started) { | 1716 if (_allocation_started) { |
1715 guarantee(ex == mach, "no expand rules during spill generation"); | 1717 guarantee(ex == mach, "no expand rules during spill generation"); |
1716 guarantee(_proj_list.size() == num_proj, "no allocation during spill generation"); | 1718 guarantee(number_of_projections_prior == number_of_projections(), "no allocation during spill generation"); |
1717 } | 1719 } |
1718 | 1720 |
1719 if (leaf->is_Con() || leaf->is_DecodeNarrowPtr()) { | 1721 if (leaf->is_Con() || leaf->is_DecodeNarrowPtr()) { |
1720 // Record the con for sharing | 1722 // Record the con for sharing |
1721 _shared_nodes.map(leaf->_idx, ex); | 1723 _shared_nodes.map(leaf->_idx, ex); |