You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by tq...@apache.org on 2025/04/22 14:43:27 UTC
(tvm) 04/06: Update string to make use of the new ffi::String convention
This is an automated email from the ASF dual-hosted git repository.
tqchen pushed a commit to branch refactor-s2
in repository https://gitbox.apache.org/repos/asf/tvm.git
commit 2d5791a0e49c454352167c126b97120197ba68da
Author: tqchen <ti...@gmail.com>
AuthorDate: Tue Apr 22 10:18:58 2025 -0400
Update string to make use of the new ffi::String convention
---
src/contrib/msc/core/printer/msc_base_printer.cc | 2 +-
src/meta_schedule/database/database_utils.cc | 4 ++--
src/node/structural_hash.cc | 10 +++++-----
src/runtime/disco/protocol.h | 12 ++++++------
src/runtime/rpc/rpc_local_session.cc | 6 +++---
src/runtime/rpc/rpc_module.cc | 2 +-
src/script/printer/doc_printer/python_doc_printer.cc | 2 +-
src/tir/schedule/instruction.cc | 2 +-
src/tir/schedule/instruction_traits.h | 2 +-
src/tir/schedule/trace.cc | 12 ++++++------
10 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/src/contrib/msc/core/printer/msc_base_printer.cc b/src/contrib/msc/core/printer/msc_base_printer.cc
index 4b70d54e80..dac732aaa6 100644
--- a/src/contrib/msc/core/printer/msc_base_printer.cc
+++ b/src/contrib/msc/core/printer/msc_base_printer.cc
@@ -114,7 +114,7 @@ void MSCBasePrinter::PrintTypedDoc(const LiteralDoc& doc) {
output_ << float_imm->value;
}
} else if (const auto* string_obj = value.as<StringObj>()) {
- output_ << "\"" << tvm::support::StrEscape(string_obj->bytes.data, string_obj->bytes.size)
+ output_ << "\"" << tvm::support::StrEscape(string_obj->data, string_obj->size)
<< "\"";
} else {
LOG(FATAL) << "TypeError: Unsupported literal value type: " << value.GetTypeKey();
diff --git a/src/meta_schedule/database/database_utils.cc b/src/meta_schedule/database/database_utils.cc
index e24fd15551..f79e91cefc 100644
--- a/src/meta_schedule/database/database_utils.cc
+++ b/src/meta_schedule/database/database_utils.cc
@@ -44,7 +44,7 @@ void JSONDumps(Any json_obj, std::ostringstream& os) {
FloatImm float_imm = *std::move(opt_float_imm);
os << std::setprecision(20) << float_imm->value;
} else if (const auto* str = json_obj.as<runtime::StringObj>()) {
- os << '"' << support::StrEscape(str->bytes.data, str->bytes.size) << '"';
+ os << '"' << support::StrEscape(str->data, str->size) << '"';
} else if (const auto* array = json_obj.as<ffi::ArrayNode>()) {
os << "[";
int n = array->size();
@@ -75,7 +75,7 @@ void JSONDumps(Any json_obj, std::ostringstream& os) {
if (i != 0) {
os << ",";
}
- os << '"' << support::StrEscape(kv.first->bytes.data, kv.first->bytes.size) << '"';
+ os << '"' << support::StrEscape(kv.first->data, kv.first->size) << '"';
os << ":";
JSONDumps(kv.second, os);
}
diff --git a/src/node/structural_hash.cc b/src/node/structural_hash.cc
index e81bf66fb9..4c864d6613 100644
--- a/src/node/structural_hash.cc
+++ b/src/node/structural_hash.cc
@@ -317,15 +317,15 @@ struct StringObjTrait {
static void SHashReduce(const runtime::StringObj* key, SHashReducer hash_reduce) {
hash_reduce->SHashReduceHashedValue(
- ffi::details::StableHashBytes(key->bytes.data, key->bytes.size));
+ ffi::details::StableHashBytes(key->data, key->size));
}
static bool SEqualReduce(const runtime::StringObj* lhs, const runtime::StringObj* rhs,
SEqualReducer equal) {
if (lhs == rhs) return true;
- if (lhs->bytes.size != rhs->bytes.size) return false;
- if (lhs->bytes.data == rhs->bytes.data) return true;
- return std::memcmp(lhs->bytes.data, rhs->bytes.data, lhs->bytes.size) == 0;
+ if (lhs->size != rhs->size) return false;
+ if (lhs->data == rhs->data) return true;
+ return std::memcmp(lhs->data, rhs->data, lhs->size) == 0;
}
};
@@ -348,7 +348,7 @@ TVM_REGISTER_REFLECTION_VTABLE(runtime::StringObj, StringObjTrait)
TVM_STATIC_IR_FUNCTOR(ReprPrinter, vtable)
.set_dispatch<runtime::StringObj>([](const ObjectRef& node, ReprPrinter* p) {
auto* op = static_cast<const runtime::StringObj*>(node.get());
- p->stream << '"' << support::StrEscape(op->bytes.data, op->bytes.size) << '"';
+ p->stream << '"' << support::StrEscape(op->data, op->size) << '"';
});
struct ModuleNodeTrait {
diff --git a/src/runtime/disco/protocol.h b/src/runtime/disco/protocol.h
index 591a690e6e..6bcba6e470 100644
--- a/src/runtime/disco/protocol.h
+++ b/src/runtime/disco/protocol.h
@@ -125,10 +125,10 @@ inline uint64_t DiscoProtocol<SubClassType>::GetObjectBytes(Object* obj) {
if (obj->IsInstance<DRefObj>()) {
return sizeof(uint32_t) + sizeof(int64_t);
} else if (obj->IsInstance<StringObj>()) {
- uint64_t size = static_cast<StringObj*>(obj)->bytes.size;
+ uint64_t size = static_cast<StringObj*>(obj)->size;
return sizeof(uint32_t) + sizeof(uint64_t) + size * sizeof(char);
} else if (obj->IsInstance<ffi::BytesObj>()) {
- uint64_t size = static_cast<ffi::BytesObj*>(obj)->bytes.size;
+ uint64_t size = static_cast<ffi::BytesObj*>(obj)->size;
return sizeof(uint32_t) + sizeof(uint64_t) + size * sizeof(char);
} else if (obj->IsInstance<ShapeTupleObj>()) {
uint64_t ndim = static_cast<ShapeTupleObj*>(obj)->size;
@@ -150,13 +150,13 @@ inline void DiscoProtocol<SubClassType>::WriteObject(Object* obj) {
} else if (obj->IsInstance<StringObj>()) {
StringObj* str = static_cast<StringObj*>(obj);
self->template Write<uint32_t>(TypeIndex::kRuntimeString);
- self->template Write<uint64_t>(str->bytes.size);
- self->template WriteArray<char>(str->bytes.data, str->bytes.size);
+ self->template Write<uint64_t>(str->size);
+ self->template WriteArray<char>(str->data, str->size);
} else if (obj->IsInstance<ffi::BytesObj>()) {
ffi::BytesObj* bytes = static_cast<ffi::BytesObj*>(obj);
self->template Write<uint32_t>(ffi::TypeIndex::kTVMFFIBytes);
- self->template Write<uint64_t>(bytes->bytes.size);
- self->template WriteArray<char>(bytes->bytes.data, bytes->bytes.size);
+ self->template Write<uint64_t>(bytes->size);
+ self->template WriteArray<char>(bytes->data, bytes->size);
} else if (obj->IsInstance<ShapeTupleObj>()) {
ShapeTupleObj* shape = static_cast<ShapeTupleObj*>(obj);
self->template Write<uint32_t>(TypeIndex::kRuntimeShapeTuple);
diff --git a/src/runtime/rpc/rpc_local_session.cc b/src/runtime/rpc/rpc_local_session.cc
index 4dfdc957fd..a3bb547eba 100644
--- a/src/runtime/rpc/rpc_local_session.cc
+++ b/src/runtime/rpc/rpc_local_session.cc
@@ -68,14 +68,14 @@ void LocalSession::EncodeReturn(TVMRetValue rv, const FEncodeReturn& encode_retu
// always pass bytes as byte array
packed_args[0] = static_cast<int32_t>(kTVMBytes);
TVMFFIByteArray byte_arr;
- byte_arr.data = bytes->bytes.data;
- byte_arr.size = bytes->bytes.size;
+ byte_arr.data = bytes->data;
+ byte_arr.size = bytes->size;
packed_args[1] = &byte_arr;
encode_return(ffi::PackedArgs(packed_args, 2));
} else if (const auto* str = rv.as<ffi::StringObj>()) {
// always pass bytes as raw string
packed_args[0] = static_cast<int32_t>(kTVMStr);
- packed_args[1] = str->bytes.data;
+ packed_args[1] = str->data;
encode_return(ffi::PackedArgs(packed_args, 2));
} else if (rv.as<ffi::ObjectRef>()) {
TVMFFIAny ret_any = ffi::details::AnyUnsafe::MoveAnyToTVMFFIAny(std::move(rv));
diff --git a/src/runtime/rpc/rpc_module.cc b/src/runtime/rpc/rpc_module.cc
index e6afa711a6..e2a7694c5e 100644
--- a/src/runtime/rpc/rpc_module.cc
+++ b/src/runtime/rpc/rpc_module.cc
@@ -93,7 +93,7 @@ class RPCWrappedFunc : public Object {
// to their remote variant.
for (int i = 0; i < args.size(); ++i) {
if (const auto* str = args[i].as<ffi::StringObj>()) {
- packed_args[i] = str->bytes.data;
+ packed_args[i] = str->data;
continue;
}
packed_args[i] = args[i];
diff --git a/src/script/printer/doc_printer/python_doc_printer.cc b/src/script/printer/doc_printer/python_doc_printer.cc
index 519fced395..2bb8e2a1dc 100644
--- a/src/script/printer/doc_printer/python_doc_printer.cc
+++ b/src/script/printer/doc_printer/python_doc_printer.cc
@@ -351,7 +351,7 @@ void PythonDocPrinter::PrintTypedDoc(const LiteralDoc& doc) {
}
} else if (const auto* string_obj = value.as<ffi::StringObj>()) {
- output_ << "\"" << support::StrEscape(string_obj->bytes.data, string_obj->bytes.size) << "\"";
+ output_ << "\"" << support::StrEscape(string_obj->data, string_obj->size) << "\"";
} else {
LOG(FATAL) << "TypeError: Unsupported literal value type: " << value->GetTypeKey();
}
diff --git a/src/tir/schedule/instruction.cc b/src/tir/schedule/instruction.cc
index 74f3c443fc..8e1bce285d 100644
--- a/src/tir/schedule/instruction.cc
+++ b/src/tir/schedule/instruction.cc
@@ -66,7 +66,7 @@ TVM_STATIC_IR_FUNCTOR(ReprPrinter, vtable)
} else if (obj.as<BlockRVNode>() || obj.as<LoopRVNode>()) {
inputs.push_back(String("_"));
} else if (const auto* str_obj = obj.as<StringObj>()) {
- inputs.push_back(String('"' + std::string(str_obj->bytes.data) + '"'));
+ inputs.push_back(String('"' + std::string(str_obj->data) + '"'));
} else if (obj.type_index() < ffi::TypeIndex::kTVMFFIStaticObjectBegin) {
inputs.push_back(obj);
} else if (obj.as<IntImmNode>() || obj.as<FloatImmNode>()) {
diff --git a/src/tir/schedule/instruction_traits.h b/src/tir/schedule/instruction_traits.h
index fe3158894e..53deb7457c 100644
--- a/src/tir/schedule/instruction_traits.h
+++ b/src/tir/schedule/instruction_traits.h
@@ -419,7 +419,7 @@ inline void PythonAPICall::AsPythonString(const Any& obj, std::ostream& os) {
if (obj == nullptr) {
os << "None";
} else if (const auto* str = obj.as<ffi::StringObj>()) {
- os << str->bytes.data;
+ os << str->data;
} else if (const auto opt_int_imm = obj.as<IntImm>()) {
os << (*opt_int_imm)->value;
} else if (const auto opt_float_imm = obj.as<FloatImm>()) {
diff --git a/src/tir/schedule/trace.cc b/src/tir/schedule/trace.cc
index 199b91d639..4c72ce4d1b 100644
--- a/src/tir/schedule/trace.cc
+++ b/src/tir/schedule/trace.cc
@@ -122,7 +122,7 @@ Array<Any> TranslateInputRVs(
}
} else if (const auto* str_obj = input.as<StringObj>()) {
// Case 2. string => "content"
- results.push_back(String('"' + std::string(str_obj->bytes.data) + '"'));
+ results.push_back(String('"' + std::string(str_obj->data) + '"'));
} else if (input.as<IntImmNode>() || input.as<FloatImmNode>()) {
// Case 3. integer or floating-point number
results.push_back(input);
@@ -177,9 +177,9 @@ Array<Any> TranslateInputRVs(const Array<Any>& inputs,
}
const auto* str = input.as<ffi::StringObj>();
CHECK(str) << "TypeError: Expect String, but gets: " << input.GetTypeKey();
- CHECK_GT(str->bytes.size, 0) << "ValueError: Empty string is not allowed in input names";
- const char* name = str->bytes.data;
- int64_t size = str->bytes.size;
+ CHECK_GT(str->size, 0) << "ValueError: Empty string is not allowed in input names";
+ const char* name = str->data;
+ int64_t size = str->size;
if (name[0] == '{' && name[size - 1] == '}') {
Any obj = LoadJSON(name);
// Case 6. IndexMap
@@ -359,7 +359,7 @@ Array<String> TraceNode::AsPython(bool remove_postproc) const {
attrs.reserve(inst->attrs.size());
for (const Any& obj : inst->attrs) {
if (const auto* str = obj.as<StringObj>()) {
- attrs.push_back(String('"' + std::string(str->bytes.data) + '"'));
+ attrs.push_back(String('"' + std::string(str->data) + '"'));
} else {
attrs.push_back(obj);
}
@@ -424,7 +424,7 @@ void Trace::ApplyJSONToSchedule(ObjectRef json, Schedule sch) {
const auto* arr = inst_entry.as<ArrayNode>();
ICHECK(arr && arr->size() == 4);
const auto* arr0 = arr->at(0).as<StringObj>();
- kind = InstructionKind::Get(arr0->bytes.data);
+ kind = InstructionKind::Get(arr0->data);
inputs = arr->at(1);
attrs = arr->at(2);
outputs = arr->at(3);