3 ms·
V8 doesn't use an AST, it uses a CFG, but I believe it comes down to efficiency - it's far cheaper to look at the length of a string than to traverse a graph, a
by phpnode 11y ago
V8 doesn't use an AST, it uses a CFG, but I believe it comes down to efficiency - it's far cheaper to look at the length of a string than to traverse a graph, and by its nature JS needs very fast compilation times.
This is probably one of those heuristics that works well enough on enough real world code, even though everyone knows it's suboptimal. I've heard that the turbofan compiler will remove this limitation but that's still very much work in progress.
- teacup50 11y ago... and people wonder why we want a web bytecode so, so badly.
- barrkel 11y agoV8 AST: https://code.google.com/p/v8/source/browse/branches/bleeding_edge/src/ast.h https://code.google.com/p/v8/source/browse/branches/bleeding...
- phpnode 11y agothanks
- barrkel 11y agoOnly reason I brought it up was the assertion that V8 didn't have an AST. Only the most trivial of compilers avoid building an AST; V8 may not use an AST for interpretation, but interpretation / compilation will be downstream of the AST and could use info from the AST for optimization heuristics. A non-IDE AST would not normally include comments.
- phpnode 11y agoI remember thinking that it was odd when I first read about it, I think it must have been in relation to one of the other compilers and I got my wires crossed, but I can't find the source now. Thanks for the correction anyway.