Skip to content
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

deps: V8: cherry-pick 56f6a76 #25269

Closed
wants to merge 1 commit into from

Conversation

BridgeAR
Copy link
Member

@BridgeAR BridgeAR commented Dec 29, 2018

Original commit message:

[turbofan] Fix -0 check for subnormals.

Previously we'd check `x` for -0 by testing `(1.0 / x) == -Infinity`,
but this will yield the wrong results when `x` is a subnormal, i.e.
really close to 0.

In CSA we already perform bit checks to test for -0, so teach TurboFan
to do the same for comparisons to -0 (via `Object.is`). We introduce a
new NumberIsMinusZero simplified operator to handle the case where
SimplifiedLowering already knows that the input is a number.

Bug: chromium:903043, v8:6882
Change-Id: I0cb7c568029b461a92fc183104d5f359b4bfe7f4
Reviewed-on: https://chromium-review.googlesource.com/c/1328802
Commit-Queue: Benedikt Meurer <[email protected]>
Reviewed-by: Sigurd Schneider <[email protected]>
Cr-Commit-Position: refs/heads/master@{#57382}

Refs: v8/v8@56f6a76

Fixes: #25268

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • documentation is changed or added
  • commit message follows commit guidelines

Original commit message:

    [turbofan] Fix -0 check for subnormals.

    Previously we'd check `x` for -0 by testing `(1.0 / x) == -Infinity`,
    but this will yield the wrong results when `x` is a subnormal, i.e.
    really close to 0.

    In CSA we already perform bit checks to test for -0, so teach TurboFan
    to do the same for comparisons to -0 (via `Object.is`). We introduce a
    new NumberIsMinusZero simplified operator to handle the case where
    SimplifiedLowering already knows that the input is a number.

    Bug: chromium:903043, v8:6882
    Change-Id: I0cb7c568029b461a92fc183104d5f359b4bfe7f4
    Reviewed-on: https://chromium-review.googlesource.com/c/1328802
    Commit-Queue: Benedikt Meurer <[email protected]>
    Reviewed-by: Sigurd Schneider <[email protected]>
    Cr-Commit-Position: refs/heads/master@{#57382}

Refs: v8/v8@56f6a76
@BridgeAR BridgeAR requested a review from TimothyGu December 29, 2018 14:36
@nodejs-github-bot nodejs-github-bot added build Issues and PRs related to build files or the CI. v8 engine Issues and PRs related to the V8 dependency. labels Dec 29, 2018
Copy link
Member

@TimothyGu TimothyGu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rubber-stamp LGTM.

@devsnek
Copy link
Member

devsnek commented Dec 29, 2018

just as a funny sidenote, we made the same mistake in node core :p #17507

Copy link
Member

@mhdawson mhdawson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rubber stamp LGTM

@addaleax
Copy link
Member

addaleax commented Jan 8, 2019

@BridgeAR BridgeAR added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Jan 9, 2019
@BridgeAR
Copy link
Member Author

BridgeAR commented Jan 9, 2019

danbev pushed a commit that referenced this pull request Jan 9, 2019
Original commit message:

    [turbofan] Fix -0 check for subnormals.

    Previously we'd check `x` for -0 by testing `(1.0 / x) == -Infinity`,
    but this will yield the wrong results when `x` is a subnormal, i.e.
    really close to 0.

    In CSA we already perform bit checks to test for -0, so teach TurboFan
    to do the same for comparisons to -0 (via `Object.is`). We introduce a
    new NumberIsMinusZero simplified operator to handle the case where
    SimplifiedLowering already knows that the input is a number.

    Bug: chromium:903043, v8:6882
    Change-Id: I0cb7c568029b461a92fc183104d5f359b4bfe7f4
    Reviewed-on: https://chromium-review.googlesource.com/c/1328802
    Commit-Queue: Benedikt Meurer <[email protected]>
    Reviewed-by: Sigurd Schneider <[email protected]>
    Cr-Commit-Position: refs/heads/master@{#57382}

PR-URL: #25269
Refs: v8/v8@56f6a76
Fixes: #25268
Reviewed-By: Tiancheng "Timothy" Gu <[email protected]>
Reviewed-By: Franziska Hinkelmann <[email protected]>
Reviewed-By: Ujjwal Sharma <[email protected]>
Reviewed-By: Gus Caplan <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Reviewed-By: James M Snell <[email protected]>
@danbev
Copy link
Contributor

danbev commented Jan 9, 2019

Landed in ddbb7d7.

I updated the commit summary/subject to be deps: cherry-pick 56f6a76 from upstream V8 to avoid the issue reported by Travis CI, hope that was ok.

@danbev danbev closed this Jan 9, 2019
@addaleax
Copy link
Member

addaleax commented Jan 15, 2019

@BridgeAR This would need a manual backport to v11.x-staging (it applies cleanly but does not compile)

@BridgeAR
Copy link
Member Author

@addaleax I would like to backport this and it lands cleanly on v11.x but it relies on some other code and I do not know the code base well enough to backport this on my own (see also #25270 (comment)).

It would be great if the @nodejs/v8-update could have a look at backporting this.

@targos
Copy link
Member

targos commented Feb 14, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
author ready PRs that have at least one approval, no pending requests for changes, and a CI started. build Issues and PRs related to build files or the CI. v8 engine Issues and PRs related to the V8 dependency.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Object.is(-Number.MIN_VALUE, -0) broken on ≥ v10.0.0