Update on "[compiler] Add wrapper functions to wrap change-detection storage and loading from the memo cache"

Summary: We may wish to perform some additional computation on values when they enter or exit the memo cache in change detection mode (e.g. make a deep copy, restore the original value). This builds support for doing so.

In addition, it drops the "ForDebugging" part of the flag name and makes it compatible with "disableMemoization": if memoization is disabled, we implement that by not restoring the old version of the value unless we're in a source-level memo block.

[ghstack-poisoned]
This commit is contained in:
Mike Vitousek
2024-07-26 15:52:19 -07:00
@@ -274,12 +274,14 @@ function mayHaveChanged(env: Environment, instruction: Instruction): boolean {
case "GetIterator":
case "IteratorNext":
case "NextPropertyOf":
case "PropertyLoad":
case "CallExpression":
case "MethodCall":
case "NewExpression": {
return true;
}
case "PropertyLoad": {
return instruction.value.property !== "current"
}
case "LoadGlobal": {
return (
instruction.value.binding.kind === "ModuleLocal" &&