diff options
author | Weijia Wang <381152119@qq.com> | 2017-10-15 23:59:53 +0800 |
---|---|---|
committer | Refael Ackermann <refack@gmail.com> | 2017-10-20 15:51:20 -0400 |
commit | 7a71cd7d0c34b0de4d03cd931710aefdbc95c710 (patch) | |
tree | a927965a6e8fc70d3ba23d7000da6a007b41da85 /lib | |
parent | 686e092202514dfc3cf93a463e9177a80dd42133 (diff) | |
download | android-node-v8-7a71cd7d0c34b0de4d03cd931710aefdbc95c710.tar.gz android-node-v8-7a71cd7d0c34b0de4d03cd931710aefdbc95c710.tar.bz2 android-node-v8-7a71cd7d0c34b0de4d03cd931710aefdbc95c710.zip |
lib: move duplicate spliceOne into internal/util
lib/url.js and lib/events.js are using the same spliceOne function.
This change is to move it into the internal/util for avoiding duplicate
code.
PR-URL: https://github.com/nodejs/node/pull/16221
Reviewed-By: Timothy Gu <timothygu99@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Vse Mozhet Byt <vsemozhetbyt@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Anatoli Papirovski <apapirovski@mac.com>
Reviewed-By: Refael Ackermann <refack@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/events.js | 13 | ||||
-rw-r--r-- | lib/internal/util.js | 10 | ||||
-rw-r--r-- | lib/url.js | 9 |
3 files changed, 16 insertions, 16 deletions
diff --git a/lib/events.js b/lib/events.js index c7bd15dc5b..7f9a007c49 100644 --- a/lib/events.js +++ b/lib/events.js @@ -22,6 +22,7 @@ 'use strict'; var domain; +var spliceOne; function EventEmitter() { EventEmitter.init.call(this); @@ -414,8 +415,11 @@ EventEmitter.prototype.removeListener = if (position === 0) list.shift(); - else + else { + if (spliceOne === undefined) + spliceOne = require('internal/util').spliceOne; spliceOne(list, position); + } if (list.length === 1) events[type] = list[0]; @@ -527,13 +531,6 @@ EventEmitter.prototype.eventNames = function eventNames() { return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []; }; -// About 1.5x faster than the two-arg version of Array#splice(). -function spliceOne(list, index) { - for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) - list[i] = list[k]; - list.pop(); -} - function arrayClone(arr, n) { var copy = new Array(n); for (var i = 0; i < n; ++i) diff --git a/lib/internal/util.js b/lib/internal/util.js index f2d4b1facd..4d1fcb3a60 100644 --- a/lib/internal/util.js +++ b/lib/internal/util.js @@ -271,6 +271,13 @@ function join(output, separator) { return str; } +// About 1.5x faster than the two-arg version of Array#splice(). +function spliceOne(list, index) { + for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) + list[i] = list[k]; + list.pop(); +} + module.exports = { assertCrypto, cachedResult, @@ -281,10 +288,11 @@ module.exports = { filterDuplicateStrings, getConstructorOf, isError, + join, normalizeEncoding, objectToString, promisify, - join, + spliceOne, // Symbol used to customize promisify conversion customPromisifyArgs: kCustomPromisifyArgsSymbol, diff --git a/lib/url.js b/lib/url.js index 72e03e0f9c..3734a0cad6 100644 --- a/lib/url.js +++ b/lib/url.js @@ -28,6 +28,8 @@ const { hexTable } = require('internal/querystring'); const errors = require('internal/errors'); +const { spliceOne } = require('internal/util'); + // WHATWG URL implementation provided by internal/url const { URL, @@ -950,13 +952,6 @@ Url.prototype.parseHost = function parseHost() { if (host) this.hostname = host; }; -// About 1.5x faster than the two-arg version of Array#splice(). -function spliceOne(list, index) { - for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) - list[i] = list[k]; - list.pop(); -} - // These characters do not need escaping: // ! - . _ ~ // ' ( ) * : |