platform/upstream/nodejs.git
9 years agodeps: fix v8 x32 build
Ben Noordhuis [Tue, 14 Oct 2014 20:50:08 +0000 (22:50 +0200)]
deps: fix v8 x32 build

Fix double definition errors in the libv8_base.a library target by
compiling out stub functions when building for x32.

This fix is incomplete because, although V8 now builds, it makes a
number of bad assumptions about the size of stack slots, see
https://code.google.com/p/v8/issues/detail?id=3630.

PR-URL: https://github.com/node-forward/node/pull/24
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agotest: fix non-determinism in test-crypto-domains
Ben Noordhuis [Thu, 16 Oct 2014 01:45:53 +0000 (03:45 +0200)]
test: fix non-determinism in test-crypto-domains

The test implicitly assumed that crypto operations complete in the same
order as they are started but, because they go round-trip through the
thread pool, there is no such guarantee.  Enforce proper sequencing.

Fixes node-forward/node#22.

PR-URL: https://github.com/node-forward/node/pull/23
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agosrc: attach env directly to api functions
Ben Noordhuis [Mon, 13 Oct 2014 13:19:55 +0000 (15:19 +0200)]
src: attach env directly to api functions

Attach the per-context execution environment directly to API functions.
Rationale:

 * Gets node one step closer to multi-isolate readiness.

 * Avoids multi-context confusion, e.g. when the caller and callee live
   in different contexts.

 * Avoids expensive calls to pthread_getspecific() on platforms where
   V8 does not know how to use the thread-local storage directly.
   (Linux, the BSDs.)

PR-URL: https://github.com/node-forward/node/pull/18
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agosrc: remove unused Environment::GetCurrent() calls
Ben Noordhuis [Sun, 12 Oct 2014 15:48:05 +0000 (17:48 +0200)]
src: remove unused Environment::GetCurrent() calls

Remove a few Environment::GetCurrent() calls that g++ failed to detect
were not used for anything.  The return value was assigned to a local
variable but not used meaningfully.

PR-URL: https://github.com/node-forward/node/pull/18
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agosrc: remove unused MIN macro
Ben Noordhuis [Sat, 11 Oct 2014 19:54:59 +0000 (21:54 +0200)]
src: remove unused MIN macro

Defined in src/node.cc but not actually in use; remove it.

PR-URL: https://github.com/node-forward/node/pull/18
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agosrc: ignore risky env vars when setuid root
Ben Noordhuis [Sat, 11 Oct 2014 19:48:25 +0000 (21:48 +0200)]
src: ignore risky env vars when setuid root

On POSIX platforms, check that the uid and gid match the euid and egid
respectively before looking up the environment variable.

Before this commit, an i18n-enabled suid node would cheerfully load
attacker-controlled ICU data through the NODE_ICU_DATA environment
variable.

This commit is not a complete fix.  For example, it's up for debate
what to do with the NODE_CHANNEL_FD environment variable.

PR-URL: https://github.com/node-forward/node/pull/18
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agosrc: replace assert() with CHECK()
Ben Noordhuis [Sat, 11 Oct 2014 14:52:07 +0000 (16:52 +0200)]
src: replace assert() with CHECK()

Mechanically replace assert() statements with UNREACHABLE(), CHECK(),
or CHECK_{EQ,NE,LT,GT,LE,GE}() statements.

The exceptions are src/node.h and src/node_object_wrap.h because they
are public headers.

PR-URL: https://github.com/node-forward/node/pull/16
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agosrc: fix up imports
Ben Noordhuis [Sat, 11 Oct 2014 14:48:49 +0000 (16:48 +0200)]
src: fix up imports

Make tools/check-imports.sh stop complaining, remove or reorder 'using'
statements.

PR-URL: https://github.com/node-forward/node/pull/16
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agosrc: remove unnecessary HandleScopes
Ben Noordhuis [Sat, 11 Oct 2014 14:24:12 +0000 (16:24 +0200)]
src: remove unnecessary HandleScopes

API callback functions don't need to create a v8::HandleScope instance
because V8 already creates one in the JS->C++ adapter frame.

PR-URL: https://github.com/node-forward/node/pull/16
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agodeps: fix postmortem-metadata generator in v8
Refael Ackermann [Mon, 29 Sep 2014 09:20:50 +0000 (13:20 +0400)]
deps: fix postmortem-metadata generator in v8

Reviewed-By: Fedor Indutny <fedor@indutny.com>
PR-URL: https://github.com/joyent/node/pull/8476

9 years agotest: fix error messages after v8 upgrade
Fedor Indutny [Fri, 10 Oct 2014 22:18:34 +0000 (02:18 +0400)]
test: fix error messages after v8 upgrade

9 years agogyp: build with gnu++0x for the sake of new v8
Fedor Indutny [Fri, 10 Oct 2014 22:17:49 +0000 (02:17 +0400)]
gyp: build with gnu++0x for the sake of new v8

The new v8 doesn't build on non gnu++0x, set it to a proper value for
all systems.

9 years agov8_platform: provide default v8::Platform impl
Fedor Indutny [Fri, 10 Oct 2014 22:17:03 +0000 (02:17 +0400)]
v8_platform: provide default v8::Platform impl

Provide default Platform implementation for v8's purposes.

9 years agodeps: update v8 to 3.29.93.1
Fedor Indutny [Fri, 10 Oct 2014 10:49:02 +0000 (14:49 +0400)]
deps: update v8 to 3.29.93.1

9 years agofreebsd,linux,sunos: make stack non-executable
Ben Noordhuis [Sat, 3 May 2014 01:55:35 +0000 (03:55 +0200)]
freebsd,linux,sunos: make stack non-executable

Link with -z,noexecstack to make stack memory non-executable.  Makes
shellcode injection through buffer overflows more difficult.

