3 ms·
Technically it's V8/DOM <-> CDP <-> devtools JS -> devtools DOM -> Skia displaylist. In the current status quo, devtools requests values through CDP as you exp
by exikyut 6y ago
Technically it's V8/DOM <-> CDP <-> devtools JS -> devtools DOM -> Skia displaylist.
In the current status quo, devtools requests values through CDP as you expand the nodes.
Based on experiences with using Expand recursively on surprisingly short JSON network responses, I get the impression either the CDP I/O or the JS driving it is quite slow. Or the implementation's just accidentally quadratic.
In any case, I get the impression the right solution would be to make V8 execute and retain the deep-copy internally, then forward bits of it over CDP as requested.
Hrm, now I'm curious if the underlying mechanics that power the HeapProfiler could be readily repurposed for this.
The only fundamental issue, which is likely been the central blocker all along, is representing objects that are cyclic; the implementation would be closer to "object snapshot" than "literal deep copy".
(CDP = chrome devtools protocol, ie what gets exposed over --remote-debugging-port.)