Skip to content

Commit 838490d

Browse files
committed
[ORC] Switch from uint8_t to char buffers for TargetProcessControl::runWrapper.
This matches WrapperFunctionResult's char buffer, cutting down on the number of pointer casts needed.
1 parent 6a071e5 commit 838490d

File tree

5 files changed

+15
-16
lines changed

5 files changed

+15
-16
lines changed

llvm/include/llvm/ExecutionEngine/Orc/OrcRPCTargetProcessControl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ class OrcRPCTargetProcessControlBase : public TargetProcessControl {
356356

357357
Expected<shared::WrapperFunctionResult>
358358
runWrapper(JITTargetAddress WrapperFnAddr,
359-
ArrayRef<uint8_t> ArgBuffer) override {
359+
ArrayRef<char> ArgBuffer) override {
360360
DEBUG_WITH_TYPE("orc", {
361361
dbgs() << "Running as wrapper function "
362362
<< formatv("{0:x16}", WrapperFnAddr) << " with "

llvm/include/llvm/ExecutionEngine/Orc/Shared/Serialization.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ template <> class SerializationTypeName<void> {
5858
static const char *getName() { return "void"; }
5959
};
6060

61+
template <> class SerializationTypeName<char> {
62+
public:
63+
static const char *getName() { return "char"; }
64+
};
65+
6166
template <> class SerializationTypeName<int8_t> {
6267
public:
6368
static const char *getName() { return "int8_t"; }

llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/OrcRPCTPCServer.h

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ class RunMain
358358
class RunWrapper
359359
: public shared::RPCFunction<RunWrapper,
360360
shared::WrapperFunctionResult(
361-
JITTargetAddress, std::vector<uint8_t>)> {
361+
JITTargetAddress, std::vector<char>)> {
362362
public:
363363
static const char *getName() { return "RunWrapper"; }
364364
};
@@ -580,14 +580,12 @@ template <typename RPCEndpointT> class OrcRPCTPCServer {
580580
ProgramNameOverride);
581581
}
582582

583-
shared::WrapperFunctionResult
584-
runWrapper(JITTargetAddress WrapperFnAddr,
585-
const std::vector<uint8_t> &ArgBuffer) {
583+
shared::WrapperFunctionResult runWrapper(JITTargetAddress WrapperFnAddr,
584+
const std::vector<char> &ArgBuffer) {
586585
using WrapperFnTy = shared::detail::CWrapperFunctionResult (*)(
587586
const char *Data, uint64_t Size);
588587
auto *WrapperFn = jitTargetAddressToFunction<WrapperFnTy>(WrapperFnAddr);
589-
return WrapperFn(reinterpret_cast<const char *>(ArgBuffer.data()),
590-
ArgBuffer.size());
588+
return WrapperFn(ArgBuffer.data(), ArgBuffer.size());
591589
}
592590

593591
void closeConnection() { Finished = true; }

llvm/include/llvm/ExecutionEngine/Orc/TargetProcessControl.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ class TargetProcessControl {
145145
/// \endcode{.cpp}
146146
///
147147
virtual Expected<shared::WrapperFunctionResult>
148-
runWrapper(JITTargetAddress WrapperFnAddr, ArrayRef<uint8_t> ArgBuffer) = 0;
148+
runWrapper(JITTargetAddress WrapperFnAddr, ArrayRef<char> ArgBuffer) = 0;
149149

150150
/// Disconnect from the target process.
151151
///
@@ -170,9 +170,7 @@ class TPCCaller {
170170
: TPC(TPC), WrapperFnAddr(WrapperFnAddr) {}
171171
Expected<shared::WrapperFunctionResult> operator()(const char *ArgData,
172172
size_t ArgSize) const {
173-
return TPC.runWrapper(
174-
WrapperFnAddr,
175-
ArrayRef<uint8_t>(reinterpret_cast<const uint8_t *>(ArgData), ArgSize));
173+
return TPC.runWrapper(WrapperFnAddr, ArrayRef<char>(ArgData, ArgSize));
176174
}
177175

178176
private:
@@ -204,8 +202,7 @@ class SelfTargetProcessControl : public TargetProcessControl,
204202
ArrayRef<std::string> Args) override;
205203

206204
Expected<shared::WrapperFunctionResult>
207-
runWrapper(JITTargetAddress WrapperFnAddr,
208-
ArrayRef<uint8_t> ArgBuffer) override;
205+
runWrapper(JITTargetAddress WrapperFnAddr, ArrayRef<char> ArgBuffer) override;
209206

210207
Error disconnect() override;
211208

llvm/lib/ExecutionEngine/Orc/TargetProcessControl.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,11 @@ SelfTargetProcessControl::runAsMain(JITTargetAddress MainFnAddr,
104104

105105
Expected<shared::WrapperFunctionResult>
106106
SelfTargetProcessControl::runWrapper(JITTargetAddress WrapperFnAddr,
107-
ArrayRef<uint8_t> ArgBuffer) {
107+
ArrayRef<char> ArgBuffer) {
108108
using WrapperFnTy = shared::detail::CWrapperFunctionResult (*)(
109109
const char *Data, uint64_t Size);
110110
auto *WrapperFn = jitTargetAddressToFunction<WrapperFnTy>(WrapperFnAddr);
111-
return WrapperFn(reinterpret_cast<const char *>(ArgBuffer.data()),
112-
ArgBuffer.size());
111+
return WrapperFn(ArgBuffer.data(), ArgBuffer.size());
113112
}
114113

115114
Error SelfTargetProcessControl::disconnect() { return Error::success(); }

0 commit comments

Comments
 (0)