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: update V8 to 4.5.103.20 and merge-in master #2321

Closed
wants to merge 215 commits into from

Conversation

ofrobots
Copy link
Contributor

@ofrobots ofrobots commented Aug 7, 2015

This is for next+1, which I will rename to v8-4.5 after this lands, and after a merge of master into it.

Update to the latest branch-head for V8 4.5 [1]. This version unships spread calls
and spread arrays and fixes a few issues.

Detailed information on the V8 commits contained herein:
https://github.com/v8/v8-git-mirror/commits/4.5.103.20

Note that there is a typo in the commit log that mistakenly calls it 4.5.103.15.
For posterity, 4.5.103.20 refers to
v8/v8@71d2ce6

[1]: see https://chromium.googlesource.com/v8/v8.git/+/branch-heads/4.5

R=@bnoordhuis

EDIT: changed to 4.5.103.20

rvagg and others added 30 commits June 23, 2015 15:33
voted in to Node.js Foundation TSC in meeting on 2015-06-17

Closes: nodejs#1500
Closes: nodejs#1501
PR-URL: nodejs#2008
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
PR-URL: nodejs#1700
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
In configure, the --with-dtrace option only showed that it was true by
default on sunos. It is also true by default on darwin.

PR-URL: nodejs#2019
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
Not using test_ca.pem in these files anymore.
Using elipses.txt which has multibyte chars.
Not clear what constitutes "large" but that
can be a different ticket if elipses.txt etc.
are insufficiently large.

PR-URL: nodejs#2032
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
The readfile/pipe tests rely on pre-existing pipes in the system.
This arguably tests the OS functionality and not really io.js
functionality. Removing TODOs.

PR-URL: nodejs#2033
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
closes: nodejs#41
PR-URL: nodejs#2037
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
PR-URL: nodejs#2034
Reviewed-By: Evan Lucas <evanlucas@me.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
PR-URL: nodejs#2048
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
PR-URL: nodejs#850
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
vcbuild.bat calls python configure before setting GYP_MSVS_VERSION,
so SelectVisualStudioVersion (tools\gyp\pylib\gyp\MSVSVersion.py)
defaults to 'auto' and selects VS 2005.

vcbuild sets the environment in the current shell, so this issue
would manifest itself only on the first invocation of the script
in any given shell windows.

Reviewed-By: Julien Gilli <jgilli@fastmail.fm>
PR-URL: nodejs/node-v0.x-archive#20109
PR-URL: nodejs#2036
Reviewed-By: Alexis Campailla <alexis@janeasystems.com>
PR-URL: nodejs#2036
Reviewed-By: Alexis Campailla <alexis@janeasystems.com>
Instead of not running the dgram-bind-shared-ports
on Windows, check that it gets ENOTSUP.

PR-URL: nodejs#2035
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
PR-URL: nodejs#1938
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Alexis Campailla <alexis@janeasystems.com>
On upgrading openssl, all symlinks in pulic header files are replaced
with nested include files. The issue was raised that installing them
leads to lost its references to real header files.
To avoid this, all public header files are copied into the
`deps/openssl/openssl/include/openssl/` directory.
As a result, we have duplicated header files under
`deps/openssl/openssl/` but copied files are refereed in build as
specified to include path in openssl.gyp.

Fixes: nodejs#1975
PR-URL: nodejs#2016
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
to replace the full src download by node-gyp, using the proper format
instead of the full source format

PR-URL: nodejs#1975
Reviewed-By: William Blankenship <william.jblankenship@gmail.com>
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
Refs: nodejs#2050
PR-URL: nodejs#2053
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Use vm.isContext() to properly identify contexts.

PR-URL: nodejs/node-v0.x-archive#25382
PR-URL: nodejs#2052
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Fix the regexp used to detect 'Unexpected token' errors so that they can
be considered as recoverable. This fixes the following use case:

> var foo = 'bar \
... baz';
undefined
> foo
'bar baz'
>

Fixes: nodejs/node-v0.x-archive#8874
PR-URL: nodejs/node-v0.x-archive#8875
PR-URL: nodejs#2052
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
test-repl-tab-complete.js contains numerous assertions that are
never run. Anything that results in a ReferenceError bails out,
and never calls the functions containing the assertions. This
commit adds checking for successful tab completions, as well as
ReferenceErrors.

PR-URL: nodejs#2052
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Break up Buffer#toString() into a fast and slow path.  The fast path
optimizes for zero-length buffers and no-arg method invocation.

The speedup for zero-length buffers is a satisfying 700%.  The no-arg
toString() operation gets faster by about 13% for a one-byte buffer.

This change exploits the fact that most Buffer#toString() calls are
plain no-arg method calls.  Rewriting the method to take no arguments
means a call doesn't go through an ArgumentsAdaptorTrampoline stack
frame in the common case.

