commit | 9f49b47823b99d01214f96917d6352c0a560fccb | [log] [tgz] |
---|---|---|
author | Alexander Markov <alexmarkov@google.com> | Mon Dec 03 19:08:42 2018 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Mon Dec 03 19:08:42 2018 +0000 |
tree | e5832e955bb3244bf26a93d14e65efc54512a377 | |
parent | aae0f7997de4d06df22766a089bc2eb18cb24e2d [diff] |
[vm/bytecode] Revise representation of objects and strings in bytecode This is a major revamp of bytecode metadata format. Now bytecode has its own serialization mechanisms. This CL adds 'bytecode component' metadata, which contains bytecode object table and string table. All references from bytecode (constant pools) to libraries, classes, members, types and strings now have a new format. References to frequently used objects are represented as indices in object table, while rarely used objects are written inline. This allows VM to cache frequently used objects while reading bytecode. Representation of strings is aligned with VM - string characters are stored in separate pools of one-byte and two-byte strings. This allows VM to avoid UTF-8 decoding and extra copying. Closure declarations are now explicit. Type parameters no longer require enslosing scopes when reading/writing them. Benchmarks: GenKernelKernelReadAllBytecode (Intel Core i5) +29.84% GenKernelKernelReadAllBytecode (Intel Xeon) +28.74% Change-Id: I4b80009733a8f8c038264af74f97c4e094b9e311 Reviewed-on: https://dart-review.googlesource.com/c/85469 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: RĂ©gis Crelier <regis@google.com> Reviewed-by: Zach Anderson <zra@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.