-
Notifications
You must be signed in to change notification settings - Fork 636
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DYN-5125: Fix for modified input nodes that are assigned non-primitive values #13136
Conversation
I'd like to understand this change better, but I'm not familiar with much of this code - could you expand on what the updateRegisters are used for? is there a way to transform the force update of input nodes into a mock modification? What are the big differences between a force update and a modification? |
@mjkkirschner the
Since we can have multiple input nodes at a time, I cannot use a single register (called |
In a delta modification, the modified subtrees/ASTs are identified by the change set computer. Among those modified ASTs, I was identifying the input nodes, and directly updating the update-registers to the RHS of the modified AST. This is because, in #12835, I assumed that the RHS of input nodes will only be primitives, so I can do this update by directly looking at the AST and getting the value, then updating the register. |
Is there a way to mark all nodes that are force re-executed as changed in the change set computer? |
I don't think it really matters in this case. |
@aparajit-pratap awesome! Is there a way to test this? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM - test would be good though for the formit regression case.
Purpose
Fixes a regression caused by #12835 where an input selection node wasn't reflecting updated values when the selection was changed. This was because
there was a force re-execution on selection change, not a modified delta execution andthe node was assigned a non-primitive value and the original design in #12835 didn't accountfor cases where an input node would be force re-executed instead of re-executed because of modification and neither did it accountfor modifications of non-primitive values. In the case of a primitive value, since the new value can be directly obtained from the AST, the register is updated in situ without actually executing instructions to push the updated value and pop it to the register. However, in the absence of a primitive value in the AST, the updated stackvalue can only be obtained from the updated VM run. Without this, the register dictionary (DSASM.Executive.updateRegisters
) is also not updated with the new stackvalue and leads to an obsolete result. The fix is to skip the instructions only for the case where the input node is being assigned a primitive value and not otherwise.Declarations
Check these if you believe they are true
*.resx
filesRelease Notes
(FILL ME IN) Brief description of the fix / enhancement. Mandatory section
Reviewers
(FILL ME IN) Reviewer 1 (If possible, assign the Reviewer for the PR)
(FILL ME IN, optional) Any additional notes to reviewers or testers.
FYIs
(FILL ME IN, Optional) Names of anyone else you wish to be notified of