summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang-record-replay/record/slang-component-type.cpp26
-rw-r--r--source/slang-record-replay/record/slang-component-type.h9
-rw-r--r--source/slang-record-replay/record/slang-entrypoint.h21
-rw-r--r--source/slang-record-replay/record/slang-module.h21
-rw-r--r--source/slang-record-replay/record/slang-type-conformance.h21
-rw-r--r--source/slang/slang-compiler.h24
-rw-r--r--source/slang/slang.cpp84
7 files changed, 57 insertions, 149 deletions
diff --git a/source/slang-record-replay/record/slang-component-type.cpp b/source/slang-record-replay/record/slang-component-type.cpp
index 732721aa4..05fd68691 100644
--- a/source/slang-record-replay/record/slang-component-type.cpp
+++ b/source/slang-record-replay/record/slang-component-type.cpp
@@ -157,32 +157,6 @@ SLANG_NO_THROW SlangResult SLANG_MCALL IComponentTypeRecorder::getTargetMetadata
return m_actualComponentType->getTargetMetadata(targetIndex, outMetadata, outDiagnostics);
}
-SLANG_NO_THROW SlangResult SLANG_MCALL IComponentTypeRecorder::getEntryPointCompileResult(
- SlangInt entryPointIndex,
- SlangInt targetIndex,
- slang::ICompileResult** outCompileResult,
- slang::IBlob** outDiagnostics)
-{
- // No need to record this call.
- return m_actualComponentType->getEntryPointCompileResult(
- entryPointIndex,
- targetIndex,
- outCompileResult,
- outDiagnostics);
-}
-
-SLANG_NO_THROW SlangResult SLANG_MCALL IComponentTypeRecorder::getTargetCompileResult(
- SlangInt targetIndex,
- slang::ICompileResult** outCompileResult,
- slang::IBlob** outDiagnostics)
-{
- // No need to record this call.
- return m_actualComponentType->getTargetCompileResult(
- targetIndex,
- outCompileResult,
- outDiagnostics);
-}
-
SLANG_NO_THROW SlangResult IComponentTypeRecorder::getResultAsFileSystem(
SlangInt entryPointIndex,
SlangInt targetIndex,
diff --git a/source/slang-record-replay/record/slang-component-type.h b/source/slang-record-replay/record/slang-component-type.h
index da9749d90..2c854ee33 100644
--- a/source/slang-record-replay/record/slang-component-type.h
+++ b/source/slang-record-replay/record/slang-component-type.h
@@ -71,15 +71,6 @@ public:
SlangInt targetIndex,
slang::IMetadata** outMetadata,
slang::IBlob** outDiagnostics = nullptr) override;
- virtual SLANG_NO_THROW SlangResult SLANG_MCALL getEntryPointCompileResult(
- SlangInt entryPointIndex,
- SlangInt targetIndex,
- slang::ICompileResult** outCompileResult,
- slang::IBlob** outDiagnostics) override;
- virtual SLANG_NO_THROW SlangResult SLANG_MCALL getTargetCompileResult(
- SlangInt targetIndex,
- slang::ICompileResult** outCompileResult,
- slang::IBlob** outDiagnostics = nullptr) override;
protected:
virtual ApiClassId getClassId() = 0;
diff --git a/source/slang-record-replay/record/slang-entrypoint.h b/source/slang-record-replay/record/slang-entrypoint.h
index 93da5557a..f9906f3a2 100644
--- a/source/slang-record-replay/record/slang-entrypoint.h
+++ b/source/slang-record-replay/record/slang-entrypoint.h
@@ -96,27 +96,6 @@ public:
return Super::getTargetMetadata(targetIndex, outMetadata, outDiagnostics);
}
- SLANG_NO_THROW SlangResult SLANG_MCALL getEntryPointCompileResult(
- SlangInt entryPointIndex,
- SlangInt targetIndex,
- slang::ICompileResult** outCompileResult,
- slang::IBlob** outDiagnostics) SLANG_OVERRIDE
- {
- return Super::getEntryPointCompileResult(
- entryPointIndex,
- targetIndex,
- outCompileResult,
- outDiagnostics);
- }
-
- SLANG_NO_THROW SlangResult SLANG_MCALL getTargetCompileResult(
- SlangInt targetIndex,
- slang::ICompileResult** outCompileResult,
- slang::IBlob** outDiagnostics) SLANG_OVERRIDE
- {
- return Super::getTargetCompileResult(targetIndex, outCompileResult, outDiagnostics);
- }
-
virtual SLANG_NO_THROW SlangResult SLANG_MCALL getResultAsFileSystem(
SlangInt entryPointIndex,
SlangInt targetIndex,
diff --git a/source/slang-record-replay/record/slang-module.h b/source/slang-record-replay/record/slang-module.h
index fc2a790ed..d9c83576d 100644
--- a/source/slang-record-replay/record/slang-module.h
+++ b/source/slang-record-replay/record/slang-module.h
@@ -114,27 +114,6 @@ public:
return Super::getTargetMetadata(targetIndex, outMetadata, outDiagnostics);
}
- SLANG_NO_THROW SlangResult SLANG_MCALL getEntryPointCompileResult(
- SlangInt entryPointIndex,
- SlangInt targetIndex,
- slang::ICompileResult** outCompileResult,
- slang::IBlob** outDiagnostics) SLANG_OVERRIDE
- {
- return Super::getEntryPointCompileResult(
- entryPointIndex,
- targetIndex,
- outCompileResult,
- outDiagnostics);
- }
-
- SLANG_NO_THROW SlangResult SLANG_MCALL getTargetCompileResult(
- SlangInt targetIndex,
- slang::ICompileResult** outCompileResult,
- slang::IBlob** outDiagnostics) SLANG_OVERRIDE
- {
- return Super::getTargetCompileResult(targetIndex, outCompileResult, outDiagnostics);
- }
-
virtual SLANG_NO_THROW SlangResult SLANG_MCALL getResultAsFileSystem(
SlangInt entryPointIndex,
SlangInt targetIndex,
diff --git a/source/slang-record-replay/record/slang-type-conformance.h b/source/slang-record-replay/record/slang-type-conformance.h
index f43131b92..12a0e4021 100644
--- a/source/slang-record-replay/record/slang-type-conformance.h
+++ b/source/slang-record-replay/record/slang-type-conformance.h
@@ -93,27 +93,6 @@ public:
return Super::getTargetMetadata(targetIndex, outMetadata, outDiagnostics);
}
- SLANG_NO_THROW SlangResult SLANG_MCALL getEntryPointCompileResult(
- SlangInt entryPointIndex,
- SlangInt targetIndex,
- slang::ICompileResult** outCompileResult,
- slang::IBlob** outDiagnostics) SLANG_OVERRIDE
- {
- return Super::getEntryPointCompileResult(
- entryPointIndex,
- targetIndex,
- outCompileResult,
- outDiagnostics);
- }
-
- SLANG_NO_THROW SlangResult SLANG_MCALL getTargetCompileResult(
- SlangInt targetIndex,
- slang::ICompileResult** outCompileResult,
- slang::IBlob** outDiagnostics) SLANG_OVERRIDE
- {
- return Super::getTargetCompileResult(targetIndex, outCompileResult, outDiagnostics);
- }
-
virtual SLANG_NO_THROW SlangResult SLANG_MCALL getResultAsFileSystem(
SlangInt entryPointIndex,
SlangInt targetIndex,
diff --git a/source/slang/slang-compiler.h b/source/slang/slang-compiler.h
index 24ddd00cc..43b51b231 100644
--- a/source/slang/slang-compiler.h
+++ b/source/slang/slang-compiler.h
@@ -285,6 +285,7 @@ class ComponentTypeVisitor;
///
class ComponentType : public RefObject,
public slang::IComponentType,
+ public slang::IComponentType2,
public slang::IModulePrecompileService_Experimental
{
public:
@@ -324,16 +325,6 @@ public:
slang::IMetadata** outMetadata,
slang::IBlob** outDiagnostics = nullptr) SLANG_OVERRIDE;
- SLANG_NO_THROW SlangResult SLANG_MCALL getEntryPointCompileResult(
- SlangInt entryPointIndex,
- SlangInt targetIndex,
- slang::ICompileResult** outCompileResult,
- slang::IBlob** outDiagnostics) SLANG_OVERRIDE;
- SLANG_NO_THROW SlangResult SLANG_MCALL getTargetCompileResult(
- SlangInt targetIndex,
- slang::ICompileResult** outCompileResult,
- slang::IBlob** outDiagnostics = nullptr) SLANG_OVERRIDE;
-
SLANG_NO_THROW SlangResult SLANG_MCALL getResultAsFileSystem(
SlangInt entryPointIndex,
SlangInt targetIndex,
@@ -369,6 +360,19 @@ public:
slang::CompilerOptionEntry* entries,
ISlangBlob** outDiagnostics) override;
+ //
+ // slang::IComponentType2 interface
+ //
+
+ SLANG_NO_THROW SlangResult SLANG_MCALL getEntryPointCompileResult(
+ SlangInt entryPointIndex,
+ SlangInt targetIndex,
+ slang::ICompileResult** outCompileResult,
+ slang::IBlob** outDiagnostics) SLANG_OVERRIDE;
+ SLANG_NO_THROW SlangResult SLANG_MCALL getTargetCompileResult(
+ SlangInt targetIndex,
+ slang::ICompileResult** outCompileResult,
+ slang::IBlob** outDiagnostics = nullptr) SLANG_OVERRIDE;
//
// slang::IModulePrecompileService interface
diff --git a/source/slang/slang.cpp b/source/slang/slang.cpp
index daebddeae..6ee50251a 100644
--- a/source/slang/slang.cpp
+++ b/source/slang/slang.cpp
@@ -5322,6 +5322,8 @@ ISlangUnknown* ComponentType::getInterface(Guid const& guid)
}
if (guid == IModulePrecompileService_Experimental::getTypeGuid())
return static_cast<slang::IModulePrecompileService_Experimental*>(this);
+ if (guid == IComponentType2::getTypeGuid())
+ return static_cast<slang::IComponentType2*>(this);
return nullptr;
}
@@ -5568,33 +5570,6 @@ SLANG_NO_THROW SlangResult SLANG_MCALL ComponentType::getEntryPointMetadata(
return SLANG_OK;
}
-SLANG_NO_THROW SlangResult SLANG_MCALL ComponentType::getEntryPointCompileResult(
- SlangInt entryPointIndex,
- Int targetIndex,
- slang::ICompileResult** outCompileResult,
- slang::IBlob** outDiagnostics)
-{
- auto linkage = getLinkage();
- if (targetIndex < 0 || targetIndex >= linkage->targets.getCount())
- return SLANG_E_INVALID_ARG;
- auto target = linkage->targets[targetIndex];
-
- auto targetProgram = getTargetProgram(target);
-
- DiagnosticSink sink(linkage->getSourceManager(), Lexer::sourceLocationLexer);
- applySettingsToDiagnosticSink(&sink, &sink, linkage->m_optionSet);
- applySettingsToDiagnosticSink(&sink, &sink, m_optionSet);
-
- IArtifact* artifact = targetProgram->getOrCreateEntryPointResult(entryPointIndex, &sink);
- sink.getBlobIfNeeded(outDiagnostics);
- if (artifact == nullptr)
- return SLANG_E_NOT_AVAILABLE;
-
- *outCompileResult = static_cast<slang::ICompileResult*>(artifact);
- (*outCompileResult)->addRef();
- return SLANG_OK;
-}
-
RefPtr<ComponentType> ComponentType::specialize(
SpecializationArg const* inSpecializationArgs,
SlangInt specializationArgCount,
@@ -5737,6 +5712,47 @@ SLANG_NO_THROW SlangResult SLANG_MCALL ComponentType::linkWithOptions(
return SLANG_OK;
}
+SLANG_NO_THROW SlangResult SLANG_MCALL ComponentType::getEntryPointCompileResult(
+ SlangInt entryPointIndex,
+ Int targetIndex,
+ slang::ICompileResult** outCompileResult,
+ slang::IBlob** outDiagnostics)
+{
+ auto linkage = getLinkage();
+ if (targetIndex < 0 || targetIndex >= linkage->targets.getCount())
+ return SLANG_E_INVALID_ARG;
+ auto target = linkage->targets[targetIndex];
+
+ auto targetProgram = getTargetProgram(target);
+
+ DiagnosticSink sink(linkage->getSourceManager(), Lexer::sourceLocationLexer);
+ applySettingsToDiagnosticSink(&sink, &sink, linkage->m_optionSet);
+ applySettingsToDiagnosticSink(&sink, &sink, m_optionSet);
+
+ IArtifact* artifact = targetProgram->getOrCreateEntryPointResult(entryPointIndex, &sink);
+ sink.getBlobIfNeeded(outDiagnostics);
+ if (artifact == nullptr)
+ return SLANG_E_NOT_AVAILABLE;
+
+ *outCompileResult = static_cast<slang::ICompileResult*>(artifact);
+ (*outCompileResult)->addRef();
+ return SLANG_OK;
+}
+
+SLANG_NO_THROW SlangResult SLANG_MCALL ComponentType::getTargetCompileResult(
+ Int targetIndex,
+ slang::ICompileResult** outCompileResult,
+ slang::IBlob** outDiagnostics)
+{
+ IArtifact* artifact = getTargetArtifact(targetIndex, outDiagnostics);
+ if (artifact == nullptr)
+ return SLANG_E_NOT_AVAILABLE;
+
+ *outCompileResult = static_cast<slang::ICompileResult*>(artifact);
+ (*outCompileResult)->addRef();
+ return SLANG_OK;
+}
+
/// Visitor used by `ComponentType::enumerateModules`
struct EnumerateModulesVisitor : ComponentTypeVisitor
{
@@ -5930,20 +5946,6 @@ SLANG_NO_THROW SlangResult SLANG_MCALL ComponentType::getTargetMetadata(
return SLANG_OK;
}
-SLANG_NO_THROW SlangResult SLANG_MCALL ComponentType::getTargetCompileResult(
- Int targetIndex,
- slang::ICompileResult** outCompileResult,
- slang::IBlob** outDiagnostics)
-{
- IArtifact* artifact = getTargetArtifact(targetIndex, outDiagnostics);
- if (artifact == nullptr)
- return SLANG_E_NOT_AVAILABLE;
-
- *outCompileResult = static_cast<slang::ICompileResult*>(artifact);
- //(*outCompileResult)->addRef(); // TODO: Needed if using a ComPtr.
- return SLANG_OK;
-}
-
//
// CompositeComponentType
//