DescriptionOptimizations to IC stub for unoptimized code performance on x64.
Using two CMOVs for class ID load is not a win relative to a simple branch.
Unroll the loop that checks entries in the IC data to find correct call.
Don't check a counter for overflow on 64 bit, it's not going to happen and
even if it did it makes little difference.
Don't reload receiver and arg0 for every entry in the IC data in the
multidispatch case.
According to my measurements this IC stub is about 10% faster in the
single dispatch case, and about 15% faster in the less important double
dispatch case. Unoptimzed code spends about 30% of its time in these
two stubs.
R=regis@google.com
BUG=
Committed: https://github.com/dart-lang/sdk/commit/f03f62ad09be3132f5d086ae2852ef617b94dda9
Patch Set 1 #
Total comments: 3
Patch Set 2 : Unroll loops on IA32, ARM and ARM64 too #Patch Set 3 : Add MIPS and remove more overflow checks #
Total comments: 6
Patch Set 4 : Feedback from Regis #
Messages
Total messages: 8 (2 generated)
|