PR-URL: nodejs#2027
Reviewed-By: Brian White <mscdex@mscdex.net>
Reviewed-By: Christian Tellnes <christian@tellnes.no>
Reviewed-By: Daniel Cousens <email@dcousens.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
PR-URL: nodejs#2042
Reviewed-By: Brendan Ashworth <brendan.ashworth@me.com>
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
Tests in the disabled directory are not used by Makefile nor by the CI.
Other than a single 2015 commit that puts 'use strict' in each test,
many of them haven't been touched in years.

This removes all the disabled tests that have been unmodified since
2011 (with the exception of the 'use strict' modification mentioned
above).

PR-URL: nodejs#2045
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Evan Lucas <evanlucas@me.com>
If an object's prototype is munged it's possible to bypass the
instanceof check and cause the application to abort. Instead now use
HasInstance() to verify that the object is a Buffer, and throw if not.

This check will not work for JS only methods. So while the application
won't abort, it also won't throw.

In order to properly throw in all cases with toString() the JS
optimization of checking that length is zero has been removed. In its
place the native methods will now return early if a zero length string
is detected.

Ref: nodejs#1486
Ref: nodejs#1922
Fixes: nodejs#1485
PR-URL: nodejs#2012
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Prevent debug call from showing [object Object] for dnsopts in
lookupAndConnect

PR-URL: nodejs#2059
Reviewed-by: Colin Ihrig <cjihrig@gmail.com>
this opts for stream.push('') which has the same effect
but uses a public API.

PR-URL: nodejs#454
Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com>
3beb880 has a bug in VerifyCallback
when preverify is 1 and the cert chain has an verify error. If the
error is UNABLE_TO_GET_ISSUER_CERT_LOCALLY, it leads an assertion
error in finding rootCA.
The whitelist check should be made only when the cert chain has no
verify error with X509_V_OK.

Fixes: nodejs#2061
PR-URL: nodejs#2064
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
@ofrobots
Copy link
Contributor Author

ofrobots commented Aug 7, 2015

Are you using depot_tools to fetch the V8 git repository? See instructions here: https://code.google.com/p/v8-wiki/wiki/UsingGit#How_to_start

This is what I see:

% git log -1 --oneline branch-heads/4.5
71d2ce6 Version 4.5.103.15 (cherry-pick)

Also, if you are not using depot_tools make sure to add the following line to your .gitconfig for your clone:

