未定义 >>> 0 == 4294967295?

undefined >>> 0 == 4294967295?

在不同的机器上得到不同的结果,想知道这是预期的行为还是对某些 CPUs 执行“>>>”操作的潜在错误?

Linux qemux86-64 4.18.41-yocto-standard #1 SMP PREEMPT Tue Oct 8 20:33:31 UTC 2019 x86_64 GNU/Linux
root@qemux86-64:~# node --v8-options|head -n 1
SSE3=1 SSSE3=1 SSE4_1=0 SAHF=1 AVX=0 FMA3=0 BMI1=0 BMI2=0 LZCNT=0 POPCNT=0 ATOM=0
root@qemux86-64:~# node -v             
v8.12.0
root@qemux86-64:~# node -e 'console.log(undefined >>> 0)'
4294967295

(undefined >>> 0) 在我测试的其他机器上计算为 0。 但是,然后 CPU 功能 启用 AVX FMA3 BMI1 BMI2 LZCNT POPCNT

这里是 V8 开发人员。这显然是一个错误(undefined >>> 0 总是应该 return 0),但不清楚该错误可能在哪里:可能在 V8 中,可能在所使用的 C++ 编译器中,可能在内核或系统库中,甚至可能在硬件中(或模拟器?主机名 "qemux86-64" 听起来可能是虚拟机);本身也可能不是错误,而是这些组件中的任何一个之间的意外交互。 FWIW,我无法复制。

节点 8 也相当旧,因此首先要尝试更新 Node/V8。也许不管它是什么已经修复了。

如果您可以 仍然使用最新版本(例如,Node 12 / V8 7.7 或更高版本)进行复制,那么请在 crbug.com/v8/new 提交错误并附上说明关于如何重现。请随时在此处的评论中留下错误编号。