commit | d7cf6959bb823879390b56d270f8592a8ddf32b6 | [log] [tgz] |
---|---|---|
author | Martin Kustermann <kustermann@google.com> | Tue Nov 27 13:14:27 2018 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Tue Nov 27 13:14:27 2018 +0000 |
tree | c33ee89a4c51636d28606fb581854a3a0e82ea32 | |
parent | 57ecf81f91fa83a2ee91fc28284a4b8c181cf293 [diff] |
[VM] Inline ClassID.getID() eagerly, extend pattern matching logic to recognize it, use it to special case ascii decoding This change extends/fixes the exiting "pattern recognition" which tries to recognize the pattern v2 <- LoadClassIdInstr(v1) BranchIf v2 == IntegerConstant(cid) Furthermore we start inlining the recognized `ClassID.getID` method very early in the pipeline. This allows the VM to recognize the above pattern and insert redefinitions before the actual inlining pass. Furthermore we special-case two very hot methods in utf8 decoding by manually having two loops, one of which is guarded by a class-id check against the _Uint8ArrayView class, which is most common. (In the future we would like to unify the typed data layouts so we no longer need to use `ClassId.getID`, thereby also allowing non core library code to use this). This improves dart-aot by * 31%+ for a protobuf decoding benchmark we care about Issue https://github.com/dart-lang/sdk/issues/31954 Change-Id: Ia567b92b7e76ff28eda1726deaafda32732ed8f5 Reviewed-on: https://dart-review.googlesource.com/c/85281 Reviewed-by: Johnni Winther <johnniwinther@google.com> Reviewed-by: Vyacheslav Egorov <vegorov@google.com> Reviewed-by: Jenny Messerly <jmesserly@google.com> Commit-Queue: Martin Kustermann <kustermann@google.com>
Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.
Visit the dartlang.org to learn more about the language, tools, getting started, and more.
Browse pub.dartlang.org for more packages and libraries contributed by the community and the Dart team.
If you want to build Dart yourself, here is a guide to getting the source, preparing your machine to build the SDK, and building.
There are more documents on our wiki.
The easiest way to contribute to Dart is to file issues.
You can also contribute patches, as described in Contributing.