Upgrade V8 to 5.1.281.57 DO NOT MERGE
FPIIM-449
Change-Id: Id981b686b4d587ac31697662eb98bb34be42ad90
(cherry picked from commit 3b9bc31999c9787eb726ecdbfd5796bfdec32a18)
diff --git a/src/js/string.js b/src/js/string.js
index a401978..0eb394e 100644
--- a/src/js/string.js
+++ b/src/js/string.js
@@ -15,12 +15,13 @@
var GlobalString = global.String;
var InternalArray = utils.InternalArray;
var InternalPackedArray = utils.InternalPackedArray;
+var IsRegExp;
var MakeRangeError;
var MakeTypeError;
var MaxSimple;
var MinSimple;
+var RegExpInitialize;
var matchSymbol = utils.ImportNow("match_symbol");
-var RegExpExecNoTests;
var replaceSymbol = utils.ImportNow("replace_symbol");
var searchSymbol = utils.ImportNow("search_symbol");
var splitSymbol = utils.ImportNow("split_symbol");
@@ -28,11 +29,12 @@
utils.Import(function(from) {
ArrayIndexOf = from.ArrayIndexOf;
ArrayJoin = from.ArrayJoin;
+ IsRegExp = from.IsRegExp;
MakeRangeError = from.MakeRangeError;
MakeTypeError = from.MakeTypeError;
MaxSimple = from.MaxSimple;
MinSimple = from.MinSimple;
- RegExpExecNoTests = from.RegExpExecNoTests;
+ RegExpInitialize = from.RegExpInitialize;
});
//-------------------------------------------------------------------
@@ -159,9 +161,10 @@
var subject = TO_STRING(this);
- // Non-regexp argument.
- var regexp = new GlobalRegExp(pattern);
- return RegExpExecNoTests(regexp, subject, 0);
+ // Equivalent to RegExpCreate (ES#sec-regexpcreate)
+ var regexp = %_NewObject(GlobalRegExp, GlobalRegExp);
+ RegExpInitialize(regexp, pattern);
+ return regexp[matchSymbol](subject);
}
@@ -355,7 +358,10 @@
}
var subject = TO_STRING(this);
- var regexp = new GlobalRegExp(pattern);
+
+ // Equivalent to RegExpCreate (ES#sec-regexpcreate)
+ var regexp = %_NewObject(GlobalRegExp, GlobalRegExp);
+ RegExpInitialize(regexp, pattern);
return %_Call(regexp[searchSymbol], regexp, subject);
}
@@ -558,18 +564,6 @@
}
-// ECMA-262, section 15.5.3.2
-function StringFromCharCode(_) { // length == 1
- "use strict";
- var s = "";
- var n = arguments.length;
- for (var i = 0; i < n; ++i) {
- s += %_StringCharFromCode(arguments[i] & 0xffff);
- }
- return s;
-}
-
-
// ES6 draft, revision 26 (2014-07-18), section B.2.3.2.1
function HtmlEscape(str) {
return %_Call(StringReplace, TO_STRING(str), /"/g, """);
@@ -701,7 +695,7 @@
var s = TO_STRING(this);
- if (IS_REGEXP(searchString)) {
+ if (IsRegExp(searchString)) {
throw MakeTypeError(kFirstArgumentNotRegExp, "String.prototype.startsWith");
}
@@ -727,7 +721,7 @@
var s = TO_STRING(this);
- if (IS_REGEXP(searchString)) {
+ if (IsRegExp(searchString)) {
throw MakeTypeError(kFirstArgumentNotRegExp, "String.prototype.endsWith");
}
@@ -754,7 +748,7 @@
var string = TO_STRING(this);
- if (IS_REGEXP(searchString)) {
+ if (IsRegExp(searchString)) {
throw MakeTypeError(kFirstArgumentNotRegExp, "String.prototype.includes");
}
@@ -860,7 +854,6 @@
// Set up the non-enumerable functions on the String object.
utils.InstallFunctions(GlobalString, DONT_ENUM, [
- "fromCharCode", StringFromCharCode,
"fromCodePoint", StringFromCodePoint,
"raw", StringRaw
]);