【发布时间】:2020-08-23 19:02:25
【问题描述】:
我现在正在学习 V8 内部。我了解到 V8 使用 pointer tagging 进行值存储,但想知道为什么它不使用 NaN 装箱。
AFAIK,NaN 拳击更好,因为它还可以存储双打,而不仅仅是 SMI。我已经阅读了this,并且了解(如果这是真的)为什么不在 32 位平台上使用 NaN 装箱。但在 64 位平台上,我不明白为什么。
我怀疑原因与 SMI 有关。也许它们不能使用 NaN 拳击存储?我认为他们可以。我们有 52 个多余的位(我们甚至可以使用超过 32 位)。也许这将需要额外的掩码操作,这会使整数数学变慢?但是我们已经需要进行移位了!
我不知道为什么。感谢愿意回答的人。
【问题讨论】:
标签: pointers optimization v8 javascript-engine nan-boxing