cdd18e6811
This CL adds support for _dynamic_ calls (which are routed through dynamic invocation forwarders) to bytecode pipeline. This allows to skip argument type checks for non-covariant and non-generic-convarint-impl parameters in bytecode when calling instance members through known interface targets. In case of dynamic call, dynamic invocation forwarders perform type checks which are otherwise skipped. This CL also corrects argument type checks in forwarding stubs. Forwarding stubs are synthetic methods, introduced by front-end to ensure type safety if some of the argument type checks are skipped. The specifics of forwarding stubs is that they should use parameter types of a *target* of a stub for the argument type checks. This change unifies how argument type checks are performed in bytecode and in the VM in JIT mode. This allows to mix bytecode methods with methods JIT-compiled from kernel AST in more cases. Change-Id: I3a2720a488c8bbb91de1b189eb36ee8c51684a78 Reviewed-on: https://dart-review.googlesource.com/72543 Reviewed-by: Samir Jindel <sjindel@google.com> Reviewed-by: Régis Crelier <regis@google.com> Commit-Queue: Alexander Markov <alexmarkov@google.com>