首页 > 解决方案 > 生成 v8 的字节码时会丢失常量池内容

问题描述

这是执行'node --print-bytecode --print-bytecode-filter=incrementX index.js > code.txt'生成的输出。它丢失了常量池内容。只有池大小。我在Node中测试过。 js 版本 v8.3.0 和 v14.2.0,它们都有相同的输出。我尝试执行 'node --print-bytecode --print-bytecode-filter=incrementX index.js > code.txt v8_enable_object_print = true' ,但它没有用。

[generating bytecode for function: incrementX]
Parameter count 2
Frame size 8
   81 E> 000003FC1A1C4316 @    0 : 93                StackCheck 
   91 S> 000003FC1A1C4317 @    1 : 03 01             LdaSmi [1]
         000003FC1A1C4319 @    3 : 1f fa             Star r0
  105 E> 000003FC1A1C431B @    5 : 21 02 00 03       LdaNamedProperty a0, [0], [3]
  100 E> 000003FC1A1C431F @    9 : 2c fa 05          Add r0, [5]
  110 S> 000003FC1A1C4322 @   12 : 97                Return 
Constant pool (size = 1)
Handler Table (size = 16)

这是有内容的例子。

[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)

我在网上找了很久的答案。但是没有用。请帮助或尝试提供一些想法如何实现这一目标。

标签: node.jsv8bytecode

解决方案


推荐阅读