Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Cherry-pick patch from V8 upstream that fixes instanceof problem #7638

Closed
wants to merge 5 commits into from

Conversation

fhinkel
Copy link
Member

@fhinkel fhinkel commented Jul 9, 2016

Checklist
  • make -j4 test (UNIX)
  • test is included
  • commit message follows commit guidelines
Affected core subsystem(s)

deps V8

Description of change

Float the following patch:
InstanceOfStub incorrectly interprets the hole as a prototype.
https://codereview.chromium.org/1810953002/

Fixes: #7592

/cc @bnoordhuis

@nodejs-github-bot nodejs-github-bot added the lib / src Issues and PRs related to general changes in the lib or src directory. label Jul 9, 2016
@addaleax addaleax added v8 engine Issues and PRs related to the V8 dependency. and removed lib / src Issues and PRs related to general changes in the lib or src directory. labels Jul 9, 2016
@addaleax
Copy link
Member

addaleax commented Jul 9, 2016

I think you may want to switch the order of the commits here, so that there is no point in the history in which make test fails?

@fhinkel
Copy link
Member Author

fhinkel commented Jul 9, 2016

Oh, you're totally right. Done.

@addaleax addaleax added the v6.x label Jul 9, 2016
@@ -0,0 +1,7 @@
'use strict';
require('../common');
var assert = require('assert');
Copy link
Member

Choose a reason for hiding this comment

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

Can you use const here and below?

@bnoordhuis
Copy link
Member

@fhinkel Can you reword the commit log to be more like (e.g.) b88dee2? We use 'cherry-pick' for a clean cherry-pick and 'backport' if the patch needed nudging.

(At least, I do. Possibly some unwritten rule that we need to write down somewhere.)

@fhinkel fhinkel changed the title Float V8 patch that fixes instanceof problem Cherry-pick patch from V8 upstream that fixes instanceof problem Jul 10, 2016
@fhinkel
Copy link
Member Author

fhinkel commented Jul 10, 2016

I changed the commit message and the test. @bnoordhuis can you have another look, please?

@addaleax
Copy link
Member

LGTM

@MylesBorins
Copy link
Contributor

@bnoordhuis I started playing with making a backport / cherry-pick guide. Is there any other "unwritten rules" you can think of?

@bnoordhuis
Copy link
Member

bnoordhuis commented Jul 11, 2016

@thealphanerd "Run the V8 and node.js test suite on the CI". That's about it.

EDIT: "Don't forget to bump the patchlevel..."

@Fishrock123
Copy link
Contributor

FreeBSD has an 'interesting' error:

ln -fs out/Release/node node
./node: not found
Makefile:158: recipe for target 'test/addons/.buildstamp' failed
gmake[1]: *** [test/addons/.buildstamp] Error 1
gmake[1]: *** Waiting for unfinished jobs....
gmake[1]: Leaving directory '/usr/home/iojs/build/workspace/node-test-commit-freebsd/nodes/freebsd10-64'
Makefile:321: recipe for target 'run-ci' failed
gmake: *** [run-ci] Error 2
Build step 'Execute shell' marked build as failure

Not sure what's up with that.

Looks like ppc little-endian ubuntu is failing though, and the v8 CI also seems to have some failures.

not ok 579 parallel/test-instanceof
# 
# assert.js:89
# throw new assert.AssertionError({
# ^
# AssertionError: false == true
# at Object.<anonymous> (/home/iojs/build/workspace/node-test-commit-plinux/nodes/ppcbe-ubuntu1404/test/parallel/test-instanceof.js:7:1)
# at Module._compile (module.js:541:32)
# at Object.Module._extensions..js (module.js:550:10)
# at Module.load (module.js:458:32)
# at tryModuleLoad (module.js:417:12)
# at Function.Module._load (module.js:409:3)
# at Module.runMain (module.js:575:10)
# at run (bootstrap_node.js:352:7)
# at startup (bootstrap_node.js:144:9)
# at bootstrap_node.js:467:3

@bnoordhuis
Copy link
Member

I think it's because it's missing the PPC changes from v8/v8@3a903c4.

@mhdawson
Copy link
Member

Quite possible that there are similar changes for s390 as well. Will look at adding s390 to the v8 test job as well.

@bnoordhuis
Copy link
Member

It doesn't matter for this particular patch (no s390 in v6) but it would be good in general.

@fhinkel
Copy link
Member Author

fhinkel commented Jul 11, 2016

Thanks for running the CI. I'll add the PPC and X87 patches.

@fhinkel
Copy link
Member Author

fhinkel commented Jul 11, 2016

