27 #include <tvm/ffi/object.h>
52 #ifndef TVM_DEFINE_OBJECT_REF_COW_METHOD
53 #define TVM_DEFINE_OBJECT_REF_COW_METHOD(ObjectName) \
54 static_assert(ObjectName::_type_final, \
55 "TVM's CopyOnWrite may only be used for " \
56 "Object types that are declared as final, " \
57 "using the TVM_FFI_DECLARE_OBJECT_INFO_FINAL macro."); \
58 ObjectName* CopyOnWrite() { \
59 TVM_FFI_ICHECK(data_ != nullptr); \
60 if (!data_.unique()) { \
61 auto n = ::tvm::ffi::make_object<ObjectName>(*(operator->())); \
62 ::tvm::ffi::ObjectPtr<::tvm::ffi::Object>(std::move(n)).swap(data_); \
64 return static_cast<ObjectName*>(data_.get()); \
An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.
Definition: analyzer.h:37