fetch = +refs/branch-heads/*:refs/remotes/branch-heads/*

@targos
Copy link
Member

targos commented Aug 7, 2015

Yes, I am. It's just that the commit message is wrong:

% git log -7 --oneline branch-heads/4.5
71d2ce6 Version 4.5.103.15 (cherry-pick)
dcd6e68 Version 4.5.103.19 (cherry-pick)
9dcd869 Version 4.5.103.18 (cherry-pick)
505776f Version 4.5.103.17 (cherry-pick)
4a0c7bb Version 4.5.103.16 (cherry-pick)
ddee668 Version 4.5.103.15 (cherry-pick)
56ae497 Version 4.5.103.14 (cherry-pick)

Apparently there was a mistake with this last cherry-pick, there is no tag for it.
The 4.5.103.15 version of your PR corresponds to ddee668

@bnoordhuis
Copy link
Member

@ofrobots You should update to v8/v8@71d2ce6. It's like @targos says, the commit message is wrong and the tag is missing but it's really 4.5.103.20.

The 4.5.103.15 tag points to the real 4.5.103.15 release commit but that's already five commits behind the HEAD of the 4.5 branch.

@ofrobots
Copy link
Contributor Author

ofrobots commented Aug 7, 2015

Indeed.
I will update to v8/v8@71d2ce6

@ofrobots
Copy link
Contributor Author

ofrobots commented Aug 7, 2015

The missing tag has been added upstream now. This explains what happened to the tag. Sorry @targos for not listening to you.

Update to the latest branch-head for V8 4.5. This version unships spread calls
and spread arrays and fixes a few issues.

Detailed information on the V8 commits contained herein:
https://github.com/v8/v8-git-mirror/commits/4.5.103.20

Note that there is a typo in the commit log that mistakenly calls it 4.5.103.15.
For posterity, 4.5.103.20 refers to
v8/v8@71d2ce6
@ofrobots ofrobots changed the title deps: update V8 to 4.5.103.15 deps: update V8 to 4.5.103.20 Aug 7, 2015
sam-github and others added 7 commits August 7, 2015 13:48
- eliminate unnecessary intermediate process ("parent")
- children exit if runner dies unexpectedly (killed on a test timeout,
  for example)
- use explicit messaging from children to parents to indicate when
  worker is ready to accept http requests, rather than racing to see
  whether runner will make request before worker is listening

PR-URL: nodejs#1944
Reviewed-By: Johan Bergstrom <bugs@bergstroem.nu>
Reviewed-By: Ben Noordhuis <ben@strongloop.com>
`enableTicketKeyCallback` and `onticketkeycallback` could be potentially
used to renew the TLS Session Tickets before they expire. However this
commit will introduce it only for private use yet, because we are not
sure about the API, and already need this feature for testing.

See: nodejs#2304
PR-URL: nodejs#2312
Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
When TLS Session Ticket is renewed by server - no Certificate record is
to the client. We are prepared for empty certificate in this case, but
this relies on the session reuse check, which was implemented
incorrectly and was returning false when the TLS Session Ticket was
renewed.

Use session reuse check provided by OpenSSL instead.

Fix: nodejs#2304
PR-URL: nodejs#2312
Reviewed-By: Shigeki Ohtsu <ohtsu@iij.ad.jp>
This commit modifies util.inspect(obj) to additionally show the name of
the function that constructed the object. This often reveals useful
information about the object's prototype. In other words, instead of

> new Cls
{}

we have

> new Cls
Cls {}

This also works with exotic objects:

> class ArrayCls extends Array {}
> new ArrayCls(1, 2, 3)
ArrayCls [ 1, 2, 3 ]

The names of "trivial" constructors like Object and Array are not shown,
unless there is a mismatch between the object representation and the
prototype:

> Object.create([])
Array {}

This feature is inspired by browser devtools.

PR-URL: nodejs#1935
Reviewed-By: Roman Reiss <me@silverwind.io>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Windows 10 wasn't listed in the executable manifest.
This caused problems with trying to detect Windows 10
via `os.release()`.

PR-URL: nodejs#2332
Reviewed-By: Roman Reiss <me@silverwind.io>
Remove dead code paths that are created by assertions that will never
trigger. They may only trigger if either the `splitDeviceRe` or
`splitPathRe` regular expressions are modified. If at some point they
are modified, current unit tests will catch most of the resulting
errors and this commit adds extra tests to catch the remaining errors.

PR-URL: nodejs#2282
Reviewed-By: Roman Reiss <me@silverwind.io>
@ofrobots
Copy link
Contributor Author

ofrobots commented Aug 9, 2015

Merged master into next+1. The CI is unable to build this though because it is attempting to rebase the PR on master?

/cc @nodejs/build any ideas on how I can run a CI against this branch? https://jenkins-iojs.nodesource.com/job/node-test-pull-request/61/

@bnoordhuis
Copy link
Member

@ofrobots https://jenkins-iojs.nodesource.com/job/node-test-commit/build and enter next+1 in the REBASE_ONTO field.

@ofrobots ofrobots changed the title deps: update V8 to 4.5.103.20 deps: update V8 to 4.5.103.20 and merge-in master Aug 9, 2015
@orangemocha
Copy link
Contributor

You have to enter origin/next+1 in the REBASE_ONTO field for it to work.

I'll see if I can simplify that.

@orangemocha
Copy link
Contributor

Umm @ofrobots I think you want to pass the following to node-test-commit:
GITHUB_ORG: nodejs
REPO_NAME: io.js
GIT_REMOTE_REF: refs/pull/2321/head
REBASE_ONTO: origin/next+1

or else:
GITHUB_ORG: ofrobots
REPO_NAME: io.js
GIT_REMOTE_REF: refs/heads/next+1
REBASE_ONTO:

@ofrobots
Copy link
Contributor Author

Thanks @orangemocha, I tried that but it still doesn't work: https://jenkins-iojs.nodesource.com/job/node-test-commit/129/console. Is there a way to run the build without rebasing first? I wonder if some of the grief is caused by the rebase that was done as part of the 3.0.0 release by @rvagg.

@orangemocha
Copy link
Contributor

@ofrobots if you leave REBASE_ONTO empty then it won't rebase.

@ofrobots
Copy link
Contributor Author

@ofrobots
Copy link
Contributor Author

The CI is green except for ARM, which is failing because of novector_ic flag no longer being accepted. I'll take a look and re-spin the CI once I have a solution.

@rvagg
Copy link
Member

rvagg commented Aug 19, 2015

@ofrobots not sure why the ssh tunnel keeps on dropping out, I've tried a slightly different method, also I've installed screen on that pi so you can start a persistent session and not worry about it dropping out. Let me know if it dies again and I'll fire it up for you.

@ofrobots
Copy link
Contributor Author

@rvagg I tried several times across the evening to connect, but keep getting connection refused.

@ofrobots
Copy link
Contributor Author

Abandoning this PR in light of #2452 (comment).

@ofrobots ofrobots closed this Aug 22, 2015
@ofrobots ofrobots deleted the next+1 branch August 24, 2015 16:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in 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.