diff options
| author | Yong He <yonghe@outlook.com> | 2024-02-15 00:05:51 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-15 00:05:51 -0800 |
| commit | 5a623ec227726ad1d988a5d91f55f19b62a98e03 (patch) | |
| tree | 94a3fd2f00ce1a95035f39cd3571c9e97a70d24e /source/slang/slang-serialize-container.cpp | |
| parent | 2ced683f10fb82f63a2e2c3d7b5f099c53bb57b0 (diff) | |
Support loading serialized modules. (#3588)
* Support loading serialized modules.
* Fix.
* Fix vs solution files
* Fix glsl module loading.
* C++ fix.
* Fix.
* Try fix c++ error.
* Try fix.
* Fix.
* Fix.
Diffstat (limited to 'source/slang/slang-serialize-container.cpp')
| -rw-r--r-- | source/slang/slang-serialize-container.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/source/slang/slang-serialize-container.cpp b/source/slang/slang-serialize-container.cpp index 175f970c9..6a75064ab 100644 --- a/source/slang/slang-serialize-container.cpp +++ b/source/slang/slang-serialize-container.cpp @@ -213,7 +213,11 @@ namespace Slang { } ModuleSerialFilter filter(moduleDecl); - SerialWriter writer(serialClasses, &filter); + auto astWriterFlag = SerialWriter::Flag::ZeroInitialize; + if ((options.optionFlags & SerialOptionFlag::ASTFunctionBody) == 0) + astWriterFlag = (SerialWriter::Flag::Enum)(astWriterFlag | SerialWriter::Flag::SkipFunctionBody); + + SerialWriter writer(serialClasses, &filter, astWriterFlag); writer.getExtraObjects().set(sourceLocWriter); @@ -300,7 +304,7 @@ static List<ExtensionDecl*>& _getCandidateExtensionList( return entry->candidateExtensions; } -/* static */Result SerialContainerUtil::read(RiffContainer* container, const ReadOptions& options, SerialContainerData& out) +/* static */Result SerialContainerUtil::read(RiffContainer* container, const ReadOptions& options, const LoadedModuleDictionary* additionalLoadedModules, SerialContainerData& out) { out.clear(); @@ -441,7 +445,7 @@ static List<ExtensionDecl*>& _getCandidateExtensionList( NamePool* namePool = linkage->getNamePool(); Name* moduleNameName = namePool->getName(moduleName); - readModule = linkage->findOrImportModule(moduleNameName, SourceLoc::fromRaw(0), options.sink); + readModule = linkage->findOrImportModule(moduleNameName, SourceLoc::fromRaw(0), options.sink, additionalLoadedModules); if (!readModule) { return SLANG_FAIL; @@ -570,7 +574,6 @@ static List<ExtensionDecl*>& _getCandidateExtensionList( else if (Val* val = dynamicCast<Val>(nodeBase)) { val->_setUnique(); - astBuilder->m_cachedNodes.tryGetValueOrAdd(ValKey(val), val); } } } |
