This is an automated email from the ASF dual-hosted git repository. tqchen pushed a commit to branch refactor-s0 in repository https://gitbox.apache.org/repos/asf/tvm.git
commit 8e7df79382c7c615900ddfd2ae5eb4db8b3bea53 Author: tqchen <[email protected]> AuthorDate: Sun Mar 9 11:50:32 2025 -0400 pass packed func compile --- include/tvm/runtime/module.h | 2 +- include/tvm/runtime/object.h | 2 ++ include/tvm/runtime/packed_func.h | 21 ++++++++++----------- src/runtime/debug_compile.cc | 1 + 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/include/tvm/runtime/module.h b/include/tvm/runtime/module.h index 308c936d62..c4763c2d75 100644 --- a/include/tvm/runtime/module.h +++ b/include/tvm/runtime/module.h @@ -257,7 +257,7 @@ class TVM_DLL ModuleNode : public Object { static constexpr const char* _type_key = "runtime.Module"; // NOTE: ModuleNode can still be sub-classed // - TVM_DECLARE_FINAL_OBJECT_INFO(ModuleNode, Object); + TVM_FFI_DECLARE_STATIC_OBJECT_INFO(ModuleNode, Object); protected: friend class Module; diff --git a/include/tvm/runtime/object.h b/include/tvm/runtime/object.h index 8fc296519f..b84cf1914b 100644 --- a/include/tvm/runtime/object.h +++ b/include/tvm/runtime/object.h @@ -145,6 +145,8 @@ class ObjectRef : public tvm::ffi::ObjectRef { #define TVM_DECLARE_FINAL_OBJECT_INFO TVM_FFI_DECLARE_FINAL_OBJECT_INFO #define TVM_DEFINE_NOTNULLABLE_OBJECT_REF_METHODS TVM_FFI_DEFINE_NOTNULLABLE_OBJECT_REF_METHODS +#define TVM_DEFINE_OBJECT_REF_METHODS TVM_FFI_DEFINE_NULLABLE_OBJECT_REF_METHODS + } // namespace runtime } // namespace tvm #endif // TVM_RUNTIME_OBJECT_H_ diff --git a/include/tvm/runtime/packed_func.h b/include/tvm/runtime/packed_func.h index 07a6848bfe..804fd3b98e 100644 --- a/include/tvm/runtime/packed_func.h +++ b/include/tvm/runtime/packed_func.h @@ -79,7 +79,8 @@ class PackedFuncObj : public Object { static constexpr const uint32_t _type_index = TypeIndex::kRuntimePackedFunc; static constexpr const char* _type_key = "runtime.PackedFunc"; - TVM_DECLARE_FINAL_OBJECT_INFO(PackedFuncObj, Object); + static const constexpr bool _type_final = true; + TVM_FFI_DECLARE_STATIC_OBJECT_INFO(PackedFuncObj, Object); protected: /*! @@ -640,14 +641,14 @@ class TVMPODValue_ { return Module(ObjectPtr<Object>(nullptr)); } TVM_CHECK_TYPE_CODE(type_code_, kTVMModuleHandle); - return Module(ObjectPtr<Object>(static_cast<Object*>(value_.v_handle))); + return Module(details::ObjectUnsafe::ObjectPtrFromUnowned<Object>(static_cast<Object*>(value_.v_handle))); } operator PackedFunc() const { if (type_code_ == kTVMNullptr) { return PackedFunc(ObjectPtr<Object>(nullptr)); } TVM_CHECK_TYPE_CODE(type_code_, kTVMPackedFuncHandle); - return PackedFunc(ObjectPtr<Object>(static_cast<Object*>(value_.v_handle))); + return PackedFunc(details::ObjectUnsafe::ObjectPtrFromUnowned<Object>(static_cast<Object*>(value_.v_handle))); } operator Device() const { TVM_CHECK_TYPE_CODE(type_code_, kDLDevice); @@ -1195,12 +1196,10 @@ class TVMRetValue : public TVMPODValue_CRTP_<TVMRetValue> { } } void SwitchToObject(int type_code, ObjectPtr<Object> other) { - if (other.data_ != nullptr) { + if (other != nullptr) { this->Clear(); type_code_ = type_code; - // move the handle out - value_.v_handle = other.data_; - other.data_ = nullptr; + value_.v_handle = details::ObjectUnsafe::MoveTVMFFIObjectPtrFromObjectPtr(&other); } else { SwitchToPOD(kTVMNullptr); value_.v_handle = nullptr; @@ -1214,18 +1213,18 @@ class TVMRetValue : public TVMPODValue_CRTP_<TVMRetValue> { delete ptr<std::string>(); break; case kTVMPackedFuncHandle: - static_cast<Object*>(value_.v_handle)->DecRef(); + details::ObjectUnsafe::DecRefObjectHandle(static_cast<Object*>(value_.v_handle)); break; case kTVMNDArrayHandle: { NDArray::FFIDecRef(static_cast<TVMArrayHandle>(value_.v_handle)); break; } case kTVMModuleHandle: { - static_cast<Object*>(value_.v_handle)->DecRef(); + details::ObjectUnsafe::DecRefObjectHandle(static_cast<Object*>(value_.v_handle)); break; } case kTVMObjectHandle: { - static_cast<Object*>(value_.v_handle)->DecRef(); + details::ObjectUnsafe::DecRefObjectHandle(static_cast<Object*>(value_.v_handle)); break; } } @@ -2439,7 +2438,7 @@ inline TVMMovableArgValue_::operator T() const { if (type_code_ == kTVMObjectRValueRefArg) { auto** ref = static_cast<Object**>(value_.v_handle); if (ObjectTypeChecker<T>::Check(*ref)) { - return T(ObjectPtr<Object>::MoveFromRValueRefArg(ref)); + return T(details::ObjectUnsafe::MoveObjectPtrFromRValueRef<Object>(ref)); } } // fallback diff --git a/src/runtime/debug_compile.cc b/src/runtime/debug_compile.cc index 67a508dde5..e04c0b0003 100644 --- a/src/runtime/debug_compile.cc +++ b/src/runtime/debug_compile.cc @@ -27,6 +27,7 @@ #include <tvm/runtime/container/map.h> #include <tvm/runtime/container/variant.h> #include <tvm/runtime/ndarray.h> +#include <tvm/runtime/packed_func.h> namespace tvm { namespace debug {
