summaryrefslogtreecommitdiff
path: root/source/slang/slang-emit.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2023-04-18 12:36:06 -0400
committerGitHub <noreply@github.com>2023-04-18 12:36:06 -0400
commit181fd1f3c9c4b047c1947096e7b3f8e5bc2314c3 (patch)
tree308cbadae2f68d43ca20f92755b08db08e8b2283 /source/slang/slang-emit.cpp
parent90a9f43573ec0777c2ae4fa20c8fdc51a4ae7b3a (diff)
On demand SourceMap JSON serialization (#2811)
* #include an absolute path didn't work - because paths were taken to always be relative. * Moved JSON source map writing logic to JSONSourceMapUtil. * Use ArtifactHandler to read/write SourceMaps. Use ObjectCastableAdapter to hold SourceMap Only serialize SourceMap <-> JSON on demand.
Diffstat (limited to 'source/slang/slang-emit.cpp')
-rw-r--r--source/slang/slang-emit.cpp26
1 files changed, 4 insertions, 22 deletions
diff --git a/source/slang/slang-emit.cpp b/source/slang/slang-emit.cpp
index e2948561c..67a4c4610 100644
--- a/source/slang/slang-emit.cpp
+++ b/source/slang/slang-emit.cpp
@@ -82,7 +82,7 @@
#include "../compiler-core/slang-artifact-impl.h"
#include "../compiler-core/slang-artifact-associated-impl.h"
-#include "../compiler-core/slang-json-source-map-util.h"
+#include "../core/slang-castable.h"
#include <assert.h>
@@ -1152,28 +1152,10 @@ SlangResult CodeGenContext::emitEntryPointsSourceFromIR(ComPtr<IArtifact>& outAr
if (sourceMap)
{
- SourceManager sourceMapSourceManager;
- sourceMapSourceManager.initialize(nullptr, nullptr);
-
- // Create a sink
- DiagnosticSink sourceMapSink(&sourceMapSourceManager, nullptr);
-
- // Turn into JSON
- RefPtr<JSONContainer> jsonContainer(new JSONContainer(&sourceMapSourceManager));
-
- JSONValue jsonValue;
- SLANG_RETURN_ON_FAIL(JSONSourceMapUtil::encode(sourceMap, jsonContainer, &sourceMapSink, jsonValue));
-
- // Okay now convert this into a text file and then a blob
-
- // Convert into a string
- JSONWriter writer(JSONWriter::IndentationStyle::KNR);
- jsonContainer->traverseRecursively(jsonValue, &writer);
-
- auto sourceMapBlob = StringBlob::moveCreate(writer.getBuilder());
-
auto sourceMapArtifact = ArtifactUtil::createArtifact(ArtifactDesc::make(ArtifactKind::Json, ArtifactPayload::SourceMap, ArtifactStyle::None));
- sourceMapArtifact->addRepresentationUnknown(sourceMapBlob);
+
+ ComPtr<IObjectCastableAdapter> castableAdapter(new ObjectCastableAdapter(sourceMap));
+ sourceMapArtifact->addRepresentation(castableAdapter);
artifact->addAssociated(sourceMapArtifact);
}