1824 } |
1824 } |
1825 |
1825 |
1826 uint ArrayCopyNode::size_of() const { return sizeof(*this); } |
1826 uint ArrayCopyNode::size_of() const { return sizeof(*this); } |
1827 |
1827 |
1828 ArrayCopyNode* ArrayCopyNode::make(GraphKit* kit, bool may_throw, |
1828 ArrayCopyNode* ArrayCopyNode::make(GraphKit* kit, bool may_throw, |
1829 Node* src, Node* src_offset, Node* dest, Node* dest_offset, Node* length, |
1829 Node* src, Node* src_offset, |
1830 bool alloc_tightly_coupled) { |
1830 Node* dest, Node* dest_offset, |
|
1831 Node* length, |
|
1832 bool alloc_tightly_coupled, |
|
1833 Node* src_length, Node* dest_length, |
|
1834 Node* src_klass, Node* dest_klass) { |
1831 |
1835 |
1832 ArrayCopyNode* ac = new ArrayCopyNode(kit->C, alloc_tightly_coupled); |
1836 ArrayCopyNode* ac = new ArrayCopyNode(kit->C, alloc_tightly_coupled); |
1833 Node* prev_mem = kit->set_predefined_input_for_runtime_call(ac); |
1837 Node* prev_mem = kit->set_predefined_input_for_runtime_call(ac); |
1834 |
1838 |
1835 ac->init_req( ArrayCopyNode::Src, src); |
1839 ac->init_req(ArrayCopyNode::Src, src); |
1836 ac->init_req( ArrayCopyNode::SrcPos, src_offset); |
1840 ac->init_req(ArrayCopyNode::SrcPos, src_offset); |
1837 ac->init_req( ArrayCopyNode::Dest, dest); |
1841 ac->init_req(ArrayCopyNode::Dest, dest); |
1838 ac->init_req( ArrayCopyNode::DestPos, dest_offset); |
1842 ac->init_req(ArrayCopyNode::DestPos, dest_offset); |
1839 ac->init_req( ArrayCopyNode::Length, length); |
1843 ac->init_req(ArrayCopyNode::Length, length); |
|
1844 ac->init_req(ArrayCopyNode::SrcLen, src_length); |
|
1845 ac->init_req(ArrayCopyNode::DestLen, dest_length); |
|
1846 ac->init_req(ArrayCopyNode::SrcKlass, src_klass); |
|
1847 ac->init_req(ArrayCopyNode::DestKlass, dest_klass); |
1840 |
1848 |
1841 if (may_throw) { |
1849 if (may_throw) { |
1842 ac->set_req(TypeFunc::I_O , kit->i_o()); |
1850 ac->set_req(TypeFunc::I_O , kit->i_o()); |
1843 kit->add_safepoint_edges(ac, false); |
1851 kit->add_safepoint_edges(ac, false); |
1844 } |
1852 } |