Fixes: https://github.com/joyent/node/issues/7542
PR-URL: https://github.com/node-forward/node/pull/8
Reviewed-By: Trevor Norris <trevnorris@gmail.com>
9 years agocrypto: update root certificates
Ben Noordhuis [Thu, 9 Oct 2014 21:10:55 +0000 (23:10 +0200)]
crypto: update root certificates

Update the list of root certificates in src/node_root_certs.h with
tools/mk-ca-bundle.pl.

PR-URL: https://github.com/node-forward/node/pull/7
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Trevor Norris <trevnorris@gmail.com>
9 years agotools: update certdata.txt
Ben Noordhuis [Thu, 9 Oct 2014 21:08:51 +0000 (23:08 +0200)]
tools: update certdata.txt

This is the latest certdata.txt from [0], last updated on 2014-10-08.

[0] https://hg.mozilla.org/mozilla-central/raw-file/f0bb13ef0ee4/security/nss/lib/ckfw/builtins/certdata.txt

PR-URL: https://github.com/node-forward/node/pull/7
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: Trevor Norris <trevnorris@gmail.com>
9 years agobuild: determine and use EXEEXT on windows
Ray Donnelly [Sat, 30 Aug 2014 22:59:05 +0000 (23:59 +0100)]
build: determine and use EXEEXT on windows

PR-URL: https://github.com/joyent/node/pull/8294
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agosrc: fixes for win32
Ray Donnelly [Sat, 30 Aug 2014 22:51:20 +0000 (23:51 +0100)]
src: fixes for win32

Update following macros:

* NODE_NET_SOCKET_{READ,WRITE}() - they both take 4 arguments,
  not 2

* NODE_COUNT_GC_PERCENTTIME() - it takes a single argument.

Use INT_PTR instead of INT32 in pointer casts in win32_etw provider.

PR-URL: https://github.com/joyent/node/pull/8294
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agobuild: fix build for SmartOS
Julien Gilli [Thu, 9 Oct 2014 20:01:27 +0000 (13:01 -0700)]
build: fix build for SmartOS

This change in V8: https://code.google.com/p/v8/source/detail?r=22210
has introduced a method named OS::GetCurrentThreadId which fails to
compile on OSes where a "gettid" syscall does not exist.
This build issue has been fixed upstream by another change:
https://code.google.com/p/v8/source/detail?r=23459. This commit
integrates this fix. It's still not clear if this is good enough for the
long term, see https://code.google.com/p/v8/issues/detail?id=3620 for
more information.

The other build issue was due to the fact that alloca.h is not included
by other system includes on SmartOS, which is assumed by V8.

PR-URL: https://github.com/joyent/node/pull/8534
Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agotest: fix debug-signal-cluster after da update
Fedor Indutny [Wed, 8 Oct 2014 10:35:07 +0000 (14:35 +0400)]
test: fix debug-signal-cluster after da update

The cluster children are hitting breakpoint at `cluster.onread` and
hanging on a Semaphore wait now. This prevents them from disconnecting
gracefully. Considering that the test is checking different thing, the
cluster children needs to be force killed from the grand parent process.

Reviewed-By: Trevor Norris <trevnorris@gmail.com>
PR-URL: https://github.com/joyent/node/pull/8476

9 years agosrc, test: fixup after v8 update
Fedor Indutny [Wed, 8 Oct 2014 10:34:51 +0000 (14:34 +0400)]
src, test: fixup after v8 update

Because of behavior change of some V8 APIs (they mostly became more
    strict), following modules needed to be fixed:

* crypto: duplicate prototype methods are not allowed anymore
* contextify: some TryCatch trickery, the binding was using it
incorrectly
* util: maximum call stack error is now crashing in a different place

Reviewed-By: Trevor Norris <trevnorris@gmail.com>
PR-URL: https://github.com/joyent/node/pull/8476

9 years agocluster: do not signal children in debug mode
Fedor Indutny [Sat, 4 Oct 2014 14:44:46 +0000 (18:44 +0400)]
cluster: do not signal children in debug mode

Do not send signal to children if they are already in debug mode.
Node.js on Windows does not register signal handler, and thus calling
`process._debugProcess()` will throw an error.

Reviewed-By: Trevor Norris <trevnorris@gmail.com>
PR-URL: https://github.com/joyent/node/pull/8476

9 years agodeps: re-implement debugger-agent
Fedor Indutny [Sat, 4 Oct 2014 14:44:39 +0000 (18:44 +0400)]
deps: re-implement debugger-agent

Reviewed-By: Trevor Norris <trevnorris@gmail.com>
PR-URL: https://github.com/joyent/node/pull/8476

9 years agodeps: fix postmortem-metadata generator in v8
Refael Ackermann [Mon, 29 Sep 2014 09:20:50 +0000 (13:20 +0400)]
deps: fix postmortem-metadata generator in v8

Reviewed-By: Fedor Indutny <fedor@indutny.com>
PR-URL: https://github.com/joyent/node/pull/8476

9 years agodeps: apply floating irhydra patch to v8
Fedor Indutny [Thu, 2 Oct 2014 04:16:24 +0000 (08:16 +0400)]
deps: apply floating irhydra patch to v8

Reviewed-By: Fedor Indutny <fedor@indutny.com>
PR-URL: https://github.com/joyent/node/pull/8476

9 years agodeps: update v8 to 3.28.73
Refael Ackermann [Mon, 29 Sep 2014 09:20:04 +0000 (13:20 +0400)]
deps: update v8 to 3.28.73

Reviewed-By: Fedor Indutny <fedor@indutny.com>
PR-URL: https://github.com/joyent/node/pull/8476

9 years agoMerge remote-tracking branch 'joyent/v0.12'
Fedor Indutny [Wed, 8 Oct 2014 11:31:45 +0000 (15:31 +0400)]
Merge remote-tracking branch 'joyent/v0.12'

9 years agobuffer, doc: misc. fix and cleanup
Trevor Norris [Wed, 8 Oct 2014 09:08:54 +0000 (02:08 -0700)]
buffer, doc: misc. fix and cleanup

* Add official documentation that a Buffer instance is a viable
  argument when instantiating a new Buffer.
