From 9efb9d534601f8d0486c706175bbafd67982f52c Mon Sep 17 00:00:00 2001 From: Ivan Ho Date: Mon, 27 Jan 2025 21:59:27 +0100 Subject: [PATCH 1/2] hotfix compile errors --- deps/ReactantExtra/src/ifrt/LoadedExecutable.cpp | 2 +- deps/ReactantExtra/src/memory_management.cpp | 8 ++++---- deps/ReactantExtra/src/memory_management.hpp | 10 ++++++++-- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/deps/ReactantExtra/src/ifrt/LoadedExecutable.cpp b/deps/ReactantExtra/src/ifrt/LoadedExecutable.cpp index 9cf4f95d2d..1502b76b27 100644 --- a/deps/ReactantExtra/src/ifrt/LoadedExecutable.cpp +++ b/deps/ReactantExtra/src/ifrt/LoadedExecutable.cpp @@ -14,7 +14,7 @@ extern "C" ExecuteOptions* ifrt_executeoptions_ctor(int32_t launch_id, span absl::flat_hash_set non_donatable_input_indices; // TODO conversion std::optional custom_options = std::nullopt; - return new ExecuteOptions(launch_id, non_donatable_input_indices, fill_status, custom_options); + return new ExecuteOptions{launch_id, non_donatable_input_indices, fill_status, custom_options}; } extern "C" void ifrt_executeoptions_dtor(ExecuteOptions* exec_opts) diff --git a/deps/ReactantExtra/src/memory_management.cpp b/deps/ReactantExtra/src/memory_management.cpp index 771e28ac77..7b71189580 100644 --- a/deps/ReactantExtra/src/memory_management.cpp +++ b/deps/ReactantExtra/src/memory_management.cpp @@ -2,10 +2,10 @@ #include #include "src/memory_management.hpp" #include "llvm/Support/ExtensibleRTTI.h" -#include "xla/tsl/concurrency/ref_count.h" +#include "xla/python/ifrt/array.h" std::map> captured_shared_ptr; -std::map> captured_rcreference; +std::map> captured_rcreference; extern "C" void reactant_release_shared(void* ptr) { captured_shared_ptr.erase(ptr); @@ -22,7 +22,7 @@ void* reactant::capture_shared(std::shared_ptr ptr) { } template<> -void* reactant::capture_rcreference(tsl::RCReference ptr) { +void* reactant::capture_rcreference(tsl::RCReference ptr) { captured_rcreference[ptr.get()] = ptr; return ptr.get(); } @@ -40,7 +40,7 @@ std::shared_ptr reactant::get_shared(void* ptr) { return captured_shared_ptr[ptr]; } -tsl::RCReference reactant::get_rcreference(void* ptr) { +tsl::RCReference reactant::get_rcreference(void* ptr) { return captured_rcreference[ptr]; } diff --git a/deps/ReactantExtra/src/memory_management.hpp b/deps/ReactantExtra/src/memory_management.hpp index 8d25971cf0..623fa42e23 100644 --- a/deps/ReactantExtra/src/memory_management.hpp +++ b/deps/ReactantExtra/src/memory_management.hpp @@ -7,6 +7,12 @@ extern "C" bool reactant_contains_shared(void* ptr); extern "C" void reactant_release_rcreference(void* ptr); extern "C" bool reactant_contains_rcreference(void* ptr); +namespace xla { + namespace ifrt { + class Array; + } +} + namespace reactant { template > inline G* capture_shared(std::shared_ptr ptr) { @@ -30,7 +36,7 @@ inline G* capture_rcreference(tsl::RCReference ptr) { } template<> -void* capture_rcreference(tsl::RCReference ptr); +void* capture_rcreference(tsl::RCReference ptr); template inline void destruct_or_release_if_shared(T* ptr) { @@ -64,7 +70,7 @@ std::shared_ptr get_or_insert_rcreference(T* ptr) { return std::reinterpret_pointer_cast(get_rcreference(ptr)); } -std::shared_ptr get_rcreference(void* ptr); +tsl::RCReference get_rcreference(void* ptr); // TODO here we might have `std::shared_ptr` but also `tsl::RCReference`. what do we put? // do we use polymorphism here and return a `Holder*` (pointer to abstract base class) or do we explicitly return a `StdSharedHolder*`/`TslRCReferenceHolder*` (pointer to derived class)? From 1bd7ad8af45501da52e63afb75ea0f57de28edc5 Mon Sep 17 00:00:00 2001 From: Ivan Ho Date: Mon, 27 Jan 2025 22:21:17 +0100 Subject: [PATCH 2/2] format --- deps/ReactantExtra/src/memory_management.hpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deps/ReactantExtra/src/memory_management.hpp b/deps/ReactantExtra/src/memory_management.hpp index 623fa42e23..7341e92efa 100644 --- a/deps/ReactantExtra/src/memory_management.hpp +++ b/deps/ReactantExtra/src/memory_management.hpp @@ -8,10 +8,10 @@ extern "C" void reactant_release_rcreference(void* ptr); extern "C" bool reactant_contains_rcreference(void* ptr); namespace xla { - namespace ifrt { - class Array; - } -} +namespace ifrt { +class Array; +} // namespace ifrt +} // namespace xla namespace reactant { template >