diff options
author | Michaël Zasso <targos@protonmail.com> | 2016-05-27 16:37:42 +0200 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2016-06-29 09:04:28 +0200 |
commit | 2cc29517966de7257a2f1b34c58c77225a21e05d (patch) | |
tree | 210bd177df2f06eec16e1e22edafdbcbffe66f8a /deps/v8/src/js/harmony-string-padding.js | |
parent | bbf3838c70aaec1dd296fa75ae334fd1c7866df3 (diff) | |
download | node-new-2cc29517966de7257a2f1b34c58c77225a21e05d.tar.gz |
deps: update V8 to 5.1.281.69
Pick up the latest branch-head for V8 5.1. This branch brings in
improved language support and performance improvements. For full
details: http://v8project.blogspot.com/2016/04/v8-release-51.html
* Picks up the latest branch head for 5.1 [1]
* Edit v8 gitignore to allow trace_event copy
* Update V8 DEP trace_event as per deps/v8/DEPS [2]
[1] https://chromium.googlesource.com/v8/v8.git/+/dc81244
[2] https://chromium.googlesource.com/chromium/src/base/trace_event/common/+/c8c8665
PR-URL: https://github.com/nodejs/node/pull/7016
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'deps/v8/src/js/harmony-string-padding.js')
-rw-r--r-- | deps/v8/src/js/harmony-string-padding.js | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/deps/v8/src/js/harmony-string-padding.js b/deps/v8/src/js/harmony-string-padding.js new file mode 100644 index 0000000000..a6c6c474de --- /dev/null +++ b/deps/v8/src/js/harmony-string-padding.js @@ -0,0 +1,77 @@ +// 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. + +(function(global, utils) { + +%CheckIsBootstrapping(); + +// ------------------------------------------------------------------- +// Imports + +var GlobalString = global.String; +var MakeTypeError; + +utils.Import(function(from) { + MakeTypeError = from.MakeTypeError; +}); + +// ------------------------------------------------------------------- +// http://tc39.github.io/proposal-string-pad-start-end/ + +function StringPad(thisString, maxLength, fillString) { + maxLength = TO_LENGTH(maxLength); + var stringLength = thisString.length; + + if (maxLength <= stringLength) return ""; + + if (IS_UNDEFINED(fillString)) { + fillString = " "; + } else { + fillString = TO_STRING(fillString); + if (fillString === "") { + fillString = " "; + } + } + + var fillLength = maxLength - stringLength; + var repetitions = (fillLength / fillString.length) | 0; + var remainingChars = (fillLength - fillString.length * repetitions) | 0; + + var filler = ""; + while (true) { + if (repetitions & 1) filler += fillString; + repetitions >>= 1; + if (repetitions === 0) break; + fillString += fillString; + } + + if (remainingChars) { + filler += %_SubString(fillString, 0, remainingChars); + } + + return filler; +} + +function StringPadStart(maxLength, fillString) { + CHECK_OBJECT_COERCIBLE(this, "String.prototype.padStart") + var thisString = TO_STRING(this); + + return StringPad(thisString, maxLength, fillString) + thisString; +} +%FunctionSetLength(StringPadStart, 1); + +function StringPadEnd(maxLength, fillString) { + CHECK_OBJECT_COERCIBLE(this, "String.prototype.padEnd") + var thisString = TO_STRING(this); + + return thisString + StringPad(thisString, maxLength, fillString); +} +%FunctionSetLength(StringPadEnd, 1); + +utils.InstallFunctions(GlobalString.prototype, DONT_ENUM, [ + "padStart", StringPadStart, + "padEnd", StringPadEnd +]); + +}); |