* Properly set the poolOffset when a buffer needs to be truncated.
* Add comments clarifying specific peculiar coding choices.
* Remove a level of unnecessary indentation.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
9 years agosrc: update use of ExternalArrayType constants
Trevor Norris [Wed, 8 Oct 2014 08:34:46 +0000 (01:34 -0700)]
src: update use of ExternalArrayType constants

Continuation of 4809c7a to update the use of v8::ExternalArrayType.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
9 years agotools: fix for testing openssl integrations
Refael Ackermann [Thu, 2 Oct 2014 08:20:51 +0000 (11:20 +0300)]
tools: fix for testing openssl integrations

Windows doesn't resolve ".." the way we expect it for symlinks and
junctions.

PR-URL: https://github.com/joyent/node/pull/8489
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
Reviewed-by: Fedor Indutny <fedor@indutny.com>
9 years agosrc: fix jslint warning
Trevor Norris [Wed, 8 Oct 2014 08:13:43 +0000 (01:13 -0700)]
src: fix jslint warning

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
9 years agosmalloc: update use of ExternalArrayType constants
Trevor Norris [Wed, 8 Oct 2014 08:06:06 +0000 (01:06 -0700)]
smalloc: update use of ExternalArrayType constants

The constants in enum v8::ExternalArrayType have been changed. The old
values are there for legacy reasons, but it's best to update anyway.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
9 years agodoc: add missing semicolons
Steve Mao [Fri, 3 Oct 2014 05:53:15 +0000 (15:53 +1000)]
doc: add missing semicolons

PR-URL: https://github.com/joyent/node/pull/8498
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agostreams: set default encoding for writable streams
Johnny Ray [Tue, 7 Oct 2014 23:32:05 +0000 (16:32 -0700)]
streams: set default encoding for writable streams

Add API Writable#setDefaultEncoding().

PR-URL: https://github.com/joyent/node/pull/8483
Fixes: https://github.com/joyent/node/issues/7159
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agobuild: i18n: py27 -> py26 dependency
Steven R. Loomis [Sat, 4 Oct 2014 05:41:05 +0000 (22:41 -0700)]
build: i18n: py27 -> py26 dependency

Move from argparse to optparse for dependency management.

Fixes: https://github.com/joyent/node/pull/7719#issuecomment-56868172
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agobuild: i18n: move noisy variables to separate gypi
Steven R. Loomis [Sat, 4 Oct 2014 00:42:37 +0000 (17:42 -0700)]
build: i18n: move noisy variables to separate gypi

Fixes: https://github.com/joyent/node/issues/7676#issuecomment-57535890
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agourl: fixed encoding for slash switching emulation.
Evan Rutledge Borden [Fri, 26 Sep 2014 15:59:39 +0000 (11:59 -0400)]
url: fixed encoding for slash switching emulation.

Fixes: https://github.com/joyent/node/issues/8458
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
Reviewed-by: Chris Dickinson <christopher.s.dickinson@gmail.com>
9 years agodoc: improve readLine.pause()
Victor Widell [Sun, 30 Mar 2014 10:34:45 +0000 (12:34 +0200)]
doc: improve readLine.pause()

The docs for readLine.pause are misleading. I seriously spent hours on this. If
it isn't a bug, at least it should be well documented.

Someone else stumbled on this too:
http://stackoverflow.com/questions/21341050/pausing-readline-in-node-js

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
Reviewed-by: Chris Dickinson <christopher.s.dickinson@gmail.com>
9 years agodoc: Update net.markdown
Steve Sharp [Sun, 28 Sep 2014 23:03:25 +0000 (16:03 -0700)]
doc: Update net.markdown

Associates link to dns.lookup() with proper URL.

Fixes: https://github.com/joyent/node/issues/8018
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
Reviewed-by: Chris Dickinson <christopher.s.dickinson@gmail.com>
9 years agotls_wrap: ignore ZERO_RETURN after close_notify
Fedor Indutny [Mon, 6 Oct 2014 12:23:01 +0000 (16:23 +0400)]
tls_wrap: ignore ZERO_RETURN after close_notify

Do not call SSL_read() and ignore ZERO_RETURN if the connection was
shutdown and there could not be any reads.

Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
PR-URL: https://github.com/joyent/node/pull/8519

9 years agoutil: add es6 Symbol support for `util.inspect`
gyson [Wed, 1 Oct 2014 02:44:39 +0000 (10:44 +0800)]
util: add es6 Symbol support for `util.inspect`

* `util.inspect` cannot accept es6 symbol primitive
* It will throw exception if do `util.inspect(Symbol())`
* This also affects repl, console.log, etc.

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
Reviewed-by: Chris Dickinson <christopher.s.dickinson@gmail.com>
9 years agobuffer: add generic functions for (u)int ops
Yazhong Liu [Thu, 2 Oct 2014 23:24:58 +0000 (16:24 -0700)]
buffer: add generic functions for (u)int ops

Add generic functions for (U)Int read/write operations on Buffers. These
support up to and including 48 bit reads and writes.

Include documentation and tests.

Additional work done by Trevor Norris to include 40 and 48 bit write
support. Because bitwise operations cannot be used on values greater
than 32 bits, the operations have been replaced with mathematical
calculations. Regardless, they are still faster than floating point
operations.

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agobuffer: mv floating point read/write checks to JS
Trevor Norris [Wed, 1 Oct 2014 22:42:02 +0000 (15:42 -0700)]
buffer: mv floating point read/write checks to JS

Performance improvement by moving checks for floating point operations
to JS and doing the operation on a protected internal function that
assumes all arguments are correct. Still abort if the operation
overflows memory. This can only be caused if the Buffer's length
property isn't the same as the actual internal length.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
9 years agoreadline: should not require an output stream.
Julien Gilli [Mon, 22 Sep 2014 20:21:11 +0000 (13:21 -0700)]
readline: should not require an output stream.

