summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorkaizhangNV <149626564+kaizhangNV@users.noreply.github.com>2024-08-27 11:53:16 -0500
committerGitHub <noreply@github.com>2024-08-27 09:53:16 -0700
commit59c23b96b3649e77f5428c32e47b4401a802c604 (patch)
tree54fe251ddbdbbfd03967f5a12eeed56480184e5c /source
parentf0ba756c2f982aac8095ff0928d048fc97548315 (diff)
Migrate examples (#4920)
* Migrate cpu-hello-world to new slang API Migrate cpu-hello-world to new slang API, and also convert this example as one of the unit test. * Add 'shader-object' to slang-unit-test * Convert ray-tracing example into unit-test Convert ray-tracing example into unit-test * Fix some replay bugs: - Wrong decode type in 'getEntryPointHostCallable'. - Mistakes in computing the output buffer size. - Wrong decode type in array size in specialize() call. - When capture entrypoint, we should increase the reference count for the allocated entrypoint recorder object, because that is allocated by record layer, it should be owned by the layer, user should not be able to free it. - Improve json consumer on the prelude text. * Test verify change: In our test, we add a "callIdx" string at beginning of the hash-code string, as there could be more than one modules in the example, so they could call 'getEntryPointHash' multiple times, in order for the test can identify them, add "callIdx: <number>" as the key word.
Diffstat (limited to 'source')
-rw-r--r--source/slang-record-replay/record/slang-module.cpp13
-rw-r--r--source/slang-record-replay/record/slang-module.h3
-rw-r--r--source/slang-record-replay/record/slang-session.cpp12
-rw-r--r--source/slang-record-replay/record/slang-session.h3
-rw-r--r--source/slang-record-replay/replay/json-consumer.cpp15
-rw-r--r--source/slang-record-replay/replay/parameter-decoder.h17
-rw-r--r--source/slang-record-replay/replay/replay-consumer.cpp3
-rw-r--r--source/slang-record-replay/replay/replay-consumer.h1
-rw-r--r--source/slang-record-replay/replay/slang-decoder.cpp64
9 files changed, 76 insertions, 55 deletions
diff --git a/source/slang-record-replay/record/slang-module.cpp b/source/slang-record-replay/record/slang-module.cpp
index b116fa99b..3acda5d22 100644
--- a/source/slang-record-replay/record/slang-module.cpp
+++ b/source/slang-record-replay/record/slang-module.cpp
@@ -88,8 +88,9 @@ namespace SlangRecord
if (*outEntryPoint)
{
- EntryPointRecorder* entryPointRecord = m_mapEntryPointToRecord.tryGetValue(*outEntryPoint);
- if (!entryPointRecord)
+ EntryPointRecorder* entryPointRecord = nullptr;
+ bool ret = m_mapEntryPointToRecord.tryGetValue(*outEntryPoint, entryPointRecord);
+ if (!ret)
{
SLANG_RECORD_ASSERT(!"Entrypoint not found in mapEntryPointToRecord");
}
@@ -490,12 +491,14 @@ namespace SlangRecord
EntryPointRecorder* ModuleRecorder::getEntryPointRecorder(slang::IEntryPoint* entryPoint)
{
EntryPointRecorder* entryPointRecord = nullptr;
- entryPointRecord = m_mapEntryPointToRecord.tryGetValue(entryPoint);
- if (!entryPointRecord)
+ bool ret = m_mapEntryPointToRecord.tryGetValue(entryPoint, entryPointRecord);
+ if (!ret)
{
entryPointRecord = new EntryPointRecorder(entryPoint, m_recordManager);
Slang::ComPtr<EntryPointRecorder> result(entryPointRecord);
- m_mapEntryPointToRecord.add(entryPoint, *result.detach());
+
+ m_entryPointsRecordAllocation.add(result);
+ m_mapEntryPointToRecord.add(entryPoint, result.detach());
}
return entryPointRecord;
}
diff --git a/source/slang-record-replay/record/slang-module.h b/source/slang-record-replay/record/slang-module.h
index 1b1cc5de9..ed684c680 100644
--- a/source/slang-record-replay/record/slang-module.h
+++ b/source/slang-record-replay/record/slang-module.h
@@ -97,7 +97,8 @@ namespace SlangRecord
// `IEntryPoint` can only be created from 'IModule', so we need to record it in
// this class, and create a map such that we don't create new `EntryPointRecorder`
// for the same `IEntryPoint`.
- Dictionary<slang::IEntryPoint*, EntryPointRecorder> m_mapEntryPointToRecord;
+ Dictionary<slang::IEntryPoint*, EntryPointRecorder*> m_mapEntryPointToRecord;
+ List<ComPtr<EntryPointRecorder>> m_entryPointsRecordAllocation;
};
} // namespace SlangRecord
diff --git a/source/slang-record-replay/record/slang-session.cpp b/source/slang-record-replay/record/slang-session.cpp
index 3eb944082..f38d18aa1 100644
--- a/source/slang-record-replay/record/slang-session.cpp
+++ b/source/slang-record-replay/record/slang-session.cpp
@@ -444,8 +444,9 @@ namespace SlangRecord
if (pModule)
{
- ModuleRecorder* moduleRecord = m_mapModuleToRecord.tryGetValue(pModule);
- if (!moduleRecord)
+ ModuleRecorder* moduleRecord = nullptr;
+ bool ret = m_mapModuleToRecord.tryGetValue(pModule, moduleRecord);
+ if (!ret)
{
SLANG_RECORD_ASSERT(!"Module not found in mapModuleToRecord");
}
@@ -466,12 +467,13 @@ namespace SlangRecord
ModuleRecorder* SessionRecorder::getModuleRecorder(slang::IModule* module)
{
ModuleRecorder* moduleRecord = nullptr;
- moduleRecord = m_mapModuleToRecord.tryGetValue(module);
- if (!moduleRecord)
+ bool ret = m_mapModuleToRecord.tryGetValue(module, moduleRecord);
+ if (!ret)
{
moduleRecord = new ModuleRecorder(module, m_recordManager);
Slang::ComPtr<ModuleRecorder> result(moduleRecord);
- m_mapModuleToRecord.add(module, *result.detach());
+ m_moduleRecordersAlloation.add(result);
+ m_mapModuleToRecord.add(module, result.detach());
}
return moduleRecord;
}
diff --git a/source/slang-record-replay/record/slang-session.h b/source/slang-record-replay/record/slang-session.h
index bc56003a9..644c975ff 100644
--- a/source/slang-record-replay/record/slang-session.h
+++ b/source/slang-record-replay/record/slang-session.h
@@ -101,7 +101,8 @@ namespace SlangRecord
Slang::ComPtr<slang::ISession> m_actualSession;
uint64_t m_sessionHandle = 0;
- Dictionary<slang::IModule*, ModuleRecorder> m_mapModuleToRecord;
+ Dictionary<slang::IModule*, ModuleRecorder*> m_mapModuleToRecord;
+ List<ComPtr<ModuleRecorder>> m_moduleRecordersAlloation;
RecordManager* m_recordManager = nullptr;
};
}
diff --git a/source/slang-record-replay/replay/json-consumer.cpp b/source/slang-record-replay/replay/json-consumer.cpp
index 456988bdb..455a36627 100644
--- a/source/slang-record-replay/replay/json-consumer.cpp
+++ b/source/slang-record-replay/replay/json-consumer.cpp
@@ -216,7 +216,7 @@ namespace SlangRecord
for(int i = 0; i < specializationArgCount; i++)
{
bool isLastField = (i == specializationArgCount - 1);
- ScopeWritterForKey scopeWritterForArg(&builder, &indent, Slang::StringUtil::makeStringWithFormat("[%d]\n", i), isLastField);
+ ScopeWritterForKey scopeWritterForArg(&builder, &indent, Slang::StringUtil::makeStringWithFormat("[%d]", i), isLastField);
{
_writePair(builder, indent, "kind", SpecializationArgKindToString(specializationArgs[i].kind));
_writePairNoComma(builder, indent, "type", Slang::StringUtil::makeStringWithFormat("0x%X", specializationArgs[i].type));
@@ -473,13 +473,11 @@ namespace SlangRecord
SANITY_CHECK();
Slang::StringBuilder builder;
int indent = 0;
- _writeString(builder, indent, "GlobalFunction::createGlobalSession: {\n");
+
{
- indent++;
+ ScopeWritterForKey scopeWritter(&builder, &indent, "IGlobalSession::createGlobalSession");
_writePairNoComma(builder, indent, "outGlobalSession", Slang::StringUtil::makeStringWithFormat("0x%X", outGlobalSessionId));
- indent--;
}
- _writeString(builder, indent, "}\n");
m_fileStream.write(builder.produceString().begin(), builder.produceString().getLength());
m_fileStream.flush();
@@ -490,7 +488,6 @@ namespace SlangRecord
SANITY_CHECK();
Slang::StringBuilder builder;
int indent = 0;
- _writeString(builder, indent, "IGlobalSession::createSession: {\n");
{
ScopeWritterForKey scopeWritter(&builder, &indent, "IGlobalSession::createSession");
@@ -633,14 +630,14 @@ namespace SlangRecord
SANITY_CHECK();
Slang::StringBuilder builder;
int indent = 0;
- _writeString(builder, indent, "IGlobalSession::setLanguagePrelude: {\n");
{
ScopeWritterForKey scopeWritter(&builder, &indent, "IGlobalSession::setLanguagePrelude");
{
_writePair(builder, indent, "this", Slang::StringUtil::makeStringWithFormat("0x%X", objectId));
_writePair(builder, indent, "sourceLanguage", SlangSourceLanguageToString(inSourceLanguage));
- _writePairNoComma(builder, indent, "preludeText", (prelude != nullptr ? prelude : "nullptr"));
+ _writePairNoComma(builder, indent, "preludeText", Slang::StringUtil::makeStringWithFormat("\"%s\"",
+ prelude != nullptr ? prelude : "nullptr"));
}
}
@@ -1231,7 +1228,7 @@ namespace SlangRecord
_writePair(builder, indent, "type", Slang::StringUtil::makeStringWithFormat("0x%X", typeId));
_writePair(builder, indent, "rules", LayoutRulesToString(rules));
_writePair(builder, indent, "outDiagnostics", outDiagnosticsId);
- _writePair(builder, indent, "retTypeReflectionId", outTypeLayoutReflectionId);
+ _writePairNoComma(builder, indent, "retTypeReflectionId", outTypeLayoutReflectionId);
}
}
diff --git a/source/slang-record-replay/replay/parameter-decoder.h b/source/slang-record-replay/replay/parameter-decoder.h
index 5d6f40987..d1deca3eb 100644
--- a/source/slang-record-replay/replay/parameter-decoder.h
+++ b/source/slang-record-replay/replay/parameter-decoder.h
@@ -54,7 +54,10 @@ namespace SlangRecord
template <typename T>
static size_t decodeValueArray(const uint8_t* buffer, int64_t bufferSize, ValueDecoder<T>* valueArray, size_t count)
{
- SLANG_RECORD_ASSERT((buffer != nullptr) && (bufferSize > 0));
+ if (count == 0 && bufferSize == 0)
+ {
+ return 0;
+ }
size_t readByte = 0;
for (size_t i = 0; i < count; ++i)
@@ -66,6 +69,10 @@ namespace SlangRecord
static size_t decodeStringArray(const uint8_t* buffer, int64_t bufferSize, char** outputArray, size_t count)
{
+ if (count == 0 && bufferSize == 0)
+ {
+ return 0;
+ }
SLANG_RECORD_ASSERT((buffer != nullptr) && (bufferSize > 0));
size_t readByte = 0;
@@ -83,6 +90,10 @@ namespace SlangRecord
template <typename T>
static size_t decodeStructArray(const uint8_t* buffer, int64_t bufferSize, T* outputArray, size_t count)
{
+ if (count == 0 && bufferSize == 0)
+ {
+ return 0;
+ }
SLANG_RECORD_ASSERT((buffer != nullptr) && (bufferSize > 0));
size_t bufferRead = 0;
@@ -97,6 +108,10 @@ namespace SlangRecord
static size_t decodeAddressArray(const uint8_t* buffer, int64_t bufferSize, uint64_t* addressArray, size_t count)
{
+ if (count == 0 && bufferSize == 0)
+ {
+ return 0;
+ }
SLANG_RECORD_ASSERT((buffer != nullptr) && (bufferSize > 0));
size_t bufferRead = 0;
diff --git a/source/slang-record-replay/replay/replay-consumer.cpp b/source/slang-record-replay/replay/replay-consumer.cpp
index 7710b50e9..01de2f828 100644
--- a/source/slang-record-replay/replay/replay-consumer.cpp
+++ b/source/slang-record-replay/replay/replay-consumer.cpp
@@ -118,7 +118,8 @@ namespace SlangRecord
{
uint8_t* buffer = (uint8_t*)outHash->getBufferPointer();
Slang::StringBuilder strBuilder;
- strBuilder << "entrypoint: "<< entryPointIndex << ", target: " << targetIndex << ", hash: ";
+ strBuilder << "callIdx: " << m_globalCounter << ", entrypoint: "<< entryPointIndex << ", target: " << targetIndex << ", hash: ";
+ m_globalCounter++;
for (size_t i = 0; i < outHash->getBufferSize(); i++)
{
diff --git a/source/slang-record-replay/replay/replay-consumer.h b/source/slang-record-replay/replay/replay-consumer.h
index 8a38d6202..5618598e1 100644
--- a/source/slang-record-replay/replay/replay-consumer.h
+++ b/source/slang-record-replay/replay/replay-consumer.h
@@ -52,6 +52,7 @@ namespace SlangRecord
}
Slang::Dictionary<ObjectID, void*>& m_objectMap;
+ uint32_t m_globalCounter = 0;
};
class ReplayConsumer : public IDecoderConsumer
diff --git a/source/slang-record-replay/replay/slang-decoder.cpp b/source/slang-record-replay/replay/slang-decoder.cpp
index e30bd4584..30d182729 100644
--- a/source/slang-record-replay/replay/slang-decoder.cpp
+++ b/source/slang-record-replay/replay/slang-decoder.cpp
@@ -872,7 +872,7 @@ namespace SlangRecord
ObjectID outDiagnosticsId = 0;
ObjectID outTypeReflectionId = 0;
- readByte = ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize - readByte, outDiagnosticsId);
+ readByte = ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize, outDiagnosticsId);
readByte += ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize - readByte, outTypeReflectionId);
for (auto consumer: m_consumers)
@@ -895,7 +895,7 @@ namespace SlangRecord
ObjectID outDiagnosticsId = 0;
ObjectID outTypeLayoutReflectionId = 0;
- readByte = ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize - readByte, outDiagnosticsId);
+ readByte = ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize, outDiagnosticsId);
readByte += ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize - readByte, outTypeLayoutReflectionId);
for (auto consumer: m_consumers)
@@ -916,7 +916,7 @@ namespace SlangRecord
ObjectID outDiagnosticsId = 0;
ObjectID outTypeReflectionId = 0;
- readByte = ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize - readByte, outDiagnosticsId);
+ readByte = ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize, outDiagnosticsId);
readByte += ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.parameterBufferSize - readByte, outTypeReflectionId);
for (auto consumer: m_consumers)
@@ -1005,7 +1005,7 @@ namespace SlangRecord
ObjectID outDiagnosticsId = 0;
ObjectID outConformanceId = 0;
- readByte = ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize - readByte, outConformanceId);
+ readByte = ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize, outConformanceId);
readByte += ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize - readByte, outDiagnosticsId);
for (auto consumer: m_consumers)
@@ -1256,8 +1256,8 @@ namespace SlangRecord
slangRecordLog(LogLevel::Error, "%s: The shader reflection interfaces are not recordd\n", __PRETTY_FUNCTION__);
size_t readByte = 0;
- uint32_t specializationArgCount = 0;
- readByte = ParameterDecoder::decodeUint32(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, specializationArgCount);
+ int64_t specializationArgCount = 0;
+ readByte = ParameterDecoder::decodeInt64(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, specializationArgCount);
std::vector<slang::SpecializationArg> specializationArgs;
@@ -1299,15 +1299,15 @@ namespace SlangRecord
void SlangDecoder::IModule_getEntryPointHostCallable(ObjectID objectId, ParameterBlock const& parameterBlock)
{
size_t readByte = 0;
- int64_t entryPointIndex = 0;
- int64_t targetIndex = 0;
- readByte = ParameterDecoder::decodeInt64(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, entryPointIndex);
- readByte += ParameterDecoder::decodeInt64(parameterBlock.parameterBuffer + readByte, parameterBlock.parameterBufferSize - readByte, targetIndex);
+ int32_t entryPointIndex = 0;
+ int32_t targetIndex = 0;
+ readByte = ParameterDecoder::decodeInt32(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, entryPointIndex);
+ readByte += ParameterDecoder::decodeInt32(parameterBlock.parameterBuffer + readByte, parameterBlock.parameterBufferSize - readByte, targetIndex);
ObjectID outSharedLibraryId = 0;
ObjectID outDiagnosticsId = 0;
readByte = ParameterDecoder::decodeAddress(parameterBlock.outputBuffer, parameterBlock.outputBufferSize, outSharedLibraryId);
- readByte += ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.parameterBufferSize - readByte, outDiagnosticsId);
+ readByte += ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize - readByte, outDiagnosticsId);
for (auto consumer: m_consumers)
{
@@ -1465,8 +1465,8 @@ namespace SlangRecord
slangRecordLog(LogLevel::Error, "%s: The shader reflection interfaces are not recordd\n", __PRETTY_FUNCTION__);
size_t readByte = 0;
- uint32_t specializationArgCount = 0;
- readByte = ParameterDecoder::decodeUint32(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, specializationArgCount);
+ int64_t specializationArgCount = 0;
+ readByte = ParameterDecoder::decodeInt64(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, specializationArgCount);
std::vector<slang::SpecializationArg> specializationArgs;
@@ -1508,15 +1508,15 @@ namespace SlangRecord
void SlangDecoder::IEntryPoint_getEntryPointHostCallable(ObjectID objectId, ParameterBlock const& parameterBlock)
{
size_t readByte = 0;
- int64_t entryPointIndex = 0;
- int64_t targetIndex = 0;
- readByte = ParameterDecoder::decodeInt64(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, entryPointIndex);
- readByte += ParameterDecoder::decodeInt64(parameterBlock.parameterBuffer + readByte, parameterBlock.parameterBufferSize - readByte, targetIndex);
+ int32_t entryPointIndex = 0;
+ int32_t targetIndex = 0;
+ readByte = ParameterDecoder::decodeInt32(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, entryPointIndex);
+ readByte += ParameterDecoder::decodeInt32(parameterBlock.parameterBuffer + readByte, parameterBlock.parameterBufferSize - readByte, targetIndex);
ObjectID outSharedLibraryId = 0;
ObjectID outDiagnosticsId = 0;
readByte = ParameterDecoder::decodeAddress(parameterBlock.outputBuffer, parameterBlock.outputBufferSize, outSharedLibraryId);
- readByte += ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.parameterBufferSize - readByte, outDiagnosticsId);
+ readByte += ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize - readByte, outDiagnosticsId);
for (auto consumer: m_consumers)
{
@@ -1674,8 +1674,8 @@ namespace SlangRecord
slangRecordLog(LogLevel::Error, "%s: The shader reflection interfaces are not recordd\n", __PRETTY_FUNCTION__);
size_t readByte = 0;
- uint32_t specializationArgCount = 0;
- readByte = ParameterDecoder::decodeUint32(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, specializationArgCount);
+ int64_t specializationArgCount = 0;
+ readByte = ParameterDecoder::decodeInt64(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, specializationArgCount);
std::vector<slang::SpecializationArg> specializationArgs;
@@ -1717,15 +1717,15 @@ namespace SlangRecord
void SlangDecoder::ICompositeComponentType_getEntryPointHostCallable(ObjectID objectId, ParameterBlock const& parameterBlock)
{
size_t readByte = 0;
- int64_t entryPointIndex = 0;
- int64_t targetIndex = 0;
- readByte = ParameterDecoder::decodeInt64(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, entryPointIndex);
- readByte += ParameterDecoder::decodeInt64(parameterBlock.parameterBuffer + readByte, parameterBlock.parameterBufferSize - readByte, targetIndex);
+ int32_t entryPointIndex = 0;
+ int32_t targetIndex = 0;
+ readByte = ParameterDecoder::decodeInt32(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, entryPointIndex);
+ readByte += ParameterDecoder::decodeInt32(parameterBlock.parameterBuffer + readByte, parameterBlock.parameterBufferSize - readByte, targetIndex);
ObjectID outSharedLibraryId = 0;
ObjectID outDiagnosticsId = 0;
readByte = ParameterDecoder::decodeAddress(parameterBlock.outputBuffer, parameterBlock.outputBufferSize, outSharedLibraryId);
- readByte += ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.parameterBufferSize - readByte, outDiagnosticsId);
+ readByte += ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize - readByte, outDiagnosticsId);
for (auto consumer: m_consumers)
{
@@ -1883,8 +1883,8 @@ namespace SlangRecord
slangRecordLog(LogLevel::Error, "%s: The shader reflection interfaces are not recordd\n", __PRETTY_FUNCTION__);
size_t readByte = 0;
- uint32_t specializationArgCount = 0;
- readByte = ParameterDecoder::decodeUint32(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, specializationArgCount);
+ int64_t specializationArgCount = 0;
+ readByte = ParameterDecoder::decodeInt64(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, specializationArgCount);
std::vector<slang::SpecializationArg> specializationArgs;
@@ -1926,15 +1926,15 @@ namespace SlangRecord
void SlangDecoder::ITypeConformance_getEntryPointHostCallable(ObjectID objectId, ParameterBlock const& parameterBlock)
{
size_t readByte = 0;
- int64_t entryPointIndex = 0;
- int64_t targetIndex = 0;
- readByte = ParameterDecoder::decodeInt64(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, entryPointIndex);
- readByte += ParameterDecoder::decodeInt64(parameterBlock.parameterBuffer + readByte, parameterBlock.parameterBufferSize - readByte, targetIndex);
+ int32_t entryPointIndex = 0;
+ int32_t targetIndex = 0;
+ readByte = ParameterDecoder::decodeInt32(parameterBlock.parameterBuffer, parameterBlock.parameterBufferSize, entryPointIndex);
+ readByte += ParameterDecoder::decodeInt32(parameterBlock.parameterBuffer + readByte, parameterBlock.parameterBufferSize - readByte, targetIndex);
ObjectID outSharedLibraryId = 0;
ObjectID outDiagnosticsId = 0;
readByte = ParameterDecoder::decodeAddress(parameterBlock.outputBuffer, parameterBlock.outputBufferSize, outSharedLibraryId);
- readByte += ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.parameterBufferSize - readByte, outDiagnosticsId);
+ readByte += ParameterDecoder::decodeAddress(parameterBlock.outputBuffer + readByte, parameterBlock.outputBufferSize - readByte, outDiagnosticsId);
for (auto consumer: m_consumers)
{