Skip to content
This repository was archived by the owner on Jan 12, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 37 additions & 2 deletions src/QsCompiler/BondSchemas/Protocols.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,43 @@ public static void Initialize()
{
lock (BondSharedDataStructuresLock)
{
simpleBinaryDeserializerInitialization = QueueSimpleBinaryDeserializerInitialization();
simpleBinarySerializerInitialization = QueueSimpleBinarySerializerInitialization();
if (simpleBinaryDeserializerInitialization == null)
{
simpleBinaryDeserializerInitialization = QueueSimpleBinaryDeserializerInitialization();
}

if (simpleBinarySerializerInitialization == null)
{
simpleBinarySerializerInitialization = QueueSimpleBinarySerializerInitialization();
}
}
}

/// <summary>
/// Starts the creation of a Bond deserializer.
/// </summary>
public static void InitializeDeserializer()
{
lock (BondSharedDataStructuresLock)
{
if (simpleBinaryDeserializerInitialization == null)
{
simpleBinaryDeserializerInitialization = QueueSimpleBinaryDeserializerInitialization();
}
}
}

/// <summary>
/// Starts the creation of a Bond serializer.
/// </summary>
public static void InitializeSerializer()
{
lock (BondSharedDataStructuresLock)
{
if (simpleBinarySerializerInitialization == null)
{
simpleBinarySerializerInitialization = QueueSimpleBinarySerializerInitialization();
}
}
}

Expand Down
13 changes: 12 additions & 1 deletion src/QsCompiler/Compiler/CompilationLoader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -477,11 +477,22 @@ public CompilationLoader(SourceLoader loadSources, ReferenceLoader loadReference
this.RaiseCompilationTaskStart(null, "OverallCompilation");

// loading the content to compiler
BondSchemas.Protocols.Initialize();
this.logger = logger;
this.LoadDiagnostics = ImmutableArray<Diagnostic>.Empty;
this.config = options ?? default;

// When loading references is done through the generated C# a Bond deserializer is not needed.
if (!this.config.LoadReferencesBasedOnGeneratedCsharp)
{
BondSchemas.Protocols.InitializeDeserializer();
}

// When the syntax tree is not serialized a Bond serializer is not needed.
if (this.config.SerializeSyntaxTree)
{
BondSchemas.Protocols.InitializeSerializer();
}

Status rewriteStepLoading = Status.Succeeded;
this.externalRewriteSteps = ExternalRewriteStepsManager.Load(this.config, d => this.LogAndUpdateLoadDiagnostics(ref rewriteStepLoading, d), ex => this.LogAndUpdate(ref rewriteStepLoading, ex));
this.PrintLoadedRewriteSteps(this.externalRewriteSteps);
Expand Down