Passing null as the output stream to readline.Interface()'s constructor
is now supported. Any output written by readline is just discarded. It
makes it easier to use readline just as a line parser.

Fixes: https://github.com/joyent/node/issues/4408
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agonode: avoid automatic microtask runs
Vladimir Kurchatkin [Mon, 22 Sep 2014 16:19:50 +0000 (20:19 +0400)]
node: avoid automatic microtask runs

Since we are taking control of the microtask queue it makes sense to
disable autorun and only run microtasks when necessary. Just setting
isolate->SetAutorunMicrotasks(false) would cause _tickCallback() not to
be called.

Automatically running the microtask queue will cause it to run:

* After callback invocation
* Inside _tickCallback()
* After _tickCallback() invocation

The third one is unnecessary as the microtask queue is guaranteed to be
empty at this point. The first only needs to be run manually when
_tickCallback() isn't going to be called by MakeCallback().

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agourl: make query() consistent
Gabriel Wicke [Thu, 25 Sep 2014 16:59:18 +0000 (09:59 -0700)]
url: make query() consistent

Match the behavior of the slow path by setting url.query to an empty
object when the url contains no query, but query parsing is requested.

Also add a test for this case, and update the documents to clearly
reflect this behavior.

Fixes: https://github.com/joyent/node/issues/8332
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agobuild, i18n: improve Intl build, add "--with-intl"
Steven R. Loomis [Fri, 5 Sep 2014 05:03:24 +0000 (22:03 -0700)]
build, i18n: improve Intl build, add "--with-intl"

