我读过 JavaScript 源代码首先编译为中间表示(字节码)。然后使用 jit 将字节码编译为本机代码。所以我在我的linux机器上编译webkit,并想要获取源文件的字节码。但我不知道该怎么做?
如何查看/访问 javascript 解释器生成的中间字节代码?
如果您使用 Chrome 或 Node,JS Engine V8 会生成字节码。Safari 也有类似的标志。
V8 在 2016 年引入了字节码解释器 Ignition。您可以使用 --print-bytecode 打印字节码(Node 8.3 及更高版本)。
$ node --print-bytecode incrementX.js -e 'function incrementX(obj) {return 1 + obj.x;} incrementX({x: 42});`
...
[generating bytecode for function: incrementX]
Parameter count 2
Frame size 8
12 E> 0x2ddf8802cf6e @ StackCheck
19 S> 0x2ddf8802cf6f @ LdaSmi [1]
0x2ddf8802cf71 @ Star r0
34 E> 0x2ddf8802cf73 @ LdaNamedProperty a0, [0], [4]
28 E> 0x2ddf8802cf77 @ Add r0, [6]
36 S> 0x2ddf8802cf7a @ Return
Constant pool (size = 1)
0x2ddf8802cf21: [FixedArray] in OldSpace
- map = 0x2ddfb2d02309 <Map(HOLEY_ELEMENTS)>
- length: 1
0: 0x2ddf8db91611 <String[1]: x>
Handler Table (size = 16)
Run Code Online (Sandbox Code Playgroud)
请参阅了解 V8 的字节码。
| 归档时间: |
|
| 查看次数: |
2659 次 |
| 最近记录: |