diff --git a/.eslintrc.yaml b/.eslintrc.yaml
index 1362c9cb29e387..0ecd781d0e9137 100644
--- a/.eslintrc.yaml
+++ b/.eslintrc.yaml
@@ -101,6 +101,13 @@ rules:
new-parens: 2
no-mixed-spaces-and-tabs: 2
no-multiple-empty-lines: [2, {max: 2, maxEOF: 0, maxBOF: 0}]
+ no-restricted-syntax: [2, {
+ selector: "CallExpression[callee.name='setTimeout'][arguments.length<2]",
+ message: "setTimeout() must be invoked with at least two arguments."
+ }, {
+ selector: "CallExpression[callee.name='setInterval'][arguments.length<2]",
+ message: "setInterval() must be invoked with at least 2 arguments"
+ }]
no-tabs: 2
no-trailing-spaces: 2
one-var-declaration-per-line: 2
@@ -135,7 +142,6 @@ rules:
assert-fail-single-argument: 2
assert-throws-arguments: [2, { requireTwo: false }]
new-with-error: [2, Error, RangeError, TypeError, SyntaxError, ReferenceError]
- timer-arguments: 2
# Global scoped method and vars
globals:
diff --git a/BUILDING.md b/BUILDING.md
index 2dd5c142779ead..61b177c12328e8 100644
--- a/BUILDING.md
+++ b/BUILDING.md
@@ -9,7 +9,7 @@ If you consistently can reproduce a test failure, search for it in the
file a new issue.
-### Unix / OS X
+### Unix / macOS
Prerequisites:
@@ -18,7 +18,7 @@ Prerequisites:
* Python 2.6 or 2.7
* GNU Make 3.81 or newer
-On OS X, you will also need:
+On macOS, you will also need:
* [Xcode](https://developer.apple.com/xcode/download/)
* You also need to install the `Command Line Tools` via Xcode. You can find
this under the menu `Xcode -> Preferences -> Downloads`
@@ -171,7 +171,7 @@ With the `--download=all`, this may download ICU if you don't have an
ICU in `deps/icu`. (The embedded `small-icu` included in the default
Node.js source does not include all locales.)
-##### Unix / OS X:
+##### Unix / macOS:
```console
$ ./configure --with-intl=full-icu --download=all
@@ -188,7 +188,7 @@ $ ./configure --with-intl=full-icu --download=all
The `Intl` object will not be available, nor some other APIs such as
`String.normalize`.
-##### Unix / OS X:
+##### Unix / macOS:
```console
$ ./configure --without-intl
@@ -200,7 +200,7 @@ $ ./configure --without-intl
> .\vcbuild nosign without-intl
```
-#### Use existing installed ICU (Unix / OS X only):
+#### Use existing installed ICU (Unix / macOS only):
```console
$ pkg-config --modversion icu-i18n && ./configure --with-intl=system-icu
@@ -216,7 +216,7 @@ You can find other ICU releases at
Download the file named something like `icu4c-**##.#**-src.tgz` (or
`.zip`).
-##### Unix / OS X
+##### Unix / macOS
From an already-unpacked ICU:
```console
diff --git a/CHANGELOG.md b/CHANGELOG.md
index ff24baf55faa72..3bf1747aa7b37c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -28,7 +28,8 @@ release.
- 7.8.0
+ 7.9.0
+ 7.8.0
7.7.4
7.7.3
7.7.2
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 4daf126bd16053..9480944c3146b9 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -157,7 +157,7 @@ Bug fixes and features **should come with tests**. Add your tests in the
project, see this [guide](./doc/guides/writing-tests.md). Looking at other tests
to see how they should be structured can also help.
-To run the tests on Unix / OS X:
+To run the tests on Unix / macOS:
```text
$ ./configure && make -j4 test
diff --git a/benchmark/url/legacy-vs-whatwg-url-searchparams-parse.js b/benchmark/url/legacy-vs-whatwg-url-searchparams-parse.js
index 86714df6c196a7..b4a80af4e5eabd 100644
--- a/benchmark/url/legacy-vs-whatwg-url-searchparams-parse.js
+++ b/benchmark/url/legacy-vs-whatwg-url-searchparams-parse.js
@@ -7,7 +7,7 @@ const inputs = require('../fixtures/url-inputs.js').searchParams;
const bench = common.createBenchmark(main, {
type: Object.keys(inputs),
method: ['legacy', 'whatwg'],
- n: [1e5]
+ n: [1e6]
});
function useLegacy(n, input) {
diff --git a/benchmark/url/legacy-vs-whatwg-url-searchparams-serialize.js b/benchmark/url/legacy-vs-whatwg-url-searchparams-serialize.js
index 7e56b5fba6e4f8..2b8d2c36a810b3 100644
--- a/benchmark/url/legacy-vs-whatwg-url-searchparams-serialize.js
+++ b/benchmark/url/legacy-vs-whatwg-url-searchparams-serialize.js
@@ -7,7 +7,7 @@ const inputs = require('../fixtures/url-inputs.js').searchParams;
const bench = common.createBenchmark(main, {
type: Object.keys(inputs),
method: ['legacy', 'whatwg'],
- n: [1e5]
+ n: [1e6]
});
function useLegacy(n, input, prop) {
diff --git a/benchmark/url/url-searchparams-read.js b/benchmark/url/url-searchparams-read.js
index 94ddaf1cfa4072..762ffcca03d69d 100644
--- a/benchmark/url/url-searchparams-read.js
+++ b/benchmark/url/url-searchparams-read.js
@@ -5,7 +5,7 @@ const { URLSearchParams } = require('url');
const bench = common.createBenchmark(main, {
method: ['get', 'getAll', 'has'],
param: ['one', 'two', 'three', 'nonexistent'],
- n: [1e6]
+ n: [2e7]
});
const str = 'one=single&two=first&three=first&two=2nd&three=2nd&three=3rd';
diff --git a/benchmark/url/whatwg-url-properties.js b/benchmark/url/whatwg-url-properties.js
index 9bdc9778a8c922..3a865d2335ab3c 100644
--- a/benchmark/url/whatwg-url-properties.js
+++ b/benchmark/url/whatwg-url-properties.js
@@ -8,7 +8,7 @@ const bench = common.createBenchmark(main, {
prop: ['href', 'origin', 'protocol',
'username', 'password', 'host', 'hostname', 'port',
'pathname', 'search', 'searchParams', 'hash'],
- n: [1e4]
+ n: [3e5]
});
function setAndGet(n, url, prop, alternative) {
diff --git a/deps/v8/src/builtins/builtins-object.cc b/deps/v8/src/builtins/builtins-object.cc
index 671397d9eacd11..53de00338ae4db 100644
--- a/deps/v8/src/builtins/builtins-object.cc
+++ b/deps/v8/src/builtins/builtins-object.cc
@@ -300,10 +300,10 @@ void Builtins::Generate_ObjectProtoToString(CodeStubAssembler* assembler) {
Node* context = assembler->Parameter(3);
assembler->GotoIf(
- assembler->Word32Equal(receiver, assembler->UndefinedConstant()),
+ assembler->WordEqual(receiver, assembler->UndefinedConstant()),
&return_undefined);
- assembler->GotoIf(assembler->Word32Equal(receiver, assembler->NullConstant()),
+ assembler->GotoIf(assembler->WordEqual(receiver, assembler->NullConstant()),
&return_null);
assembler->GotoIf(assembler->WordIsSmi(receiver), &return_number);
diff --git a/deps/v8/src/objects-body-descriptors.h b/deps/v8/src/objects-body-descriptors.h
index 91cb8883be8873..a1c3634bd762d7 100644
--- a/deps/v8/src/objects-body-descriptors.h
+++ b/deps/v8/src/objects-body-descriptors.h
@@ -99,7 +99,7 @@ class FixedBodyDescriptor final : public BodyDescriptorBase {
template
static inline void IterateBody(HeapObject* obj, int object_size) {
- IterateBody(obj);
+ IterateBody(obj);
}
};
diff --git a/deps/v8/src/objects-inl.h b/deps/v8/src/objects-inl.h
index af1261538e2b55..2549a2ac244c18 100644
--- a/deps/v8/src/objects-inl.h
+++ b/deps/v8/src/objects-inl.h
@@ -39,6 +39,27 @@
namespace v8 {
namespace internal {
+template
+uint32_t HashTable::Hash(Key key) {
+ if (Shape::UsesSeed) {
+ return Shape::SeededHash(key, GetHeap()->HashSeed());
+ } else {
+ return Shape::Hash(key);
+ }
+}
+
+
+template
+uint32_t HashTable::HashForObject(Key key,
+ Object* object) {
+ if (Shape::UsesSeed) {
+ return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
+ } else {
+ return Shape::HashForObject(key, object);
+ }
+}
+
+
PropertyDetails::PropertyDetails(Smi* smi) {
value_ = smi->value();
}
diff --git a/deps/v8/src/objects.h b/deps/v8/src/objects.h
index 1709cef15e8cd1..a3f9523e8ae9d0 100644
--- a/deps/v8/src/objects.h
+++ b/deps/v8/src/objects.h
@@ -3352,22 +3352,10 @@ class HashTable : public HashTableBase {
public:
typedef Shape ShapeT;
- // Wrapper methods
- inline uint32_t Hash(Key key) {
- if (Shape::UsesSeed) {
- return Shape::SeededHash(key, GetHeap()->HashSeed());
- } else {
- return Shape::Hash(key);
- }
- }
-
- inline uint32_t HashForObject(Key key, Object* object) {
- if (Shape::UsesSeed) {
- return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
- } else {
- return Shape::HashForObject(key, object);
- }
- }
+ // Wrapper methods. Defined in src/objects-inl.h
+ // to break a cycle with src/heap/heap.h.
+ inline uint32_t Hash(Key key);
+ inline uint32_t HashForObject(Key key, Object* object);
// Returns a new HashTable object.
MUST_USE_RESULT static Handle New(
diff --git a/deps/v8/test/mjsunit/regress/regress-crbug-664506.js b/deps/v8/test/mjsunit/regress/regress-crbug-664506.js
new file mode 100644
index 00000000000000..b0bf5e7591d4f4
--- /dev/null
+++ b/deps/v8/test/mjsunit/regress/regress-crbug-664506.js
@@ -0,0 +1,11 @@
+// Copyright 2016 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Flags: --expose-gc --predictable --random-seed=-1109634722
+
+gc();
+gc();
+assertEquals("[object Object]", Object.prototype.toString.call({}));
+gc();
+assertEquals("[object Array]", Object.prototype.toString.call([]));
diff --git a/doc/STYLE_GUIDE.md b/doc/STYLE_GUIDE.md
index f087718a6754fd..0d3fc001073fcb 100644
--- a/doc/STYLE_GUIDE.md
+++ b/doc/STYLE_GUIDE.md
@@ -39,7 +39,7 @@
* When documenting APIs, note the version the API was introduced in at
the end of the section. If an API has been deprecated, also note the first
version that the API appeared deprecated in.
-* When using dashes, use emdashes ("—", Ctrl+Alt+"-" on OSX) surrounded by
+* When using dashes, use emdashes ("—", Ctrl+Alt+"-" on macOS) surrounded by
spaces, per the New York Times usage.
* Including assets:
* If you wish to add an illustration or full program, add it to the
diff --git a/doc/api/child_process.md b/doc/api/child_process.md
index 4560e5d555a207..7f0a79dd573bd5 100644
--- a/doc/api/child_process.md
+++ b/doc/api/child_process.md
@@ -75,7 +75,7 @@ when the child process terminates.
The importance of the distinction between [`child_process.exec()`][] and
[`child_process.execFile()`][] can vary based on platform. On Unix-type operating
-systems (Unix, Linux, OSX) [`child_process.execFile()`][] can be more efficient
+systems (Unix, Linux, macOS) [`child_process.execFile()`][] can be more efficient
because it does not spawn a shell. On Windows, however, `.bat` and `.cmd`
files are not executable on their own without a terminal, and therefore cannot
be launched using [`child_process.execFile()`][]. When running on Windows, `.bat`
@@ -430,7 +430,7 @@ child.on('error', (err) => {
});
```
-*Note: Certain platforms (OS X, Linux) will use the value of `argv[0]` for the
+*Note: Certain platforms (macOS, Linux) will use the value of `argv[0]` for the
process title while others (Windows, SunOS) will use `command`.*
*Note: Node.js currently overwrites `argv[0]` with `process.execPath` on
diff --git a/doc/api/documentation.md b/doc/api/documentation.md
index 5f45c9b56ed387..450a250ea9b0d4 100644
--- a/doc/api/documentation.md
+++ b/doc/api/documentation.md
@@ -73,11 +73,11 @@ like `fs.open()`, will document that. The docs link to the corresponding man
pages (short for manual pages) which describe how the syscalls work.
**Caveat:** some syscalls, like lchown(2), are BSD-specific. That means, for
-example, that `fs.lchown()` only works on Mac OS X and other BSD-derived systems,
+example, that `fs.lchown()` only works on macOS and other BSD-derived systems,
and is not available on Linux.
Most Unix syscalls have Windows equivalents, but behavior may differ on Windows
-relative to Linux and OS X. For an example of the subtle ways in which it's
+relative to Linux and macOS. For an example of the subtle ways in which it's
sometimes impossible to replace Unix syscall semantics on Windows, see [Node
issue 4760](https://github.com/nodejs/node/issues/4760).
diff --git a/doc/api/errors.md b/doc/api/errors.md
index 96409a53677689..05758cf20b7dd7 100644
--- a/doc/api/errors.md
+++ b/doc/api/errors.md
@@ -523,7 +523,7 @@ found [here][online].
[file descriptors][] allowable on the system has been reached, and
requests for another descriptor cannot be fulfilled until at least one
has been closed. This is encountered when opening many files at once in
- parallel, especially on systems (in particular, OS X) where there is a low
+ parallel, especially on systems (in particular, macOS) where there is a low
file descriptor limit for processes. To remedy a low limit, run
`ulimit -n 2048` in the same shell that will run the Node.js process.
diff --git a/doc/api/fs.md b/doc/api/fs.md
index 1b2a3c791532c0..687ad455277dab 100644
--- a/doc/api/fs.md
+++ b/doc/api/fs.md
@@ -1099,7 +1099,7 @@ changes:
Asynchronous lchmod(2). No arguments other than a possible exception
are given to the completion callback.
-Only available on Mac OS X.
+Only available on macOS.
## fs.lchmodSync(path, mode)
-On Linux and OS X systems, `fs.watch()` resolves the path to an [inode][] and
+On Linux and macOS systems, `fs.watch()` resolves the path to an [inode][] and
watches the inode. If the watched path is deleted and recreated, it is assigned
a new inode. The watch will emit an event for the delete but will continue
watching the *original* inode. Events for the new inode will not be emitted.
@@ -1983,7 +1983,7 @@ In AIX, save and close of a file being watched causes two notifications -
one for adding new content, and one for truncation. Moreover, save and
close operations on some platforms cause inode changes that force watch
operations to become invalid and ineffective. AIX retains inode for the
-lifetime of a file, that way though this is different from Linux / OS X,
+lifetime of a file, that way though this is different from Linux / macOS,
this improves the usability of file watching. This is expected behavior.
#### Filename Argument
diff --git a/doc/api/os.md b/doc/api/os.md
index 06779dbb37cf70..480305a7e1fafa 100644
--- a/doc/api/os.md
+++ b/doc/api/os.md
@@ -363,7 +363,7 @@ added: v0.3.3
* Returns: {string}
The `os.type()` method returns a string identifying the operating system name
-as returned by uname(3). For example `'Linux'` on Linux, `'Darwin'` on OS X and
+as returned by uname(3). For example `'Linux'` on Linux, `'Darwin'` on macOS and
`'Windows_NT'` on Windows.
Please see https://en.wikipedia.org/wiki/Uname#Examples for additional
diff --git a/doc/api/process.md b/doc/api/process.md
index e10271060ff5ff..c2c56b90b90049 100644
--- a/doc/api/process.md
+++ b/doc/api/process.md
@@ -1621,12 +1621,12 @@ the current value of `ps`.
*Note*: When a new value is assigned, different platforms will impose different
maximum length restrictions on the title. Usually such restrictions are quite
-limited. For instance, on Linux and OS X, `process.title` is limited to the size
-of the binary name plus the length of the command line arguments because setting
-the `process.title` overwrites the `argv` memory of the process. Node.js v0.8
-allowed for longer process title strings by also overwriting the `environ`
-memory but that was potentially insecure and confusing in some (rather obscure)
-cases.
+limited. For instance, on Linux and macOS, `process.title` is limited to the
+size of the binary name plus the length of the command line arguments because
+setting the `process.title` overwrites the `argv` memory of the process.
+Node.js v0.8 allowed for longer process title strings by also overwriting the
+`environ` memory but that was potentially insecure and confusing in some
+(rather obscure) cases.
## process.umask([mask])
|