diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2020-08-31 13:02:55 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-08-31 13:02:55 -0400 |
| commit | 69025ad82238a7402b18d9c566fac1574faef684 (patch) | |
| tree | ab01e4248071f9f597aa04f15742852a7662ed23 /source/slang/slang.cpp | |
| parent | baa789e0c9109bcb1e717ce4a9953709e7345e55 (diff) | |
AST Serialization in Modules (#1524)
* First pass at filter for AST serial writing.
* Serialization of AST for modules.
* Removed some commented out source.
Co-authored-by: Tim Foley <tfoleyNV@users.noreply.github.com>
Diffstat (limited to 'source/slang/slang.cpp')
| -rw-r--r-- | source/slang/slang.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp index 074c71f21..c78ca0a4d 100644 --- a/source/slang/slang.cpp +++ b/source/slang/slang.cpp @@ -2993,10 +2993,23 @@ namespace Slang { SlangResult _addLibraryReference(EndToEndCompileRequest* req, Stream* stream) { + // Load up the module + RiffContainer container; + SLANG_RETURN_ON_FAIL(RiffUtil::read(stream, container)); + + List<RefPtr<Module>> modules; + + if (SLANG_FAILED(ASTSerialReader::readContainerModules(&container, req->getLinkage(), modules))) + { + req->getSink()->diagnose(SourceLoc(), Diagnostics::unableToAddReferenceToModuleContainer); + return SLANG_FAIL; + } + // Read all of the contained modules List<RefPtr<IRModule>> irModules; List<FrontEndCompileRequest::ExtraEntryPointInfo> entryPointMangledNames; - if (SLANG_FAILED(IRSerialReader::readStreamModules(stream, req->getSession(), req->getFrontEndReq()->getSourceManager(), irModules, entryPointMangledNames))) + + if (SLANG_FAILED(IRSerialReader::readContainerModules(&container, req->getSession(), req->getFrontEndReq()->getSourceManager(), irModules, entryPointMangledNames))) { req->getSink()->diagnose(SourceLoc(), Diagnostics::unableToAddReferenceToModuleContainer); return SLANG_FAIL; |
