DescriptionSupport fast noSuchMethod dispatch for any number of arguments.
Until now, the fast dispatch was only available with getters and
zero argument methods.
This CL generalizes the approach to any number of arguments. The
dispatcher functions that are auto-generated by the compiler
are not attached to the class anymore. Instead the dispatcher
is only stored in the IC data of each call site. Each class
contains a cache of dispatcher function that map
(name, arguments descriptor) => dispatcher.
This also fixes a bug where the VM report a wrong error message
when throwing a NoSuchMethodError.
BUG=https://code.google.com/p/dart/issues/detail?id=11528
BUG=https://code.google.com/p/dart/issues/detail?id=11223
TEST=tests/language/no_such_method_dispatcher_test.dart
R=srdjan@google.com
Committed: https://code.google.com/p/dart/source/detail?r=24876
Patch Set 1 #Patch Set 2 : #Patch Set 3 : added per-class cache of dispatch functions #Patch Set 4 : reformatting #
Total comments: 8
Patch Set 5 : addressed comments #
Total comments: 1
Messages
Total messages: 8 (0 generated)
|