summaryrefslogtreecommitdiff
path: root/source/slang/slang-artifact-output-util.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/slang-artifact-output-util.cpp
parenta729c15e9dce9f5116a38afc66329ab2ca4cea54 (diff)
format
* format * Minor test fixes * enable checking cpp format in ci
Diffstat (limited to 'source/slang/slang-artifact-output-util.cpp')
-rw-r--r--source/slang/slang-artifact-output-util.cpp104
1 files changed, 74 insertions, 30 deletions
diff --git a/source/slang/slang-artifact-output-util.cpp b/source/slang/slang-artifact-output-util.cpp
index dcd6eb84e..2d9dae1cf 100644
--- a/source/slang/slang-artifact-output-util.cpp
+++ b/source/slang/slang-artifact-output-util.cpp
@@ -1,44 +1,49 @@
#include "slang-artifact-output-util.h"
-#include "../core/slang-platform.h"
-
+#include "../core/slang-hex-dump-util.h"
#include "../core/slang-io.h"
+#include "../core/slang-platform.h"
#include "../core/slang-string-util.h"
-#include "../core/slang-hex-dump-util.h"
-
#include "../core/slang-type-text-util.h"
// Artifact
#include "../compiler-core/slang-artifact-desc-util.h"
#include "../compiler-core/slang-artifact-util.h"
-
#include "slang-compiler.h"
namespace Slang
{
-/* static */SlangResult ArtifactOutputUtil::dissassembleWithDownstream(Session* session, IArtifact* artifact, DiagnosticSink* sink, IArtifact** outArtifact)
+/* static */ SlangResult ArtifactOutputUtil::dissassembleWithDownstream(
+ Session* session,
+ IArtifact* artifact,
+ DiagnosticSink* sink,
+ IArtifact** outArtifact)
{
auto desc = artifact->getDesc();
auto assemblyDesc = desc;
assemblyDesc.kind = ArtifactKind::Assembly;
- // Check it seems like a plausbile disassembly
+ // Check it seems like a plausbile disassembly
if (!ArtifactDescUtil::isDisassembly(desc, assemblyDesc))
{
if (sink)
{
- sink->diagnose(SourceLoc(), Diagnostics::cannotDisassemble, ArtifactDescUtil::getText(desc));
+ sink->diagnose(
+ SourceLoc(),
+ Diagnostics::cannotDisassemble,
+ ArtifactDescUtil::getText(desc));
}
return SLANG_FAIL;
}
// Get the downstream disassembler that can be used for this target
// TODO(JS):
- // This could perhaps be performed in some other manner if there was more than one way to produce
- // disassembly from a binary.
+ // This could perhaps be performed in some other manner if there was more than one way to
+ // produce disassembly from a binary.
- const CodeGenTarget target = (CodeGenTarget)ArtifactDescUtil::getCompileTargetFromDesc(assemblyDesc);
+ const CodeGenTarget target =
+ (CodeGenTarget)ArtifactDescUtil::getCompileTargetFromDesc(assemblyDesc);
if (target == CodeGenTarget::Unknown)
{
return SLANG_FAIL;
@@ -53,7 +58,8 @@ namespace Slang
{
if (sink)
{
- auto compilerName = TypeTextUtil::getPassThroughAsHumanText((SlangPassThrough)downstreamCompiler);
+ auto compilerName =
+ TypeTextUtil::getPassThroughAsHumanText((SlangPassThrough)downstreamCompiler);
sink->diagnose(SourceLoc(), Diagnostics::passThroughCompilerNotFound, compilerName);
}
return SLANG_FAIL;
@@ -66,7 +72,11 @@ namespace Slang
return SLANG_OK;
}
-SlangResult ArtifactOutputUtil::maybeDisassemble(Session* session, IArtifact* artifact, DiagnosticSink* sink, ComPtr<IArtifact>& outArtifact)
+SlangResult ArtifactOutputUtil::maybeDisassemble(
+ Session* session,
+ IArtifact* artifact,
+ DiagnosticSink* sink,
+ ComPtr<IArtifact>& outArtifact)
{
const auto desc = artifact->getDesc();
if (ArtifactDescUtil::isText(desc))
@@ -82,7 +92,11 @@ SlangResult ArtifactOutputUtil::maybeDisassemble(Session* session, IArtifact* ar
{
ComPtr<IArtifact> disassemblyArtifact;
- if (SLANG_SUCCEEDED(dissassembleWithDownstream(session, artifact, sink, disassemblyArtifact.writeRef())))
+ if (SLANG_SUCCEEDED(dissassembleWithDownstream(
+ session,
+ artifact,
+ sink,
+ disassemblyArtifact.writeRef())))
{
// Check it is now text
SLANG_ASSERT(ArtifactDescUtil::isText(disassemblyArtifact->getDesc()));
@@ -95,7 +109,10 @@ SlangResult ArtifactOutputUtil::maybeDisassemble(Session* session, IArtifact* ar
return SLANG_OK;
}
-/* static */SlangResult ArtifactOutputUtil::write(const ArtifactDesc& desc, ISlangBlob* blob, ISlangWriter* writer)
+/* static */ SlangResult ArtifactOutputUtil::write(
+ const ArtifactDesc& desc,
+ ISlangBlob* blob,
+ ISlangWriter* writer)
{
// If is text, we can just output
if (ArtifactDescUtil::isText(desc))
@@ -108,7 +125,11 @@ SlangResult ArtifactOutputUtil::maybeDisassemble(Session* session, IArtifact* ar
if (writer->isConsole())
{
// Else just dump as text
- return HexDumpUtil::dumpWithMarkers((const uint8_t*)blob->getBufferPointer(), blob->getBufferSize(), 24, writer);
+ return HexDumpUtil::dumpWithMarkers(
+ (const uint8_t*)blob->getBufferPointer(),
+ blob->getBufferSize(),
+ 24,
+ writer);
}
else
{
@@ -119,14 +140,17 @@ SlangResult ArtifactOutputUtil::maybeDisassemble(Session* session, IArtifact* ar
}
}
-/* static */SlangResult ArtifactOutputUtil::write(IArtifact* artifact, ISlangWriter* writer)
+/* static */ SlangResult ArtifactOutputUtil::write(IArtifact* artifact, ISlangWriter* writer)
{
ComPtr<ISlangBlob> blob;
SLANG_RETURN_ON_FAIL(artifact->loadBlob(ArtifactKeep::No, blob.writeRef()));
return write(artifact->getDesc(), blob, writer);
}
-static SlangResult _requireBlob(IArtifact* artifact, DiagnosticSink* sink, ComPtr<ISlangBlob>& outBlob)
+static SlangResult _requireBlob(
+ IArtifact* artifact,
+ DiagnosticSink* sink,
+ ComPtr<ISlangBlob>& outBlob)
{
const auto res = artifact->loadBlob(ArtifactKeep::No, outBlob.writeRef());
if (SLANG_FAILED(res))
@@ -137,7 +161,11 @@ static SlangResult _requireBlob(IArtifact* artifact, DiagnosticSink* sink, ComPt
return SLANG_OK;
}
-/* static */SlangResult ArtifactOutputUtil::write(IArtifact* artifact, DiagnosticSink* sink, const UnownedStringSlice& writerName, ISlangWriter* writer)
+/* static */ SlangResult ArtifactOutputUtil::write(
+ IArtifact* artifact,
+ DiagnosticSink* sink,
+ const UnownedStringSlice& writerName,
+ ISlangWriter* writer)
{
if (sink == nullptr)
{
@@ -156,7 +184,12 @@ static SlangResult _requireBlob(IArtifact* artifact, DiagnosticSink* sink, ComPt
return res;
}
-/* static */SlangResult ArtifactOutputUtil::maybeConvertAndWrite(Session* session, IArtifact* artifact, DiagnosticSink* sink, const UnownedStringSlice& writerName, ISlangWriter* writer)
+/* static */ SlangResult ArtifactOutputUtil::maybeConvertAndWrite(
+ Session* session,
+ IArtifact* artifact,
+ DiagnosticSink* sink,
+ const UnownedStringSlice& writerName,
+ ISlangWriter* writer)
{
// If the output is console we will try and turn into disassembly
if (writer->isConsole())
@@ -173,12 +206,17 @@ static SlangResult _requireBlob(IArtifact* artifact, DiagnosticSink* sink, ComPt
return write(artifact, sink, writerName, writer);
}
-/* static */SlangResult ArtifactOutputUtil::writeToFile(const ArtifactDesc& desc, const void* data, size_t size, const String& path)
+/* static */ SlangResult ArtifactOutputUtil::writeToFile(
+ const ArtifactDesc& desc,
+ const void* data,
+ size_t size,
+ const String& path)
{
- const SlangResult res = ArtifactDescUtil::isText(desc)
- ? File::writeAllTextIfChanged(path, UnownedStringSlice((const char*)data, size))
- : File::writeAllBytes(path, data, size);
- if(desc.kind == ArtifactKind::Executable)
+ const SlangResult res =
+ ArtifactDescUtil::isText(desc)
+ ? File::writeAllTextIfChanged(path, UnownedStringSlice((const char*)data, size))
+ : File::writeAllBytes(path, data, size);
+ if (desc.kind == ArtifactKind::Executable)
{
// Ignore any success code here, assume the one from the actual write is more important.
SLANG_RETURN_ON_FAIL(File::makeExecutable(path));
@@ -186,21 +224,27 @@ static SlangResult _requireBlob(IArtifact* artifact, DiagnosticSink* sink, ComPt
return res;
}
-/* static */SlangResult ArtifactOutputUtil::writeToFile(const ArtifactDesc& desc, ISlangBlob* blob, const String& path)
+/* static */ SlangResult ArtifactOutputUtil::writeToFile(
+ const ArtifactDesc& desc,
+ ISlangBlob* blob,
+ const String& path)
{
SLANG_RETURN_ON_FAIL(writeToFile(desc, blob->getBufferPointer(), blob->getBufferSize(), path));
return SLANG_OK;
}
-/* static */SlangResult ArtifactOutputUtil::writeToFile(IArtifact* artifact, const String& path)
+/* static */ SlangResult ArtifactOutputUtil::writeToFile(IArtifact* artifact, const String& path)
{
// Get the blob
ComPtr<ISlangBlob> blob;
SLANG_RETURN_ON_FAIL(artifact->loadBlob(ArtifactKeep::No, blob.writeRef()));
return writeToFile(artifact->getDesc(), blob, path);
}
-
-/* static */SlangResult ArtifactOutputUtil::writeToFile(IArtifact* artifact, DiagnosticSink* sink, const String& path)
+
+/* static */ SlangResult ArtifactOutputUtil::writeToFile(
+ IArtifact* artifact,
+ DiagnosticSink* sink,
+ const String& path)
{
if (!sink)
{
@@ -219,4 +263,4 @@ static SlangResult _requireBlob(IArtifact* artifact, DiagnosticSink* sink, ComPt
return res;
}
-}
+} // namespace Slang