I cherry-picked the patches for the remaining architectures (not for s390 because it's not in v6). Can you have another look, please?

@addaleax
Copy link
Member

@fhinkel
Copy link
Member Author

fhinkel commented Jul 11, 2016

Do I need to bump the patch level or are we only doing that for 5.1?

@bnoordhuis
Copy link
Member

Yes, please bump the patchlevel.

@fhinkel fhinkel force-pushed the i7592 branch 2 times, most recently from 92345b7 to 6657bd3 Compare July 11, 2016 19:45
@fhinkel
Copy link
Member Author

fhinkel commented Jul 11, 2016

Bumped and rebased, so test is added after cherry-picks.

@ofrobots
Copy link
Contributor

LGTM.

evanlucas pushed a commit that referenced this pull request Jul 21, 2016
Original commit message:

    InstanceOfStub incorrectly interprets the hole as a prototype.

    Repair this to match what the runtime correctly does, by first
    checking if the function is a constructor before we access the
    prototype.

    R=verwaest@chromium.org

    BUG=

    Committed: https://crrev.com/2aa070be4fd2960df98905b254f12ed801ef26cd

    Cr-Commit-Position: refs/heads/master@{#34863}

This fixes the behavior of instanceof when the second parameter is not a
constructor.

Fixes: #7592
PR-URL: #7638
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
evanlucas pushed a commit that referenced this pull request Jul 21, 2016
Original commit message:

    PPC: InstanceOfStub incorrectly interprets the hole as a prototype.
    Port 2aa070b

    Original commit message:
        Repair this to match what the runtime correctly does,
        by first checking if the function is a constructor
        before we access the prototype.

    R=mvstanton@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com,
    michael_dawson@ca.ibm.com

    BUG=

    Review URL: https://codereview.chromium.org/1811013002

    Cr-Commit-Position: refs/heads/master@{#34869}

Fixes: #7592 for PPC
PR-URL: #7638
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
evanlucas pushed a commit that referenced this pull request Jul 21, 2016
Original commit message:

    port 2aa070b (r34863)

    original commit message:
        Repair this to match what the runtime correctly does,
        by first checking if the function is a constructor
        before we access the prototype.

    BUG=

    Review URL: https://codereview.chromium.org/1809333002

    Cr-Commit-Position: refs/heads/master@{#34880}

Fixes: #7592 for X87
PR-URL: #7638
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
evanlucas pushed a commit that referenced this pull request Jul 21, 2016
Ref: #7592.
PR-URL: #7638
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
evanlucas pushed a commit that referenced this pull request Jul 21, 2016
PR-URL: #7638
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
evanlucas added a commit that referenced this pull request Jul 21, 2016
Notable changes:

* **buffer**:
  * Improve performance of Buffer.from(str, 'hex') and Buffer#write(str, 'hex'). (Christopher Jeffrey) #7602
  * Fix creating from zero-length ArrayBuffer. (Ingvar Stepanyan) #7176
* **deps**:
  * Upgrade to V8 5.0.71.xx. (Ben Noordhuis) #7531
  * Backport V8 instanceof bugfix (Franziska Hinkelmann) #7638
* **repl**: Fix issue with function redeclaration. (Prince J Wesley) #7794
* **util**: Fix inspecting of boxed symbols. (Anna Henningsen) #7641

PR-URL: #7782
@evanlucas
Copy link
Contributor

landed in v6.x in 71f84b5...164981a. Thanks!

@evanlucas evanlucas closed this Jul 21, 2016
evanlucas added a commit that referenced this pull request Jul 21, 2016
Notable changes:

* **buffer**:
  * Improve performance of Buffer.from(str, 'hex') and Buffer#write(str, 'hex'). (Christopher Jeffrey) #7602
  * Fix creating from zero-length ArrayBuffer. (Ingvar Stepanyan) #7176
* **deps**:
  * Upgrade to V8 5.0.71.xx. (Ben Noordhuis) #7531
  * Backport V8 instanceof bugfix (Franziska Hinkelmann) #7638
* **repl**: Fix issue with function redeclaration. (Prince J Wesley) #7794
* **util**: Fix inspecting of boxed symbols. (Anna Henningsen) #7641

PR-URL: #7782
@bnoordhuis
Copy link
Member

I would have preferred it if this PR had landed as a single commit. We now have commits in our history where the build is known broken on some architectures, making things like git-bisect more difficult.

@fhinkel
Copy link
Member Author

fhinkel commented Jul 22, 2016

@bnoordhuis I'm not sure I understand your concern. The test is added after the three cherry-picks, I don't think the build is broken in any of the revisions.

Should bumping the patch level be a separate commit or squashed? @thealphanerd where's your cherry-pick guide?

@bnoordhuis
Copy link
Member

Sorry, I must have been thinking of another PR. You're right, here it was just the test that was failing without the PPC changes.

I have a preference for bumping the patch level in the same commit. It makes it an atomic unit, easy to roll back.

BethGriggs pushed a commit to ibmruntimes/node that referenced this pull request Jul 22, 2016
Original commit message:

    InstanceOfStub incorrectly interprets the hole as a prototype.

    Repair this to match what the runtime correctly does, by first
    checking if the function is a constructor before we access the
    prototype.

    R=verwaest@chromium.org

    BUG=

    Committed: https://crrev.com/2aa070be4fd2960df98905b254f12ed801ef26cd

    Cr-Commit-Position: refs/heads/master@{#34863}

This fixes the behavior of instanceof when the second parameter is not a
constructor.

Fixes: nodejs/node#7592
PR-URL: nodejs/node#7638
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
BethGriggs pushed a commit to ibmruntimes/node that referenced this pull request Jul 22, 2016
Original commit message:

    PPC: InstanceOfStub incorrectly interprets the hole as a prototype.
    Port 2aa070b

    Original commit message:
        Repair this to match what the runtime correctly does,
        by first checking if the function is a constructor
        before we access the prototype.

    R=mvstanton@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com,
    michael_dawson@ca.ibm.com

    BUG=

    Review URL: https://codereview.chromium.org/1811013002

    Cr-Commit-Position: refs/heads/master@{#34869}

Fixes: nodejs/node#7592 for PPC
PR-URL: nodejs/node#7638
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
BethGriggs pushed a commit to ibmruntimes/node that referenced this pull request Jul 22, 2016
Original commit message:

    port 2aa070b (r34863)

    original commit message:
        Repair this to match what the runtime correctly does,
        by first checking if the function is a constructor
        before we access the prototype.

    BUG=

    Review URL: https://codereview.chromium.org/1809333002

    Cr-Commit-Position: refs/heads/master@{#34880}

Fixes: nodejs/node#7592 for X87
PR-URL: nodejs/node#7638
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
BethGriggs pushed a commit to ibmruntimes/node that referenced this pull request Jul 22, 2016
PR-URL: nodejs/node#7638
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Ali Ijaz Sheikh <ofrobots@google.com>
lukesampson pushed a commit to ScoopInstaller/Scoop that referenced this pull request Jul 24, 2016
### Notable changes

* **buffer**:
  * Improve performance of Buffer.from(str, 'hex') and Buffer#write(str, 'hex'). (Christopher Jeffrey) [#7602](nodejs/node#7602)
  * Fix creating from zero-length ArrayBuffer. (Ingvar Stepanyan) [#7176](nodejs/node#7176)
* **deps**:
  * Upgrade to V8 5.0.71.xx. (Ben Noordhuis) [#7531](nodejs/node#7531)
  * Backport V8 instanceof bugfix (Franziska Hinkelmann) [#7638](nodejs/node#7638)
* **repl**: Fix issue with function redeclaration. (Prince J Wesley) [#7794](nodejs/node#7794)
* **util**: Fix inspecting of boxed symbols. (Anna Henningsen) [#7641](nodejs/node#7641)
@rvagg
Copy link
Member

rvagg commented Oct 19, 2016

@fhinkel do you think this should also land on master? it's dying out with the v6.x series but perhaps it's generic enough to warrant keeping around.

@fhinkel
Copy link
Member Author

fhinkel commented Oct 19, 2016

@rvagg You mean if the test should be ported to master? Yes, let me do that. Then we can let this die with v6.x.

@rvagg
Copy link
Member

rvagg commented Oct 20, 2016

@fhinkel yeah, thanks, it came up as one of the commits on v6.x that are not on v7.x and I just wanted clarification regarding whether this should live on beyond v6.x and getting it on master is obviously the way to do that.

fhinkel added a commit to fhinkel/node that referenced this pull request Oct 20, 2016
Add regression test for issue nodejs#7592.
The issue was fixed in upstream V8 and this test case was
previously added with a manual cherry pick for v6.x.

Related to: nodejs#7638 and
nodejs#7592.
fhinkel added a commit that referenced this pull request Oct 20, 2016
Add regression test for issue
#7592.
The issue was fixed in upstream V8 and this test case was
previously added with a manual cherry pick for v6.x.

Related to: #7638 and
#7592.

PR-URL: #9178
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
jasnell pushed a commit that referenced this pull request Oct 20, 2016
Add regression test for issue
#7592.
The issue was fixed in upstream V8 and this test case was
previously added with a manual cherry pick for v6.x.

Related to: #7638 and
#7592.

PR-URL: #9178
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
MylesBorins pushed a commit that referenced this pull request Nov 15, 2016
Add regression test for issue
#7592.
The issue was fixed in upstream V8 and this test case was
previously added with a manual cherry pick for v6.x.

Related to: #7638 and
#7592.

PR-URL: #9178
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
v8 engine Issues and PRs related to the V8 dependency.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants