mirror of
https://github.com/dart-lang/sdk
synced 2024-09-19 23:51:47 +00:00
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:
parent
38acf9dc27
commit
3b289d4436
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue