node-tick-processor icon indicating copy to clipboard operation
node-tick-processor copied to clipboard

works with different versions of node

Open drewfish opened this issue 11 years ago • 5 comments

The current build system creates a node-tick-processor for the latest version of v8. However that might not be the version (built into node) that generated the log file.

drewfish avatar Jun 19 '14 21:06 drewfish

One possible solution is to (a) package up a few versions of node-tick-processor then (b) make bin/node-tick-processor smart enough to switch between the different versions.

drewfish avatar Jun 19 '14 21:06 drewfish

FWIW, I've grappled with this issue in the past. There's no foolproof way to detect the version of V8 that generated the v8.log (it isn't logged) but there's a heuristic approach where you scan for LazyCompile code-creation events in the first 500-1,000 log lines and try to match them, e.g.

code-creation,LazyCompile,0x248fa7e1b520,232,"TO_OBJECT native runtime.js:482",0x2180641bad8

That corresponds to the TO_OBJECT() function from the V8 that ships with node.js v0.10.29.

The output changes between major releases but it's stable between minor releases, i.e. it may have changed between 3.14 and 3.15 but it won't have changed between 3.14.4 and 3.14.5.

Realistically, that means you only need to support two V8 versions, 3.14 and 3.26, the versions that ship with v0.10 and v0.11. Maybe 3.11 too if you want to support node.js v0.8.

bnoordhuis avatar Jun 19 '14 22:06 bnoordhuis

Ideally node --version would report which version of v8 is being used :/

drewfish avatar Jun 19 '14 22:06 drewfish

Oh nice, it's in process.versions.v8.

drewfish avatar Jun 19 '14 22:06 drewfish

Yeah, but that doesn't help you if the log file was generated by another node binary.

bnoordhuis avatar Jun 19 '14 23:06 bnoordhuis