diff options
| author | Ellie Hermaszewska <ellieh@nvidia.com> | 2024-10-29 14:49:26 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-29 14:49:26 +0800 |
| commit | f65d756bff8d4c5cbc15bd0322a2ae8e6b896a21 (patch) | |
| tree | ea1d61342cd29368e19135000ec2948813096205 /source/slang/slang-artifact-output-util.cpp | |
| parent | a729c15e9dce9f5116a38afc66329ab2ca4cea54 (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.cpp | 104 |
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 |
