summaryrefslogtreecommitdiffstats
path: root/source/slang/slang.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2021-06-24 10:00:23 -0400
committerGitHub <noreply@github.com>2021-06-24 10:00:23 -0400
commit542741143b69c248ab457d1f767b0895430e9f90 (patch)
tree5a3592ae41ad240aa3ef3c0dcd7ca7bff39af346 /source/slang/slang.cpp
parent353777ec33b5b097e0d0f4bc602811a9775ef237 (diff)
Remove StructTag and associated systems (#1895)
* #include an absolute path didn't work - because paths were taken to always be relative. * Remove StructTag and associated systems. * Fix typo and remove unit test for StructTag.
Diffstat (limited to 'source/slang/slang.cpp')
-rw-r--r--source/slang/slang.cpp65
1 files changed, 17 insertions, 48 deletions
diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp
index 8d82ca1b7..acc4b6f77 100644
--- a/source/slang/slang.cpp
+++ b/source/slang/slang.cpp
@@ -23,7 +23,6 @@
#include "../core/slang-writer.h"
#include "../compiler-core/slang-source-loc.h"
-#include "../compiler-core/slang-struct-tag-converter.h"
#include "slang-ast-dump.h"
@@ -115,31 +114,6 @@ const char* getBuildTagString()
return SLANG_TAG_VERSION;
}
-static RefPtr<StructTagSystem> _createStructTagSystem()
-{
- RefPtr<StructTagSystem> system = new StructTagSystem;
-
- {
-#define SLANG_STRUCT_TAG_ADD_CATEGORY(x) system->addCategoryInfo(slang::StructTagCategory::x, #x);
- SLANG_STRUCT_TAG_CATEGORIES(SLANG_STRUCT_TAG_ADD_CATEGORY)
- }
-
- {
-#define SLANG_STRUCT_TAG_ADD_TYPE(X) system->addType(slang::X::kStructTag, "slang::" #X, sizeof(slang::X));
-SLANG_TAGGED_STRUCTS(SLANG_STRUCT_TAG_ADD_TYPE)
-
- // Add field that references more tagged structs
- {
- slang::SessionDesc desc;
- auto field = StructTagTypeTraits::getFieldWithCount(&desc, &desc.targets, &desc.targetCount);
-
- auto type = system->getType(slang::SessionDesc::kStructTag);
- type->m_fields.add(field);
- }
- }
-
- return system;
-}
void Session::init()
{
@@ -158,8 +132,6 @@ void Session::init()
m_sharedASTBuilder = new SharedASTBuilder;
m_sharedASTBuilder->init(this);
- m_structTagSystem = _createStructTagSystem();
-
// Use to create a ASTBuilder
RefPtr<ASTBuilder> builtinAstBuilder(new ASTBuilder(m_sharedASTBuilder, "m_builtInLinkage::m_astBuilder"));
@@ -467,45 +439,42 @@ ISlangUnknown* Session::getInterface(const Guid& guid)
}
SLANG_NO_THROW SlangResult SLANG_MCALL Session::createSession(
- slang::SessionDesc const& inDesc,
+ slang::SessionDesc const& desc,
slang::ISession** outSession)
{
- MemoryArena arena(1024);
-
- LazyStructTagConverter converter(getStructTagSystem(), &arena, nullptr);
-
- const slang::SessionDesc* desc = nullptr;
- SLANG_RETURN_ON_FAIL(converter.convertToCurrent(&inDesc, &desc));
-
RefPtr<ASTBuilder> astBuilder(new ASTBuilder(m_sharedASTBuilder, "Session::astBuilder"));
RefPtr<Linkage> linkage = new Linkage(this, astBuilder, getBuiltinLinkage());
+ Int targetCount = desc.targetCount;
+ const uint8_t* targetDescPtr = reinterpret_cast<const uint8_t*>(desc.targets);
+ for (Int ii = 0; ii < targetCount; ++ii)
{
- const Index targetCount = Index(desc->targetCount);
- for(Index ii = 0; ii < targetCount; ++ii)
- {
- const auto& targetDesc = desc->targets[ii];
- linkage->addTarget(targetDesc);
- }
+ slang::TargetDesc targetDesc;
+ // Copy the size field first.
+ memcpy(&targetDesc.structureSize, targetDescPtr, sizeof(size_t));
+ // Copy the entire desc structure.
+ memcpy(&targetDesc, targetDescPtr, targetDesc.structureSize);
+ linkage->addTarget(targetDesc);
+ targetDescPtr += targetDesc.structureSize;
}
- if(desc->flags & slang::kSessionFlag_FalcorCustomSharedKeywordSemantics)
+ if(desc.flags & slang::kSessionFlag_FalcorCustomSharedKeywordSemantics)
{
linkage->m_useFalcorCustomSharedKeywordSemantics = true;
}
- linkage->setMatrixLayoutMode(desc->defaultMatrixLayoutMode);
+ linkage->setMatrixLayoutMode(desc.defaultMatrixLayoutMode);
- Int searchPathCount = desc->searchPathCount;
+ Int searchPathCount = desc.searchPathCount;
for(Int ii = 0; ii < searchPathCount; ++ii)
{
- linkage->addSearchPath(desc->searchPaths[ii]);
+ linkage->addSearchPath(desc.searchPaths[ii]);
}
- Int macroCount = desc->preprocessorMacroCount;
+ Int macroCount = desc.preprocessorMacroCount;
for(Int ii = 0; ii < macroCount; ++ii)
{
- auto& macro = desc->preprocessorMacros[ii];
+ auto& macro = desc.preprocessorMacros[ii];
linkage->addPreprocessorDefine(macro.name, macro.value);
}