The two main goals of this change are:
 - To make it easier to build the Intl option using ICU (particularly,
   using a newer ICU than v8/Chromium's version)
 - To enable a much smaller ICU build with only English support The goal
   here is to get node.js binaries built this way by default so that the
   Intl API can be used. Additional data can be added at execution time
   (see Readme and wiki)

More details are at https://github.com/joyent/node/pull/7719

In particular, this change adds the "--with-intl=" configure option to
provide more ways of building "Intl":
 - "full-icu" picks up an ICU from deps/icu
 - "small-icu" is similar, but builds only English
 - "system-icu" uses pkg-config to find an installed ICU
 - "none" does nothing (no Intl)

For Windows builds, the "full-icu" or "small-icu" options are added to
vcbuild.bat.

Note that the existing "--with-icu-path" option is not removed from
configure, but may not be used alongside the new option.

Wiki changes have already been made on
 https://github.com/joyent/node/wiki/Installation
and a new page created at
 https://github.com/joyent/node/wiki/Intl
(marked as provisional until this change lands.)

Summary of changes:

* README.md : doc updates

* .gitignore : added "deps/icu" as this is the location where ICU is
  unpacked to.

* Makefile : added the tools/icu/* files to cpplint, but excluded a
  problematic file.

* configure : added the "--with-intl" option mentioned above.
  Calculate at config time the list of ICU source files to use and data
  packaging options.

* node.gyp : add the new files src/node_i18n.cc/.h as well as ICU
  linkage.

* src/node.cc : add call into
  node::i18n::InitializeICUDirectory(icu_data_dir) as well as new
  --icu-data-dir option and NODE_ICU_DATA env variable to configure ICU
  data loading. This loading is only relevant in the "small"
  configuration.

* src/node_i18n.cc : new source file for the above Initialize..
  function, to setup ICU as needed.

* tools/icu : new directory with some tools needed for this build.

* tools/icu/icu-generic.gyp : new .gyp file that builds ICU in some new
  ways, both on unix/mac and windows.

* tools/icu/icu-system.gyp : new .gyp file to build node against a
  pkg-config detected ICU.

* tools/icu/icu_small.json : new config file for the "English-only" small
  build.

* tools/icu/icutrim.py : new tool for trimming down ICU data. Reads the
  above .json file.

* tools/icu/iculslocs.cc : new tool for repairing ICU data manifests
  after trim operation.

* tools/icu/no-op.cc : dummy file to force .gyp into using a C++ linker.

* vcbuild.bat : added small-icu and full-icu options, to call into
  configure.

* Fixed toolset dependencies, see
  https://github.com/joyent/node/pull/7719#issuecomment-54641687

Note that because of a bug in gyp {CC,CXX}_host must also be set.
Otherwise gcc/g++ will be used by default for part of the build.

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
Reviewed-by: Fedor Indutny <fedor@indutny.com>
9 years agodoc: note stdout and stderr special behaviors.
Julien Fontanet [Tue, 23 Sep 2014 14:51:33 +0000 (16:51 +0200)]
doc: note stdout and stderr special behaviors.

Reviewed-By: Trevor Norris <trev.norris@gmail.com>
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
9 years agohttp: Improve _addHeaderLines method
Jackson Tian [Wed, 24 Sep 2014 05:14:48 +0000 (13:14 +0800)]
http: Improve _addHeaderLines method

Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
Reviewed-By: Trevor Norris <trev.norris@gmail.com>
9 years agobuffer: fix and cleanup fill()
Trevor Norris [Tue, 30 Sep 2014 00:29:59 +0000 (17:29 -0700)]
buffer: fix and cleanup fill()

Running fill() with an empty string would cause Node to hang
indefinitely. Now it will return without having operated on the buffer.

User facing function has been pulled into JS to perform all initial
value checks and coercions. The C++ method has been placed on the
"internal" object.

Coerced non-string values to numbers to match v0.10 support.

Simplified logic and changed a couple variable names.

Added tests for fill() and moved them all to the beginning of
buffer-test.js since many other tests depend on fill() working properly.

Fixes: https://github.com/joyent/node/issues/8469
Signed-off-by: Trevor Norris <trev.norris@gmail.com>
9 years agodoc: fix optional parameter parsing
Trevor Norris [Mon, 29 Sep 2014 23:32:34 +0000 (16:32 -0700)]
doc: fix optional parameter parsing

The parameter parser specifically looked for the old bracket syntax.
This generated a lot of warnings when building the docs. Those warnings
have been fixed by changing the parsing logic.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
9 years agosrc: fix VC++ warning C4244
Rasmus Christian Pedersen [Thu, 18 Sep 2014 12:10:53 +0000 (14:10 +0200)]
src: fix VC++ warning C4244

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agoreadme: grammer fix
James Ferguson [Thu, 25 Sep 2014 03:19:22 +0000 (20:19 -0700)]
readme: grammer fix

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agohttp: cleanup setHeader()
Trevor Norris [Mon, 29 Sep 2014 19:32:42 +0000 (12:32 -0700)]
http: cleanup setHeader()

Several fields on OutgoingMessage were set after instantiation. These
have been included in the constructor to prevent mutation of the object
map after instantiation.

"name" is now explicitly checked to be a string. Where before if a
non-string was passed the following cryptic error was thrown:

    _http_outgoing.js:334
      var key = name.toLowerCase();
                     ^
    TypeError: undefined is not a function

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
9 years agotimer_wrap: remove HandleScopes, check return size
Trevor Norris [Mon, 29 Sep 2014 17:13:35 +0000 (10:13 -0700)]
timer_wrap: remove HandleScopes, check return size

Calls from JS to C++ have an implicit HandleScope. So there is no need
to instantiate a new HandleScope in these basic cases.

Check if the returned int64_t is an SMI and cast the return value to
uint32_t instead of a double. Prevents needing to box the return value,
and saves a small amount of execution time.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
9 years agocrypto: lower RSS usage for TLSCallbacks
Fedor Indutny [Wed, 24 Sep 2014 09:42:33 +0000 (13:42 +0400)]
crypto: lower RSS usage for TLSCallbacks

Don't allocate any BIO buffers initially, do this on a first read from
the TCP connection. Allocate different amount of data for initial read
and for consequent reads: small buffer for hello+certificate, big buffer
for better throughput.

see #8416

9 years agochild_process: improve spawn() argument handling
cjihrig [Sat, 20 Sep 2014 04:07:33 +0000 (00:07 -0400)]
child_process: improve spawn() argument handling

Add stricter argument type checking to normalizeSpawnArguments().

Removes a number of extraneous checks in spawn().

Fix regression in handling of the optional args argument.

Add more thorough testing of spawn() arguments.

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agoreadline: fix performance issue when large line
Jicheng Li [Sun, 14 Sep 2014 15:40:49 +0000 (23:40 +0800)]
readline: fix performance issue when large line

Only run lineEnding.test() on the newly acquired chunk of string instead
of on the entire line buffer.

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agodoc: fix brackets for optional parameters
Trevor Norris [Wed, 24 Sep 2014 22:41:31 +0000 (15:41 -0700)]
doc: fix brackets for optional parameters

Documentation incorrectly used bracket notation for optional parameters.
This caused inconsistencies in usage because of examples like the
following:

    fs.write(fd, data[, position[, encoding]], callback)

This simply fixes all uses of bracket notation in documentation.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
Reviewed-by: Fedor Indutny <fedor@indutny.com>
9 years agoNow working on 0.11.15
Timothy J Fontaine [Thu, 25 Sep 2014 00:14:23 +0000 (17:14 -0700)]
Now working on 0.11.15

9 years ago2014.09.24, Version 0.11.14 (Unstable)
Timothy J Fontaine [Wed, 24 Sep 2014 21:46:41 +0000 (14:46 -0700)]
2014.09.24, Version 0.11.14 (Unstable)

* uv: Upgrade to v1.0.0-rc1

* http_parser: Upgrade to v2.3.0

* npm: Upgrade to v2.0.0

* openssl: Upgrade to v1.0.1i

* v8: Upgrade to 3.26.33

* Add fast path for simple URL parsing (Gabriel Wicke)

* Added support for options parameter in console.dir() (Xavi Magrinyà)

* Cluster: fix shared handles on Windows (Alexis Campailla)

* buffer: Fix incorrect Buffer.compare behavior (Feross Aboukhadijeh)

* buffer: construct new buffer from buffer toJSON() output (cjihrig)

* buffer: improve Buffer constructor (Kang-Hao Kenny)

* build: linking CoreFoundation framework for OSX (Thorsten Lorenz)

* child_process: accept uid/gid everywhere (Fedor Indutny)

* child_process: add path to spawn ENOENT Error (Ryan Cole)

* child_process: copy spawnSync() cwd option to proper buffer (cjihrig)

* child_process: do not access stderr when stdio set to 'ignore' (cjihrig)

* child_process: don't throw on EAGAIN (Charles)

* child_process: don't throw on EMFILE/ENFILE (Ben Noordhuis)

* child_process: use full path for cmd.exe on Win32 (Ed Morley)

* cluster: allow multiple calls to setupMaster() (Ryan Graham)

* cluster: centralize removal from workers list. (Julien Gilli)

* cluster: enable error/message events using .worker (cjihrig)

* cluster: include settings object in 'setup' event (Ryan Graham)

* cluster: restore v0.10.x setupMaster() behaviour (Ryan Graham)

* cluster: support options in Worker constructor (cjihrig)

* cluster: test events emit on cluster.worker (Sam Roberts)

* console: console.dir() accepts options object (Xavi Magrinyà)

* crypto: add `honorCipherOrder` argument (Fedor Indutny)

* crypto: allow padding in RSA methods (Fedor Indutny)

* crypto: clarify RandomBytes() error msg (Mickael van der Beek)

* crypto: never store pointer to conn in SSL_CTX (Fedor Indutny)

* crypto: unsigned value can't be negative (Brian White)

* dgram: remove new keyword from errnoException (Jackson Tian)

* dns: always set variable family in lookup() (cjihrig)

* dns: include host name in error message if available (Maciej Małecki)

* dns: introduce lookupService function (Saúl Ibarra Corretgé)

* dns: send lookup c-ares errors to callback (Chris Dickinson)

* dns: throw if hostname is not string or falsey (cjihrig)

* events: Output the event that is leaking (Arnout Kazemier)

* fs: close file if fstat() fails in readFile() (cjihrig)

* fs: fs.readFile should not throw uncaughtException (Jackson Tian)

* http: add 308 status_code, see RFC7238 (Yazhong Liu)

* http: don't default OPTIONS to chunked encoding (Nick Muerdter)

* http: fix bailout for writeHead (Alex Kocharin)

* http: remove unused code block (Fedor Indutny)

* http: write() after end() emits an error. (Julien Gilli)

* lib, src: add vm.runInDebugContext() (Ben Noordhuis)

* lib: noisy deprecation of child_process customFds (Ryan Graham)

* module: don't require fs several times (Robert Kowalski)

* net,dgram: workers can listen on exclusive ports (cjihrig)

* net,stream: add isPaused, don't read() when paused (Chris Dickinson)

* net: Ensure consistent binding to IPV6 if address is absent (Raymond Feng)

* net: add remoteFamily for socket (Jackson Tian)

* net: don't emit listening if handle is closed (Eli Skeggs)

* net: don't prefer IPv4 addresses during resolution (cjihrig)

* net: don't throw on net.Server.close() (cjihrig)

* net: reset `errorEmitted` on reconnect (Ed Umansky)

* node: set names for prototype methods (Trevor Norris)

* node: support v8 microtask queue (Vladimir Kurchatkin)

* path: fix slice OOB in trim (Lucio M. Tato)

* path: isAbsolute() should always return boolean (Herman Lee)

* process: throw TypeError if kill pid not a number (Sam Roberts)

* querystring: custom encode and decode (fengmk2)

* querystring: do not add sep for empty array (cjihrig)

* querystring: remove prepended ? from query field (Ezequiel Rabinovich)

* readline: fix close event of readline.Interface() (Yazhong Liu)

* readline: fixes scoping bug (Dan Kaplun)

* readline: implements keypress buffering (Dan Kaplun)

* repl: fix multi-line input (Fedor Indutny)

* repl: fix overwrite for this._prompt (Yazhong Liu)

* repl: proper `setPrompt()` and `multiline` support (Fedor Indutny)

* stream: don't try to finish if buffer is not empty (Vladimir Kurchatkin)

* stream: only end reading on null, not undefined (Jonathan Reem)

* streams: set default hwm properly for Duplex (Andrew Oppenlander)

* string_bytes: ucs2 support big endian (Andrew Low)

* tls, crypto: add DHE support (Shigeki Ohtsu)

* tls: `checkServerIdentity` option (Trevor Livingston)

* tls: add DHE-RSA-AES128-SHA256 to the def ciphers (Shigeki Ohtsu)

* tls: better error reporting at cert validation (Fedor Indutny)

* tls: support multiple keys/certs (Fedor Indutny)

* tls: throw an error, not string (Jackson Tian)

* udp: make it possible to receive empty udp packets (Andrius Bentkus)

* url: treat  the same as / (isaacs)

9 years agodeps: upgrade npm to 2.0.0
Timothy J Fontaine [Wed, 24 Sep 2014 21:41:07 +0000 (14:41 -0700)]
deps: upgrade npm to 2.0.0

9 years agonet: Make server.connections un-enumerable
Patrick Mooney [Wed, 17 Sep 2014 18:54:24 +0000 (13:54 -0500)]
net: Make server.connections un-enumerable

The property server.connections should no longer be enumerable because
it has been deprecated. This will prevent deprecation warnings when
server objects are accessed by functions such as JSON.stringify.

Fixes: https://github.com/joyent/node/issues/8373
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agobenchmark: add test for module loader
Robert Kowalski [Sat, 13 Sep 2014 09:06:28 +0000 (11:06 +0200)]
benchmark: add test for module loader

Adds a test for benchmarking the module loader, needed for benchmarking
changes / refacortings in the module loader.

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
Reviewed-by: Timothy J Fontaine <tjfontaine@gmail.com>
9 years agotest: disable dgram-bind-shared-ports on win32
Timothy J Fontaine [Wed, 24 Sep 2014 21:13:58 +0000 (14:13 -0700)]
test: disable dgram-bind-shared-ports on win32

Windows currently doesn't support clustered dgram sockets, when it does
re-enable this test

9 years agotests: add test for buffer.slice.
Julien Gilli [Wed, 24 Sep 2014 16:36:25 +0000 (09:36 -0700)]
tests: add test for buffer.slice.

4c9b30d introduced a regression in buffer.slice that 7c3c51b fixed, but
no test had been added to make sure that a similar regression is caught
by the tests suite in the future.

9 years agotls_wrap: ensure that TLSCallbacks are gc-able
Fedor Indutny [Tue, 23 Sep 2014 09:49:42 +0000 (13:49 +0400)]
tls_wrap: ensure that TLSCallbacks are gc-able

Call `MakeWeak()` to destruct TLSCallbacks when the js-object dies.

fix #8416

Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agobuffer: fix map and set parent to undefined upstream/0.12.0
Trevor Norris [Tue, 23 Sep 2014 20:19:31 +0000 (13:19 -0700)]
buffer: fix map and set parent to undefined

In 4c9b30d removal of the prototype attributes meant NativeBuffer() no
longer had the same object map as Buffer(). By now setting the same
properties in the same order both constructors will produce the same
map.

The same commit changed "parent" from undefined to null. This caused a
failure in Buffer#slice() where it was checked if parent === undefined.
Causing the incorrect parent to be set.

Signed-off-by: Trevor Norris <trev.norris@gmail.com>
9 years agouv: apply floating patch 2f54947b
Fedor Indutny [Tue, 23 Sep 2014 20:19:39 +0000 (00:19 +0400)]
uv: apply floating patch 2f54947b

9 years agodeps: update uv to v1.0.0-rc1
Fedor Indutny [Fri, 19 Sep 2014 17:37:55 +0000 (21:37 +0400)]
deps: update uv to v1.0.0-rc1

9 years agocrypto: export externals to internal structs
Fedor Indutny [Fri, 12 Sep 2014 12:27:22 +0000 (13:27 +0100)]
crypto: export externals to internal structs

Export External getters for a internal structs: SSL, SSL_CTX.

9 years agohttp: write() after end() emits an error.
Julien Gilli [Tue, 23 Sep 2014 00:21:40 +0000 (17:21 -0700)]
http: write() after end() emits an error.

When calling write() after end() has been called on an OutgoingMessage,
an error is emitted and the write's callback is called with an instance
of Error.

Fix #7477.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agobuffer: improve Buffer constructor
Kang-Hao Kenny [Fri, 19 Sep 2014 15:14:37 +0000 (23:14 +0800)]
buffer: improve Buffer constructor

Increase the performance of new Buffer construction by initializing all
properties before SetIndexedPropertiesToExternalArrayData call.

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agodoc: corrected typo in vm docs
Andrew Teich [Fri, 19 Sep 2014 05:09:24 +0000 (22:09 -0700)]
doc: corrected typo in vm docs

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agonode: support v8 microtask queue
Vladimir Kurchatkin [Thu, 4 Sep 2014 16:02:04 +0000 (20:02 +0400)]
node: support v8 microtask queue

When V8 started supporting Promises natively it also introduced a
microtack queue. This feature operates similar to process.nextTick(),
and created an issue where neither knew when the other had run. This
patch has nextTick() call the microtask queue runner at the end of
processing callbacks in the nextTickQueue.

Fixes: https://github.com/joyent/node/issues/7714
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agotest: add test for cluster.worker.destroy()
Julien Gilli [Tue, 2 Sep 2014 17:52:45 +0000 (10:52 -0700)]
test: add test for cluster.worker.destroy()

Add a simple test to cover workers' implementation of
Worker.prototype.destroy(). Before adding this test, this code wouldn't
be covered by the tests suite, and any regression introduced in workers'
implementation of Worker.prototype.destroy wouldn't be caught.

Fixes: https://github.com/joyent/node/issues/8223
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agocrypto: never store pointer to conn in SSL_CTX
Fedor Indutny [Wed, 17 Sep 2014 22:21:32 +0000 (02:21 +0400)]
crypto: never store pointer to conn in SSL_CTX

SSL_CTX is shared between multiple connections and is not a right place
to store per-connection data.

fix #8348

Reviewed-By: Trevor Norris
9 years agocrypto: clarify RandomBytes() error msg
Mickael van der Beek [Wed, 17 Sep 2014 21:40:01 +0000 (14:40 -0700)]
crypto: clarify RandomBytes() error msg

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agowin: manifest node.exe for Windows 8.1
Alexis Campailla [Fri, 15 Aug 2014 16:25:38 +0000 (18:25 +0200)]
win: manifest node.exe for Windows 8.1

Adding a compatibility section to node.exe embedded manifest so that
Node is declared explicitly compatible with Windows 8.1. Required so
that os.release() can return the correct version on Windows 8.1.

See http://msdn.microsoft.com/en-us/library/windows/desktop/ms724451(v=vs.85).aspx

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agodoc: console example improvement
Guilherme de Souza [Fri, 12 Sep 2014 10:07:05 +0000 (07:07 -0300)]
doc: console example improvement

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
Reviewed-by: Fedor Indutny <fedor@indutny.com>
9 years agodoc: http.request() improved code example
Guilherme de Souza [Fri, 12 Sep 2014 09:25:15 +0000 (06:25 -0300)]
doc: http.request() improved code example

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
Reviewed-by: Fedor Indutny <fedor@indutny.com>
9 years agoMerge remote-tracking branch 'upstream/v0.10' into v0.12
Timothy J Fontaine [Wed, 17 Sep 2014 00:48:09 +0000 (17:48 -0700)]
Merge remote-tracking branch 'upstream/v0.10' into v0.12

Conflicts:
ChangeLog
deps/v8/src/hydrogen.cc
lib/http.js
lib/querystring.js
src/node_crypto.cc
src/node_version.h
test/simple/test-querystring.js

9 years agoNow working on 0.10.33
Timothy J Fontaine [Tue, 16 Sep 2014 23:53:10 +0000 (16:53 -0700)]
Now working on 0.10.33

9 years agoMerge branch 'v0.10.32-release' into v0.10
Timothy J Fontaine [Tue, 16 Sep 2014 23:52:57 +0000 (16:52 -0700)]
Merge branch 'v0.10.32-release' into v0.10

9 years ago2014.09.16, Version 0.10.32 (Stable) v0.10.32
Timothy J Fontaine [Tue, 16 Sep 2014 22:47:52 +0000 (15:47 -0700)]
2014.09.16, Version 0.10.32 (Stable)

* npm: Update to 1.4.28

* v8: fix a crash introduced by previous release (Fedor Indutny)

* configure: add --openssl-no-asm flag (Fedor Indutny)

* crypto: use domains for any callback-taking method (Chris Dickinson)

* http: do not send `0rnrn` in TE HEAD responses (Fedor Indutny)

* querystring: fix unescape override (Tristan Berger)

* url: Add support for RFC 3490 separators (Mathias Bynens)

9 years agonpm: Update to 1.4.28
Timothy J Fontaine [Tue, 16 Sep 2014 22:38:50 +0000 (15:38 -0700)]
npm: Update to 1.4.28

9 years agohttp: do not send `0\r\n\r\n` in TE HEAD responses
Fedor Indutny [Sat, 13 Sep 2014 12:08:25 +0000 (13:08 +0100)]
http: do not send `0\r\n\r\n` in TE HEAD responses

When replying to a HEAD request, do not attempt to send the trailers and
EOF sequence (`0\r\n\r\n`). The HEAD request MUST not have body.

Quote from RFC:

The presence of a message body in a response depends on both the
request method to which it is responding and the response status code
(Section 3.1.2).  Responses to the HEAD request method (Section 4.3.2
of [RFC7231]) never include a message body because the associated
response header fields (e.g., Transfer-Encoding, Content-Length,
etc.), if present, indicate only what their values would have been if
the request method had been GET (Section 4.3.1 of [RFC7231]).

fix #8361

Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
9 years agocrypto: use domains for any callback-taking method
Chris Dickinson [Tue, 16 Sep 2014 17:14:24 +0000 (10:14 -0700)]
crypto: use domains for any callback-taking method

This adds domains coverage for pdbkdf2, pseudoRandomBytes, and randomBytes.
All others should be covered by event emitters.

Fixes #5801.

Reviewed-By: Timothy J Fontaine <tjfontaine@gmail.com>
9 years agolib, src: add vm.runInDebugContext()
Ben Noordhuis [Fri, 22 Aug 2014 13:09:24 +0000 (15:09 +0200)]
lib, src: add vm.runInDebugContext()

Compiles and executes source code in V8's debugger context.  Provides
a programmatic way to get access to the debug object by executing:

    var Debug = vm.runInDebugContext('Debug');

Fixes #7886.

Reviewed-by: Trevor Norris <trev.norris@gmail.com>
9 years agodns: include host name in error message if available
Maciej Małecki [Wed, 6 Aug 2014 14:53:59 +0000 (16:53 +0200)]
dns: include host name in error message if available

This makes errors more readable and similar to FS errors, which also
include file name.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agodoc: document `process.env` better
Maciej Małecki [Mon, 11 Nov 2013 19:51:34 +0000 (20:51 +0100)]
doc: document `process.env` better

Fixes #6424.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agotls: fix encoding in certificate-related functions
Adam Lippai [Sat, 13 Sep 2014 22:37:34 +0000 (00:37 +0200)]
tls: fix encoding in certificate-related functions

Strings are treated as UTF8 instead of one-byte strings when
names are processed and when OpenSSL's ..._print functions are used.

This commit fixes simple/test-tls-peer-certificate-encoding test.

fix #8366

9 years agodoc: fix modules require.resolve documentation
Mathias Schreck [Wed, 3 Sep 2014 11:45:36 +0000 (13:45 +0200)]
doc: fix modules require.resolve documentation

The behavior of the `node_modules` lookup algorithm was
changed in #1177, but the documentation was not updated completely
to describe the new behavior.

The pseudocode of the lookup algorithm did not metion that
`index.json` is tried to be loaded if you require a folder.

Reviewed-By: Fedor Indutny <fedor@indutny.com>
9 years agodeps: backport 60c316 from v8 trunk
Fedor Indutny [Thu, 24 Jul 2014 09:31:45 +0000 (09:31 +0000)]
deps: backport 60c316 from v8 trunk

Original commit message:

    Extend the interceptor setter ASSERT to support the JSGlobalProxy case.

    BUG=v8:3463
    LOG=n
    R=dcarney@chromium.org

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

    git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@22589 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

Signed-off-by: Fedor Indutny <fedor@indutny.com>
fix #7969

9 years agogyp: fix post-mortem in v0.11
Fedor Indutny [Mon, 21 Jul 2014 18:12:11 +0000 (22:12 +0400)]
gyp: fix post-mortem in v0.11

Expose missing constants and keep symbols on OSX.

9 years agodeps: cherry-pick r21466 from v8 trunk
Ben Noordhuis [Fri, 23 May 2014 14:01:17 +0000 (14:01 +0000)]
deps: cherry-pick r21466 from v8 trunk

Check for cached transition to ExternalArray elements kind.
See [1] and [2] for details.

[1] https://code.google.com/p/v8/issues/detail?id=3337
[2] https://codereview.chromium.org/291193011

Signed-off-by: Fedor Indutny <fedor@indutny.com>
9 years agodeps: cherry-pick r21297 from v8 trunk
Ben Noordhuis [Wed, 14 May 2014 09:25:57 +0000 (11:25 +0200)]
deps: cherry-pick r21297 from v8 trunk

Changes the return value of PropertyCallbackInfo<T>::This() from
Local<Value> back to Local<Object>.  See [1] and [2] for background.

[1] https://groups.google.com/forum/#!topic/v8-users/wP2UcQ4cBW4
[2] https://codereview.chromium.org/285643008/

Signed-off-by: Fedor Indutny <fedor@indutny.com>
9 years agodeps: fix up v8 postmortem codegen
Ben Noordhuis [Mon, 12 May 2014 03:38:47 +0000 (05:38 +0200)]
deps: fix up v8 postmortem codegen

Signed-off-by: Fedor Indutny <fedor@indutny.com>
9 years agov8: Upgrade 3.26.33 with 14 patches
Trevor Norris [Tue, 9 Sep 2014 21:03:08 +0000 (14:03 -0700)]
v8: Upgrade 3.26.33 with 14 patches

V8 3.26.31 has received 14 patches since the upgrade to 3.26.33. Since
3.26.33 is technically a tag on the 3.27 branch, reverting back to
3.26.31 would remove now default functionality like WeakMaps. Because of
that the patches have simply been cherry-picked and squashed.

Here is a summary of all patches:

* Fix index register assignment in LoadFieldByIndex for arm, arm64, and
  mips.
* Fix invalid attributes when generalizing because of incompatible map
  change.
* Skip write barriers when updating the weak hash table.
* MIPS: Avoid HeapObject check in HStoreNamedField.
* Do GC if CodeRange fails to allocate a block.
* Array.concat: properly go to dictionary mode when required.
* Keep CodeRange::current_allocation_block_index_ in range.
* Grow heap slower if GC freed many global handles.
* Do not eliminate bounds checks for "<const> - x".
* Add missing map check to optimized f.apply(...).
* In GrowMode, force the value to the right representation to avoid
  deopts between storing the length and storing the value.
* Reduce max executable size limit.
* Fix invalid condition in check elimination effects.
* Fix off-by-one error in Array.concat slow mode check.

For more information see: https://github.com/v8/v8/commits/3.26

Reviewed-By: Fedor Indutny <fedor@indutny.com>