dart-sdk/tests/web
Stephen Adams 404edd9435 [dart2js] Fix SSA value range analysis bugs
Treat the loop update marker more like an ordinary symbolic value. The old symbolic marker attempted to do widening 'on the fly', which could lead to incorrect results when the update could reset the value to a constant lower than the starting value. The new version moves the widening to a single place, at the loop update.

Fix #53355 by caching intermediate results so that long chains of diamond control flow are not explored exponentially.

There are very few changes in apps. There is one change in a Flutter app that is like the changed codegen/value_range_test where the bounds check can be eliminated because the loop index may be decremented, but not more than the increment, so is still weakly monotonic. There is one change in a large ACX app where a lower bounds check is no longer removed but I *think* it was previously removed incorrectly, though it is hard to tell since it is in a huge function.

Issue: #48465
Issue: #53078
Issue: #53355
Change-Id: Ib125cd6bb30cef52f8dfcd53eaa13e439f26316c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/322594
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
2023-08-29 00:52:58 +00:00
..
deferred
internal [ddc] Add BigInt and Symbol interceptors 2023-08-21 21:54:15 +00:00
native [ddc] Add BigInt and Symbol interceptors 2023-08-21 21:54:15 +00:00
regress [dart2js] Fix SSA value range analysis bugs 2023-08-29 00:52:58 +00:00
supermixin
wasm
assert_with_message_test.dart
assertions_disabled_test.dart
assertions_enabled_test.dart
async_helper.dart
async_stacktrace_test.dart
await_non_future_test.dart Reland "[dart2js] Add runtime type check for await." 2023-08-09 23:17:18 +00:00
big_allocation_expression_test.dart
block_expression_on_field_test.dart
bound_closure_interceptor_methods_test.dart
bounded_type_literal_test.dart
bounds_check1a_test.dart
bounds_check1b_test.dart
bounds_check2a_test.dart
bounds_check2b_test.dart
bounds_check3a_test.dart
bounds_check3b_test.dart
bounds_check3c_test.dart
bounds_check4a_test.dart
bounds_check4b_test.dart
bounds_check_test.dart
break_test.dart
call_is_function_test.dart
call_signature_test.dart
call_uninlined_test.dart
cfe_instance_constant_test.dart
checked_setter_test.dart
class_hierarchy_extends_clause_test.dart
closure2_test.dart
closure3_test.dart
closure4_test.dart
closure5_test.dart
closure6_test.dart
closure7_test.dart
closure_capture2_test.dart
closure_capture3_test.dart
closure_capture4_test.dart
closure_capture5_test.dart
closure_capture6_test.dart
closure_capture7_test.dart
closure_capture_test.dart
closure_signature_unneeded_test.dart
closure_test.dart
code_motion_exception_test.dart
compile_time_constant4_test.dart
compound_operator_index_test.dart
conditional_rewrite_test.dart
conditional_send_test.dart
conditional_test.dart
conflict_index_test.dart
consistent_add_error_test.dart
consistent_codeUnitAt_error_test.dart
consistent_index_error_array_test.dart
consistent_index_error_string_test.dart
consistent_index_error_typed_list_test.dart
consistent_null_add_error_test.dart
consistent_subtract_error_test.dart
consistent_type_error_test.dart
constant_fold_number_dart2_j_s_test.dart
constant_folding2_test.dart
constant_folding_test.dart
constant_javascript_semantics2_test.dart
constant_javascript_semantics3_test.dart
constant_javascript_semantics_test5.dart
constant_truncate_test.dart
crash_library_metadata.dart
data_uri_test.dart
deferred_fail_and_retry_lib.dart
deferred_fail_and_retry_test.dart
deferred_function_types1_test.dart
deferred_function_types2_test.dart
deferred_function_types3_test.dart
deferred_function_types4_test.dart
deferred_function_types5_test.dart
deferred_function_types6_test.dart
deferred_function_types7_test.dart
deferred_function_types8_test.dart
deferred_function_types_lib1.dart
deferred_function_types_lib2.dart
deferred_inheritance_lib1.dart
deferred_inheritance_lib2.dart
deferred_inheritance_test.dart
deferred_split_lib1.dart
deferred_split_lib2.dart
deferred_split_test.dart
deferred_tearoff_load_library_lib.dart
deferred_tearoff_load_library_test.dart
deferred_with_cross_origin_lib.dart
deferred_with_cross_origin_test.dart
deferred_with_csp_nonce2_test.dart
deferred_with_csp_nonce_lib.dart
deferred_with_csp_nonce_test.dart
do_test.dart
dynamic_bounds_check_test.dart
dynamic_generic_method_resolution_test.dart
dynamic_invocation_test.dart
dynamic_type_literal_test.dart
effectively_constant_fields_test.dart
effectively_constant_instance_field_test.dart
empty_method_test.dart
eof_line_ending_test.dart
equals_test.dart
expose_this1_test.dart
expose_this2_test.dart
field_access_test.dart
field_in_constructor_test.dart
field_initializer_test.dart
fields_test.dart
first_class_types_hashcode_test.dart
fixed_type_argument_implements_test.dart
fixed_type_argument_test.dart
foo7_test.dart
for_in_test.dart
for_test.dart
function_parameters_test.dart
function_typed_arguments_test.dart
generator_elided_parameter_test.dart
generic_bounds_test.dart
generic_class_is_test.dart
generic_in_mixin_field_test.dart
generic_in_redirect_test.dart
generic_in_super_test.dart
generic_instantiation1_test.dart
generic_instantiation2_test.dart
generic_instantiation3_test.dart
generic_instantiation4_test.dart
generic_method_dynamic_is_test.dart
generic_method_dynamic_type_test.dart
generic_method_static_is_test.dart
generic_type_error_message_test.dart
generics_factories_test.dart
generics_is_check1_test.dart
getter_element_test.dart
getters_setters_test.dart
hash_code_test.dart
identical_trace_test.dart
if_in_loop_test.dart
if_method_call_test.dart
if_null2_test.dart
if_null3_test.dart
if_null_test.dart
if_test.dart
index_test.dart
indirect_type_literal_test.dart
inference_super_set_call_test.dart
inferrer_is_int_test.dart
injected_cast_test.dart
inline_generic_test.dart
inline_position_crash_source.dart
inline_position_crash_test.dart
instantiation_stub_2_test.dart
instantiation_stub_test.dart
int_index_test.dart
interceptor_named_arguments_test.dart
interface_type_optimization_test.dart
invalid_annotation_test.dart
invoke_dynamic_test.dart
is_check_instanceof_test.dart
is_operator_test.dart
js_array_index_error_test.dart
js_array_removeLast_error_test.dart
js_array_sort_default_test.dart
js_interop_cast_test.dart
js_interop_implements_test.dart
js_interop_no_elide_optional_arg_test.dart
js_interop_optional_arg_test.dart
js_interop_test.dart
js_trust_types_disallowed_test.dart
jsinterop_test.dart
label_test.dart
late_field_checks_common.dart
late_field_checks_lib_check.dart
late_field_checks_lib_none.dart
late_field_checks_lib_trust.dart
late_field_checks_test.dart
late_initializers_1_test.dart
late_initializers_2_test.dart
late_narrowing_test.dart
late_no_inlining_test.dart
lax_runtime_type_closure_equals1_test.dart
lax_runtime_type_closure_equals2_test.dart
lax_runtime_type_closure_equals3_test.dart
lax_runtime_type_closure_equals4_test.dart
lax_runtime_type_closure_equals5_test.dart
lax_runtime_type_closure_equals6_test.dart
lax_runtime_type_closure_equals7_test.dart
lax_runtime_type_closure_equals8_test.dart
lax_runtime_type_closure_to_string3_test.dart
lax_runtime_type_closure_to_string4_test.dart
lax_runtime_type_closure_to_string5_test.dart
lax_runtime_type_closure_to_string6_test.dart
lax_runtime_type_equals1_test.dart
lax_runtime_type_equals2_test.dart
lax_runtime_type_equals3_test.dart
lax_runtime_type_equals4_test.dart
lax_runtime_type_instantiate_to_string_test.dart
LayoutTests_fast_mediastream_getusermedia_t01_test.dart
list_factory_test.dart
list_generate_1_test.dart
list_generate_2_test.dart
literal_string_juxtaposition_test.dart
literals_test.dart
local_function_call2_test.dart
local_function_call_test.dart
local_function_generic_strong_test.dart
local_function_signatures_strong_test.dart
local_function_signatures_test.dart
local_signature_test.dart
locals_test.dart
logical_and_test.dart
logical_or_test.dart
loop_if_phi_test.dart
many_constants_test.dart
many_fields_test.dart
many_instantiations_test.dart
map_to_set_test.dart
math_lib_prefix_test.dart
math_lib_test.dart
member_namespace_test.dart
method_signatures_strong_test.dart
method_signatures_test.dart
minus_zero2_test.dart
minus_zero_test.dart
mixin_subtype_test.dart
mixin_type_variable_test.dart
multi_global_def_single_instantiation_test.dart
named_mixin_runtime_type_test.dart
named_parameter_for_static_test.dart
named_parameter_test.dart
nan_index_test.dart
nan_negate_test.dart
new_from_env_test.dart
no_such_method_strong1_test.dart
no_such_method_strong2_test.dart
no_such_method_strong3_test.dart
no_such_method_strong4_test.dart
no_such_method_strong5_test.dart
no_such_method_strong6_test.dart
no_such_method_strong7_test.dart
no_such_method_strong8_test.dart
no_such_method_strong9_test.dart
no_such_method_strong10_test.dart
no_such_method_strong11_lib.dart
no_such_method_strong11_test.dart
no_such_method_strong12_test.dart
no_such_method_test.dart
non_jsinterop_test.dart
non_trivial_substitution_test.dart
not_equals_test.dart
not_test.dart
null_stacktrace_test.dart
null_test.dart
operator2_test.dart
operator3_test.dart
operator_equals_test.dart
operator_test.dart
optional_parameter_test.dart
panda_lib.dart
panda_test.dart
phi_elimination_test.dart
phi_gvn_test.dart
phi_test.dart
record_numbers_test.dart
recursive_metadata_test.dart
replaced_type_variable_test.dart
return_setter_test.dart
round_constant_folding_test.dart
rti_need_for_closure_signature_test.dart
rti_need_for_runtime_type_test.dart
runtime_type_closure_equals1_test.dart
runtime_type_closure_equals2_test.dart
runtime_type_closure_equals3_test.dart
runtime_type_closure_equals4_test.dart
runtime_type_closure_equals5_test.dart
runtime_type_closure_equals6_test.dart
runtime_type_closure_equals7_test.dart
runtime_type_closure_equals8_test.dart
runtime_type_equals1_test.dart
runtime_type_equals2_test.dart
runtime_type_equals3_test.dart
runtime_type_equals4_test.dart
runtime_type_equals5_test.dart
runtime_type_equals6_test.dart
runtime_type_equals7_test.dart
runtime_type_equals8_test.dart
runtime_type_int_test.dart
runtime_type_test.dart
runtime_type_to_string1_test.dart
scope_info_field_loop_test.dart
send_test.dart
simple_string_constant_test.dart
source_mapping_crash_source.dart
source_mapping_crash_test.dart
static_field2_test.dart
static_field_test.dart
static_method2_test.dart
static_method_test.dart
static_var_no_initializer_test.dart
static_var_test.dart
string_escape_test.dart
string_interpolation_dynamic_test.dart
string_interpolation_opt1_test.dart
string_interpolation_test.dart
super_call_test.dart
super_constructor1_test.dart
super_constructor2_test.dart
switch_equals_test.dart
switch_test.dart
sync_star_element_rti_need_test.dart
tear_off_types_test.dart
this_phi_elimination_test.dart
this_redirecting_constructor_test.dart
this_test.dart
throw1_test.dart
throw2_test.dart
timer_test.dart
to_string_test.dart
truncation_errors_test.dart
type_argument_factory_crash_test.dart
type_argument_factory_nocrash_test.dart
type_argument_optimization_test.dart
type_error_message_test.dart
type_literal2_test.dart
type_literal_test.dart
typevariable_factory_test.dart
typevariable_substitution_test.dart
typevariable_typedef_test.dart
unconditional_dartio_import_test.dart
unused_generator_type_parameter_test.dart
unused_local_const_test.dart
useful_error_message_1_test.dart
weak_reference_test.dart
web.status
while_test.dart