[dart2wasm] Mark static variables initialized on assignment

New passing tests:

- co19/LibTest/core/Stopwatch/stop_A01_t01
- language/getter/setter_getters_setters_test
- language/identifier/naming_test
- language/lazy/static3_test
- language/lazy/static7_test
- language/lazy/static_test
- language/loop/for_in2_test
- language/new/statement_test
- language/nnbd/inference/variables_initialized_to_null_test
- language/operator/operator_test
- language/setter/setter0_test
- language/setter/setter1_test
- language/super/call2_test
- language/unsorted/inv_cse_licm_test

Change-Id: Id7dd53228f1476190dffe3b22ba91d04ed4c2a14
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/275320
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Ömer Ağacan <omersa@google.com>
This commit is contained in:
Ömer Sinan Ağacan 2022-12-14 13:38:27 +00:00 committed by Commit Queue
parent 77e24a6736
commit af5c53b087

View file

@ -1805,8 +1805,13 @@ class CodeGenerator extends ExpressionVisitor1<w.ValueType, w.ValueType>
Member target = node.target;
if (target is Field) {
w.Global global = translator.globals.getGlobal(target);
w.Global? flag = translator.globals.getGlobalInitializedFlag(target);
wrap(node.value, global.type.type);
b.global_set(global);
if (flag != null) {
b.i32_const(1); // true
b.global_set(flag);
}
if (preserved) {
b.global_get(global);
return global.type.type;