1813 this->set_non_esc_obj();
1814 }
1815 }
1816 return result;
1817 }
1818
1819 ArrayCopyNode::ArrayCopyNode(Compile* C, bool alloc_tightly_coupled)
1820 : CallNode(arraycopy_type(), NULL, TypeRawPtr::BOTTOM), _alloc_tightly_coupled(alloc_tightly_coupled), _kind(ArrayCopy) {
1821 init_class_id(Class_ArrayCopy);
1822 init_flags(Flag_is_macro);
1823 C->add_macro_node(this);
1824 }
1825
1826 uint ArrayCopyNode::size_of() const { return sizeof(*this); }
1827
1828 ArrayCopyNode* ArrayCopyNode::make(GraphKit* kit, bool may_throw,
1829 Node* src, Node* src_offset,
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) {
1835
1836 ArrayCopyNode* ac = new ArrayCopyNode(kit->C, alloc_tightly_coupled);
1837 Node* prev_mem = kit->set_predefined_input_for_runtime_call(ac);
1838
1839 ac->init_req(ArrayCopyNode::Src, src);
1840 ac->init_req(ArrayCopyNode::SrcPos, src_offset);
1841 ac->init_req(ArrayCopyNode::Dest, dest);
1842 ac->init_req(ArrayCopyNode::DestPos, dest_offset);
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);
1848
1849 if (may_throw) {
1850 ac->set_req(TypeFunc::I_O , kit->i_o());
1851 kit->add_safepoint_edges(ac, false);
1852 }
1853
1854 return ac;
|
1813 this->set_non_esc_obj();
1814 }
1815 }
1816 return result;
1817 }
1818
1819 ArrayCopyNode::ArrayCopyNode(Compile* C, bool alloc_tightly_coupled)
1820 : CallNode(arraycopy_type(), NULL, TypeRawPtr::BOTTOM), _alloc_tightly_coupled(alloc_tightly_coupled), _kind(ArrayCopy) {
1821 init_class_id(Class_ArrayCopy);
1822 init_flags(Flag_is_macro);
1823 C->add_macro_node(this);
1824 }
1825
1826 uint ArrayCopyNode::size_of() const { return sizeof(*this); }
1827
1828 ArrayCopyNode* ArrayCopyNode::make(GraphKit* kit, bool may_throw,
1829 Node* src, Node* src_offset,
1830 Node* dest, Node* dest_offset,
1831 Node* length,
1832 bool alloc_tightly_coupled,
1833 Node* src_klass, Node* dest_klass,
1834 Node* src_length, Node* dest_length) {
1835
1836 ArrayCopyNode* ac = new ArrayCopyNode(kit->C, alloc_tightly_coupled);
1837 Node* prev_mem = kit->set_predefined_input_for_runtime_call(ac);
1838
1839 ac->init_req(ArrayCopyNode::Src, src);
1840 ac->init_req(ArrayCopyNode::SrcPos, src_offset);
1841 ac->init_req(ArrayCopyNode::Dest, dest);
1842 ac->init_req(ArrayCopyNode::DestPos, dest_offset);
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);
1848
1849 if (may_throw) {
1850 ac->set_req(TypeFunc::I_O , kit->i_o());
1851 kit->add_safepoint_edges(ac, false);
1852 }
1853
1854 return ac;
|