propagateDynamicScopes method
Implementation
void propagateDynamicScopes(HTOptimizationResult result) {
var changed = true;
while (changed) {
changed = false;
for (final optimization in result.functions.values) {
if (optimization.localSlotCount > 65535 &&
!optimization.requiresDynamicScope) {
optimization.requiresDynamicScope = true;
changed = true;
}
if (!optimization.requiresDynamicScope) continue;
for (final upvalue in optimization.upvalues) {
final owner = upvalue.scope.function;
if (owner == null) continue;
final ownerOptimization = result.functions[owner.declaration]!;
if (!ownerOptimization.requiresDynamicScope) {
ownerOptimization.requiresDynamicScope = true;
changed = true;
}
}
}
}
}