dart2js cps: Extend type masks to handle reflective invocations.

BUG=
R=sra@google.com

Review URL: https://codereview.chromium.org/1430453002 .
This commit is contained in:
Asger Feldthaus 2015-11-27 10:48:37 +01:00
parent 38acf9dc27
commit 3b289d4436
5 changed files with 6 additions and 8 deletions

View file

@ -272,6 +272,7 @@ class CodeGenerator extends tree_ir.StatementVisitor
void registerMethodInvoke(tree_ir.InvokeMethod node) {
Selector selector = node.selector;
TypeMask mask = node.mask;
mask = glue.extendMaskIfReachesAll(selector, mask);
if (selector.isGetter) {
registry.registerDynamicUse(new DynamicUse(selector, mask));
} else if (selector.isSetter) {

View file

@ -30,7 +30,7 @@ import '../../universe/selector.dart' show
Selector;
import '../../world.dart' show
ClassWorld;
import '../../types/types.dart';
/// Encapsulates the dependencies of the function-compiler to the compiler,
/// backend and emitter.
@ -287,5 +287,9 @@ class Glue {
return _backend.constants.getConstantValueForVariable(elem);
}
TypeMask extendMaskIfReachesAll(Selector selector, TypeMask mask) {
return _compiler.world.extendMaskIfReachesAll(selector, mask);
}
FunctionElement get closureFromTearOff => _backend.helpers.closureFromTearOff;
}

View file

@ -23,7 +23,6 @@ compute_this_script_test: Skip # Issue 17458
[ $compiler == dart2js && $cps_ir ]
native_exception_test: RuntimeError # Issue 24421
native_method_inlining_test: RuntimeError # Please triage this failure.
native_no_such_method_exception3_frog_test: RuntimeError # Please triage this failure.
optimization_hints_test: RuntimeError # Please triage this failure.
subclassing_constructor_1_test: RuntimeError # Please triage this failure.
subclassing_constructor_2_test: RuntimeError # Please triage this failure.

View file

@ -333,16 +333,12 @@ gc_test: Crash # Internal Error: Pending statics (see above).
infinite_switch_label_test: Crash # (switch (target){l0:... continue to a labeled switch case
instanceof2_test: RuntimeError # Please triage this failure.
instanceof4_test/01: RuntimeError # Please triage this failure.
invocation_mirror_invoke_on_test: RuntimeError # Please triage this failure.
invocation_mirror_test: Crash # (super[37]=42): visitUnresolvedSuperIndexSet
issue_1751477_test: RuntimeError # O.loadLibrary is not a function
list_is_test: RuntimeError # Please triage this failure.
list_test: RuntimeError # Please triage this failure.
many_generic_instanceof_test: RuntimeError # Please triage this failure.
many_overridden_no_such_method_test: RuntimeError # Please triage this failure.
nested_switch_label_test: Crash # (switch (target){out... continue to a labeled switch case
no_such_method_test: RuntimeError # Please triage this failure.
overridden_no_such_method_test: RuntimeError # Please triage this failure.
regress_22443_test: RuntimeError # M.loadLibrary is not a function
regress_23408_test: RuntimeError # G.loadLibrary is not a function
regress_23500_test/01: Crash # (await for(var c in new Stream.fromIterable([] )){}): await for

View file

@ -347,8 +347,6 @@ async/stream_iterator_test: Crash # (Stream createCancel... cannot handle sync*
mirrors/deferred_mirrors_metadata_test: RuntimeError # U.loadLibrary is not a function
mirrors/deferred_mirrors_metatarget_test: RuntimeError # X.loadLibrary is not a function
mirrors/deferred_mirrors_update_test: RuntimeError # U.loadLibrary is not a function
mirrors/delegate_call_through_getter_test: RuntimeError # Please triage this failure.
mirrors/delegate_test: RuntimeError # Please triage this failure.
mirrors/library_enumeration_deferred_loading_test: RuntimeError # L.loadLibrary is not a function
mirrors/symbol_validation_test/none: RuntimeError # Please triage this failure.
mirrors/typedef_deferred_library_test: RuntimeError # G.loadLibrary is not a function