This work should be unobservable by web developers, except for performance. It follows the
DOM spec (Interface Node), as does the current implementation.
Re-implement select DOM accessors for improved speed.
At present, DOM access from JavaScript in Chromium is not always as fast as it could be. In some benchmarks that heavily exercise DOM access we trail other browser on the same hardware.
We suspect the culprit being the Blink/V8 bindings, which are highly optimized for common access patterns, but may not do so well in other, less-common ones. In particular, the combined time of V8 jumping out of the VM plus the bindings adds a small constant overhead to any call, which is very noticeable it the useful net work done within that call is very small. An example for this are very simple accessors like firstChild, where the net work done is effectively a check on the node's flag field and access of a member variable.
This work uses a new technique, V8-assembled accessors, which allows us to re-implement several simple DOM accessors (firstChild, nextChild, previousSibling, nextSibling) so that V8 can compile the accessor code directly within V8, at least in the common case. This way, an access to these accessors from JavaScript can be executed entirely within the V8 runtime and does not require V8 to jump back into the C++ runtime and into the Blink bindings.
None. This should be invisible to web developers (except for performance).