1769 |
1769 |
1770 // Find all the needed outputs of this call |
1770 // Find all the needed outputs of this call |
1771 CallProjections callprojs; |
1771 CallProjections callprojs; |
1772 call->extract_projections(&callprojs, true); |
1772 call->extract_projections(&callprojs, true); |
1773 |
1773 |
|
1774 Node* init_mem = call->in(TypeFunc::Memory); |
|
1775 Node* final_mem = final_state->in(TypeFunc::Memory); |
|
1776 Node* final_ctl = final_state->in(TypeFunc::Control); |
|
1777 Node* final_io = final_state->in(TypeFunc::I_O); |
|
1778 |
1774 // Replace all the old call edges with the edges from the inlining result |
1779 // Replace all the old call edges with the edges from the inlining result |
1775 C->gvn_replace_by(callprojs.fallthrough_catchproj, final_state->in(TypeFunc::Control)); |
1780 if (callprojs.fallthrough_catchproj != NULL) { |
1776 C->gvn_replace_by(callprojs.fallthrough_memproj, final_state->in(TypeFunc::Memory)); |
1781 C->gvn_replace_by(callprojs.fallthrough_catchproj, final_ctl); |
1777 C->gvn_replace_by(callprojs.fallthrough_ioproj, final_state->in(TypeFunc::I_O)); |
1782 } |
1778 Node* final_mem = final_state->in(TypeFunc::Memory); |
1783 if (callprojs.fallthrough_memproj != NULL) { |
|
1784 C->gvn_replace_by(callprojs.fallthrough_memproj, final_mem); |
|
1785 } |
|
1786 if (callprojs.fallthrough_ioproj != NULL) { |
|
1787 C->gvn_replace_by(callprojs.fallthrough_ioproj, final_io); |
|
1788 } |
1779 |
1789 |
1780 // Replace the result with the new result if it exists and is used |
1790 // Replace the result with the new result if it exists and is used |
1781 if (callprojs.resproj != NULL && result != NULL) { |
1791 if (callprojs.resproj != NULL && result != NULL) { |
1782 C->gvn_replace_by(callprojs.resproj, result); |
1792 C->gvn_replace_by(callprojs.resproj, result); |
1783 } |
1793 } |