Use OnceLock
to cache a NormalOperation
in Target
#13995
+190
−6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
The following commits replace the
op_object
attribute ofNormalOperation
with aOnceLock
to allow the python version to be either built dynamically or cached from its original source.Details and comments
As we plan to use
PackedOperation
to add instructions to aTarget
in Rust. We should not require having a python instance to exist within. The following commits fix that by ensuring that a python instruction is not required, and if so it can be built based on aPackedOperation
's internal data.This should not have any visible effects on the current implementations, but can be proven to work via the added unit-tests.