-
Notifications
You must be signed in to change notification settings - Fork 29.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Object.is(-Number.MIN_VALUE, -0) broken on ≥ v10.0.0 #25268
Comments
@TimothyGu I guess all we need to do is identify which patch fixed this and backport it to all affected release lines? |
@ryzokuken Yeah I think so, though I don't have the resources to do that at this moment. |
The latest version of V8 seems to be just better at optimizing this sequence of calls Disassembly
Notice how the sequence of eight instructions operating on xmm's that was in the original disassembly after |
@TimothyGu I think I got the right commit that has to be backported. I am compiling right now to check if it indeed fixes the issue. I'll open a backport if it's correct. |
Done. |
This seems to be fixed as of upstream V8 7.2.502.13 (in Google Chrome 72.0.3626.28 beta) but is in all Node.js releases after 10.0.0 and the current master. It is distinct from #25221.
throws "BAD" after TurboFan runs.
--print-opt-code
reveals that the expressionObject.is(-Number.MIN_VALUE, -0)
was constant-folded totrue
, which is not good.Like before, this throws "BAD", but avoids constant folding.
--print-opt-code
reveals a complex set of floating point instructions emitted by TurboFan, that eventually lead to a bad result.Disassembly
/cc @devsnek @nodejs/v8
The text was updated successfully, but these errors were encountered: