summaryrefslogtreecommitdiff
path: root/source/slang-record-replay/record/slang-module.cpp
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2024-10-29 14:49:26 +0800
committerGitHub <noreply@github.com>2024-10-29 14:49:26 +0800
commitf65d756bff8d4c5cbc15bd0322a2ae8e6b896a21 (patch)
treeea1d61342cd29368e19135000ec2948813096205 /source/slang-record-replay/record/slang-module.cpp
parenta729c15e9dce9f5116a38afc66329ab2ca4cea54 (diff)
format
* format * Minor test fixes * enable checking cpp format in ci
Diffstat (limited to 'source/slang-record-replay/record/slang-module.cpp')
-rw-r--r--source/slang-record-replay/record/slang-module.cpp370
1 files changed, 191 insertions, 179 deletions
diff --git a/source/slang-record-replay/record/slang-module.cpp b/source/slang-record-replay/record/slang-module.cpp
index 5f624a2e0..2071a8491 100644
--- a/source/slang-record-replay/record/slang-module.cpp
+++ b/source/slang-record-replay/record/slang-module.cpp
@@ -1,235 +1,247 @@
-#include "../util/record-utility.h"
#include "slang-module.h"
+
+#include "../util/record-utility.h"
#include "slang-session.h"
namespace SlangRecord
{
- ModuleRecorder::ModuleRecorder(SessionRecorder* sessionRecorder, slang::IModule* module, RecordManager* recordManager)
- : IComponentTypeRecorder(module, recordManager),
- m_sessionRecorder(sessionRecorder),
- m_actualModule(module),
- m_recordManager(recordManager)
- {
- SLANG_RECORD_ASSERT(m_actualModule != nullptr);
- SLANG_RECORD_ASSERT(m_recordManager != nullptr);
+ModuleRecorder::ModuleRecorder(
+ SessionRecorder* sessionRecorder,
+ slang::IModule* module,
+ RecordManager* recordManager)
+ : IComponentTypeRecorder(module, recordManager)
+ , m_sessionRecorder(sessionRecorder)
+ , m_actualModule(module)
+ , m_recordManager(recordManager)
+{
+ SLANG_RECORD_ASSERT(m_actualModule != nullptr);
+ SLANG_RECORD_ASSERT(m_recordManager != nullptr);
- m_moduleHandle = reinterpret_cast<uint64_t>(m_actualModule.get());
- slangRecordLog(LogLevel::Verbose, "%s: %p\n", __PRETTY_FUNCTION__, module);
- }
+ m_moduleHandle = reinterpret_cast<uint64_t>(m_actualModule.get());
+ slangRecordLog(LogLevel::Verbose, "%s: %p\n", __PRETTY_FUNCTION__, module);
+}
+
+ISlangUnknown* ModuleRecorder::getInterface(const Guid& guid)
+{
+ if (guid == IModuleRecorder::getTypeGuid())
+ return static_cast<IModuleRecorder*>(this);
+ else
+ return nullptr;
+}
+
+SLANG_NO_THROW slang::DeclReflection* ModuleRecorder::getModuleReflection()
+{
+ // No need to record this call as it is just a query.
+ slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
+ slang::DeclReflection* res = (slang::DeclReflection*)m_actualModule->getModuleReflection();
+ return res;
+}
+
+SLANG_NO_THROW SlangResult
+ModuleRecorder::findEntryPointByName(char const* name, slang::IEntryPoint** outEntryPoint)
+{
+ slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
- ISlangUnknown* ModuleRecorder::getInterface(const Guid& guid)
+ ParameterRecorder* recorder{};
{
- if(guid == IModuleRecorder::getTypeGuid())
- return static_cast<IModuleRecorder*>(this);
- else
- return nullptr;
+ recorder = m_recordManager->beginMethodRecord(
+ ApiCallId::IModule_findEntryPointByName,
+ m_moduleHandle);
+ recorder->recordString(name);
+ recorder = m_recordManager->endMethodRecord();
}
- SLANG_NO_THROW slang::DeclReflection* ModuleRecorder::getModuleReflection()
+ SlangResult res = m_actualModule->findEntryPointByName(name, outEntryPoint);
+
{
- // No need to record this call as it is just a query.
- slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
- slang::DeclReflection* res = (slang::DeclReflection*)m_actualModule->getModuleReflection();
- return res;
+ recorder->recordAddress(*outEntryPoint);
+ m_recordManager->apendOutput();
}
- SLANG_NO_THROW SlangResult ModuleRecorder::findEntryPointByName(
- char const* name,
- slang::IEntryPoint** outEntryPoint)
+ if (SLANG_OK == res)
{
- slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
-
- ParameterRecorder* recorder {};
- {
- recorder = m_recordManager->beginMethodRecord(ApiCallId::IModule_findEntryPointByName, m_moduleHandle);
- recorder->recordString(name);
- recorder = m_recordManager->endMethodRecord();
- }
+ IEntryPointRecorder* entryPointRecord = getEntryPointRecorder(*outEntryPoint);
+ *outEntryPoint = static_cast<slang::IEntryPoint*>(entryPointRecord);
+ }
+ return res;
+}
- SlangResult res = m_actualModule->findEntryPointByName(name, outEntryPoint);
+SLANG_NO_THROW SlangInt32 ModuleRecorder::getDefinedEntryPointCount()
+{
+ // No need to record this call as it is just a query.
+ slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
+ SlangInt32 res = m_actualModule->getDefinedEntryPointCount();
+ return res;
+}
- {
- recorder->recordAddress(*outEntryPoint);
- m_recordManager->apendOutput();
- }
+SLANG_NO_THROW SlangResult
+ModuleRecorder::getDefinedEntryPoint(SlangInt32 index, slang::IEntryPoint** outEntryPoint)
+{
+ // This call is to find the existing entry point, so it has been created already. Therefore, we
+ // don't create a new one and assert the error if it is not found in our map.
+ slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
- if (SLANG_OK == res)
- {
- IEntryPointRecorder* entryPointRecord = getEntryPointRecorder(*outEntryPoint);
- *outEntryPoint = static_cast<slang::IEntryPoint*>(entryPointRecord);
- }
- return res;
+ ParameterRecorder* recorder{};
+ {
+ recorder = m_recordManager->beginMethodRecord(
+ ApiCallId::IModule_getDefinedEntryPoint,
+ m_moduleHandle);
+ recorder->recordInt32(index);
+ recorder = m_recordManager->endMethodRecord();
}
- SLANG_NO_THROW SlangInt32 ModuleRecorder::getDefinedEntryPointCount()
+ SlangResult res = m_actualModule->getDefinedEntryPoint(index, outEntryPoint);
+
{
- // No need to record this call as it is just a query.
- slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
- SlangInt32 res = m_actualModule->getDefinedEntryPointCount();
- return res;
+ recorder->recordAddress(*outEntryPoint);
+ m_recordManager->apendOutput();
}
- SLANG_NO_THROW SlangResult ModuleRecorder::getDefinedEntryPoint(SlangInt32 index, slang::IEntryPoint** outEntryPoint)
+ if (*outEntryPoint)
{
- // This call is to find the existing entry point, so it has been created already. Therefore, we don't create a new one
- // and assert the error if it is not found in our map.
- slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
-
- ParameterRecorder* recorder {};
+ IEntryPointRecorder* entryPointRecord = nullptr;
+ bool ret = m_mapEntryPointToRecord.tryGetValue(*outEntryPoint, entryPointRecord);
+ if (!ret)
{
- recorder = m_recordManager->beginMethodRecord(ApiCallId::IModule_getDefinedEntryPoint, m_moduleHandle);
- recorder->recordInt32(index);
- recorder = m_recordManager->endMethodRecord();
+ SLANG_RECORD_ASSERT(!"Entrypoint not found in mapEntryPointToRecord");
}
+ ComPtr<slang::IEntryPoint> result(static_cast<slang::IEntryPoint*>(entryPointRecord));
+ *outEntryPoint = result.detach();
+ }
+ else
+ *outEntryPoint = nullptr;
- SlangResult res = m_actualModule->getDefinedEntryPoint(index, outEntryPoint);
-
- {
- recorder->recordAddress(*outEntryPoint);
- m_recordManager->apendOutput();
- }
+ return res;
+}
- if (*outEntryPoint)
- {
- IEntryPointRecorder* entryPointRecord = nullptr;
- bool ret = m_mapEntryPointToRecord.tryGetValue(*outEntryPoint, entryPointRecord);
- if (!ret)
- {
- SLANG_RECORD_ASSERT(!"Entrypoint not found in mapEntryPointToRecord");
- }
- ComPtr<slang::IEntryPoint> result(static_cast<slang::IEntryPoint*>(entryPointRecord));
- *outEntryPoint = result.detach();
- }
- else
- *outEntryPoint = nullptr;
+SLANG_NO_THROW SlangResult ModuleRecorder::serialize(ISlangBlob** outSerializedBlob)
+{
+ slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
- return res;
+ ParameterRecorder* recorder{};
+ {
+ recorder = m_recordManager->beginMethodRecord(ApiCallId::IModule_serialize, m_moduleHandle);
+ recorder = m_recordManager->endMethodRecord();
}
- SLANG_NO_THROW SlangResult ModuleRecorder::serialize(ISlangBlob** outSerializedBlob)
- {
- slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
+ SlangResult res = m_actualModule->serialize(outSerializedBlob);
- ParameterRecorder* recorder {};
- {
- recorder = m_recordManager->beginMethodRecord(ApiCallId::IModule_serialize, m_moduleHandle);
- recorder = m_recordManager->endMethodRecord();
- }
+ {
+ recorder->recordAddress(*outSerializedBlob);
+ m_recordManager->apendOutput();
+ }
- SlangResult res = m_actualModule->serialize(outSerializedBlob);
+ return res;
+}
- {
- recorder->recordAddress(*outSerializedBlob);
- m_recordManager->apendOutput();
- }
+SLANG_NO_THROW SlangResult ModuleRecorder::writeToFile(char const* fileName)
+{
+ slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
- return res;
+ ParameterRecorder* recorder{};
+ {
+ recorder =
+ m_recordManager->beginMethodRecord(ApiCallId::IModule_writeToFile, m_moduleHandle);
+ recorder->recordString(fileName);
+ recorder = m_recordManager->endMethodRecord();
}
- SLANG_NO_THROW SlangResult ModuleRecorder::writeToFile(char const* fileName)
- {
- slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
+ SlangResult res = m_actualModule->writeToFile(fileName);
+ return res;
+}
- ParameterRecorder* recorder {};
- {
- recorder = m_recordManager->beginMethodRecord(ApiCallId::IModule_writeToFile, m_moduleHandle);
- recorder->recordString(fileName);
- recorder = m_recordManager->endMethodRecord();
- }
+SLANG_NO_THROW const char* ModuleRecorder::getName()
+{
+ // No need to record this call as it is just a query.
+ slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
+ const char* res = m_actualModule->getName();
+ return res;
+}
- SlangResult res = m_actualModule->writeToFile(fileName);
- return res;
- }
+SLANG_NO_THROW const char* ModuleRecorder::getFilePath()
+{
+ // No need to record this call as it is just a query.
+ slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
+ const char* res = m_actualModule->getFilePath();
+ return res;
+}
- SLANG_NO_THROW const char* ModuleRecorder::getName()
- {
- // No need to record this call as it is just a query.
- slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
- const char* res = m_actualModule->getName();
- return res;
- }
+SLANG_NO_THROW const char* ModuleRecorder::getUniqueIdentity()
+{
+ // No need to record this call as it is just a query.
+ slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
+ const char* res = m_actualModule->getUniqueIdentity();
+ return res;
+}
- SLANG_NO_THROW const char* ModuleRecorder::getFilePath()
+SLANG_NO_THROW SlangResult ModuleRecorder::findAndCheckEntryPoint(
+ char const* name,
+ SlangStage stage,
+ slang::IEntryPoint** outEntryPoint,
+ ISlangBlob** outDiagnostics)
+{
+ slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
+
+ ParameterRecorder* recorder{};
{
- // No need to record this call as it is just a query.
- slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
- const char* res = m_actualModule->getFilePath();
- return res;
+ recorder = m_recordManager->beginMethodRecord(
+ ApiCallId::IModule_findAndCheckEntryPoint,
+ m_moduleHandle);
+ recorder->recordString(name);
+ recorder->recordEnumValue(stage);
+ recorder = m_recordManager->endMethodRecord();
}
- SLANG_NO_THROW const char* ModuleRecorder::getUniqueIdentity()
+ SlangResult res =
+ m_actualModule->findAndCheckEntryPoint(name, stage, outEntryPoint, outDiagnostics);
+
{
- // No need to record this call as it is just a query.
- slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
- const char* res = m_actualModule->getUniqueIdentity();
- return res;
+ recorder->recordAddress(*outEntryPoint);
+ recorder->recordAddress(outDiagnostics ? *outDiagnostics : nullptr);
+ m_recordManager->apendOutput();
}
- SLANG_NO_THROW SlangResult ModuleRecorder::findAndCheckEntryPoint(
- char const* name,
- SlangStage stage,
- slang::IEntryPoint** outEntryPoint,
- ISlangBlob** outDiagnostics)
+ if (SLANG_OK == res)
{
- slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
-
- ParameterRecorder* recorder {};
- {
- recorder = m_recordManager->beginMethodRecord(ApiCallId::IModule_findAndCheckEntryPoint, m_moduleHandle);
- recorder->recordString(name);
- recorder->recordEnumValue(stage);
- recorder = m_recordManager->endMethodRecord();
- }
-
- SlangResult res = m_actualModule->findAndCheckEntryPoint(name, stage, outEntryPoint, outDiagnostics);
+ IEntryPointRecorder* entryPointRecord = getEntryPointRecorder(*outEntryPoint);
+ *outEntryPoint = static_cast<slang::IEntryPoint*>(entryPointRecord);
+ }
+ return res;
+}
- {
- recorder->recordAddress(*outEntryPoint);
- recorder->recordAddress(outDiagnostics ? *outDiagnostics : nullptr);
- m_recordManager->apendOutput();
- }
+SLANG_NO_THROW SlangInt32 ModuleRecorder::getDependencyFileCount()
+{
+ // No need to record this call as it is just a query.
+ slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
+ SlangInt32 res = m_actualModule->getDependencyFileCount();
+ return res;
+}
- if (SLANG_OK == res)
- {
- IEntryPointRecorder* entryPointRecord = getEntryPointRecorder(*outEntryPoint);
- *outEntryPoint = static_cast<slang::IEntryPoint*>(entryPointRecord);
- }
- return res;
- }
+SLANG_NO_THROW char const* ModuleRecorder::getDependencyFilePath(SlangInt32 index)
+{
+ // No need to record this call as it is just a query.
+ slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
+ const char* res = m_actualModule->getDependencyFilePath(index);
+ return res;
+}
- SLANG_NO_THROW SlangInt32 ModuleRecorder::getDependencyFileCount()
+IEntryPointRecorder* ModuleRecorder::getEntryPointRecorder(slang::IEntryPoint* entryPoint)
+{
+ IEntryPointRecorder* entryPointRecord = nullptr;
+ bool ret = m_mapEntryPointToRecord.tryGetValue(entryPoint, entryPointRecord);
+ if (!ret)
{
- // No need to record this call as it is just a query.
- slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
- SlangInt32 res = m_actualModule->getDependencyFileCount();
- return res;
- }
+ entryPointRecord = new EntryPointRecorder(m_sessionRecorder, entryPoint, m_recordManager);
+ Slang::ComPtr<IEntryPointRecorder> result(entryPointRecord);
- SLANG_NO_THROW char const* ModuleRecorder::getDependencyFilePath(SlangInt32 index)
- {
- // No need to record this call as it is just a query.
- slangRecordLog(LogLevel::Verbose, "%s\n", __PRETTY_FUNCTION__);
- const char* res = m_actualModule->getDependencyFilePath(index);
- return res;
+ m_entryPointsRecordAllocation.add(result);
+ m_mapEntryPointToRecord.add(entryPoint, result.detach());
+ return entryPointRecord;
}
-
- IEntryPointRecorder* ModuleRecorder::getEntryPointRecorder(slang::IEntryPoint* entryPoint)
+ else
{
- IEntryPointRecorder* entryPointRecord = nullptr;
- bool ret = m_mapEntryPointToRecord.tryGetValue(entryPoint, entryPointRecord);
- if (!ret)
- {
- entryPointRecord = new EntryPointRecorder(m_sessionRecorder, entryPoint, m_recordManager);
- Slang::ComPtr<IEntryPointRecorder> result(entryPointRecord);
-
- m_entryPointsRecordAllocation.add(result);
- m_mapEntryPointToRecord.add(entryPoint, result.detach());
- return entryPointRecord;
- }
- else
- {
- Slang::ComPtr<IEntryPointRecorder> result(entryPointRecord);
- return result.detach();
- }
+ Slang::ComPtr<IEntryPointRecorder> result(entryPointRecord);
+ return result.detach();
}
}
+} // namespace SlangRecord