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

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 <bmeurer@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
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
deps: V8: cherry-pick 56f6a76
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 <bmeurer@chromium.org>
    Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#57382}

Refs: v8/v8@56f6a76

@BridgeAR BridgeAR requested a review from TimothyGu Dec 29, 2018

@TimothyGu
Copy link
Member

left a comment

Rubber-stamp LGTM.

@devsnek

This comment has been minimized.

Copy link
Member

commented Dec 29, 2018

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

@mhdawson
Copy link
Member

left a comment

Rubber stamp LGTM

@addaleax

This comment has been minimized.

Copy link
Member

commented Jan 8, 2019

@jasnell

jasnell approved these changes Jan 8, 2019

@BridgeAR

This comment has been minimized.

Copy link
Member Author

commented Jan 9, 2019

danbev added a commit that referenced this pull request Jan 9, 2019

deps: cherry-pick 56f6a76 from upstream V8
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 <bmeurer@chromium.org>
    Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#57382}

PR-URL: #25269
Refs: v8/v8@56f6a76
Fixes: #25268
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
@danbev

This comment has been minimized.

Copy link
Member

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

This comment has been minimized.

Copy link
Member

commented Jan 15, 2019

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

@BridgeAR

This comment has been minimized.

Copy link
Member Author

commented Jan 16, 2019

@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 targos added this to Backport requested in v11.x Jan 30, 2019

@targos

This comment has been minimized.

Copy link
Member

commented Feb 14, 2019

Attempts to backport to v11 and v10:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.