[llvm] [orc-rt] Add SPS serialization support for size_t. (PR #162214)
Lang Hames via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 6 19:32:03 PDT 2025
https://github.com/lhames created https://github.com/llvm/llvm-project/pull/162214
Serialize size_ts to uint64_t.
>From 29a5331ba5e1c9ff3e079f7f3bed9ea2cd915c8c Mon Sep 17 00:00:00 2001
From: Lang Hames <lhames at gmail.com>
Date: Tue, 7 Oct 2025 12:43:51 +1100
Subject: [PATCH] [orc-rt] Add SPS serialization support for size_t.
Serialize size_ts to uint64_t.
---
.../orc-rt/SimplePackedSerialization.h | 22 +++++++++++++++++++
.../SimplePackedSerializationTest.cpp | 5 +++++
2 files changed, 27 insertions(+)
diff --git a/orc-rt/include/orc-rt/SimplePackedSerialization.h b/orc-rt/include/orc-rt/SimplePackedSerialization.h
index 7ac1cf2367dca..f60ccad666ab1 100644
--- a/orc-rt/include/orc-rt/SimplePackedSerialization.h
+++ b/orc-rt/include/orc-rt/SimplePackedSerialization.h
@@ -172,6 +172,28 @@ class SPSSerializationTraits<
}
};
+class SPSSize;
+
+/// SPSSize is serializable to/from size_t. Wire size is 64-bits.
+template <> class SPSSerializationTraits<SPSSize, size_t> {
+public:
+ static size_t size(const size_t &Value) {
+ return SPSArgList<uint64_t>::size(static_cast<uint64_t>(Value));
+ }
+ static bool serialize(SPSOutputBuffer &OB, const size_t &Value) {
+ return SPSArgList<uint64_t>::serialize(OB, static_cast<uint64_t>(Value));
+ }
+ static bool deserialize(SPSInputBuffer &IB, size_t &Value) {
+ uint64_t Tmp;
+ if (!SPSArgList<uint64_t>::deserialize(IB, Tmp))
+ return false;
+ if (Tmp > std::numeric_limits<size_t>::max())
+ return false;
+ Value = Tmp;
+ return true;
+ }
+};
+
/// Any empty placeholder suitable as a substitute for void when deserializing
class SPSEmpty {};
diff --git a/orc-rt/unittests/SimplePackedSerializationTest.cpp b/orc-rt/unittests/SimplePackedSerializationTest.cpp
index 8b4a8d2f64d56..c3df499da510f 100644
--- a/orc-rt/unittests/SimplePackedSerializationTest.cpp
+++ b/orc-rt/unittests/SimplePackedSerializationTest.cpp
@@ -103,6 +103,11 @@ TEST(SimplePackedSerializationTest, UInt64Serialization) {
testFixedIntegralTypeSerialization<uint64_t>();
}
+TEST(SimplePackedSerializationTest, SizeTSerialization) {
+ size_t V = 42;
+ blobSerializationRoundTrip<SPSSize, size_t>(V);
+}
+
TEST(SimplePackedSerializationTest, SequenceSerialization) {
std::vector<int32_t> V({1, 2, -47, 139});
blobSerializationRoundTrip<SPSSequence<int32_t>, std::vector<int32_t>>(V);
More information about the llvm-commits
mailing list