summaryrefslogtreecommitdiff
path: root/deps/v8/src/builtins/builtins-string.cc
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2018-09-07 17:07:13 +0200
committerMichaël Zasso <targos@protonmail.com>2018-09-07 20:59:13 +0200
commit586db2414a338e1bf6eaf6e672a3adc7ce309f6a (patch)
tree139fa972aef648481ddee22a3a85b99707d28df5 /deps/v8/src/builtins/builtins-string.cc
parent12ed7c94e5160aa6d38e3d2cb2a73dae0a6f9342 (diff)
downloadnode-new-586db2414a338e1bf6eaf6e672a3adc7ce309f6a.tar.gz
deps: update V8 to 6.9.427.22
PR-URL: https://github.com/nodejs/node/pull/21983 Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: Gus Caplan <me@gus.host> Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'deps/v8/src/builtins/builtins-string.cc')
-rw-r--r--deps/v8/src/builtins/builtins-string.cc57
1 files changed, 30 insertions, 27 deletions
diff --git a/deps/v8/src/builtins/builtins-string.cc b/deps/v8/src/builtins/builtins-string.cc
index 854bb5e58a..e52fbd577d 100644
--- a/deps/v8/src/builtins/builtins-string.cc
+++ b/deps/v8/src/builtins/builtins-string.cc
@@ -19,7 +19,8 @@ namespace internal {
namespace { // for String.fromCodePoint
bool IsValidCodePoint(Isolate* isolate, Handle<Object> value) {
- if (!value->IsNumber() && !Object::ToNumber(value).ToHandle(&value)) {
+ if (!value->IsNumber() &&
+ !Object::ToNumber(isolate, value).ToHandle(&value)) {
return false;
}
@@ -37,7 +38,8 @@ bool IsValidCodePoint(Isolate* isolate, Handle<Object> value) {
uc32 NextCodePoint(Isolate* isolate, BuiltinArguments args, int index) {
Handle<Object> value = args.at(1 + index);
- ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, value, Object::ToNumber(value), -1);
+ ASSIGN_RETURN_ON_EXCEPTION_VALUE(isolate, value,
+ Object::ToNumber(isolate, value), -1);
if (!IsValidCodePoint(isolate, value)) {
isolate->Throw(*isolate->factory()->NewRangeError(
MessageTemplate::kInvalidCodePoint, value));
@@ -52,7 +54,7 @@ uc32 NextCodePoint(Isolate* isolate, BuiltinArguments args, int index) {
BUILTIN(StringFromCodePoint) {
HandleScope scope(isolate);
int const length = args.length() - 1;
- if (length == 0) return isolate->heap()->empty_string();
+ if (length == 0) return ReadOnlyRoots(isolate).empty_string();
DCHECK_LT(0, length);
// Optimistically assume that the resulting String contains only one byte
@@ -64,7 +66,7 @@ BUILTIN(StringFromCodePoint) {
for (index = 0; index < length; index++) {
code = NextCodePoint(isolate, args, index);
if (code < 0) {
- return isolate->heap()->exception();
+ return ReadOnlyRoots(isolate).exception();
}
if (code > String::kMaxOneByteCharCode) {
break;
@@ -94,7 +96,7 @@ BUILTIN(StringFromCodePoint) {
}
code = NextCodePoint(isolate, args, index);
if (code < 0) {
- return isolate->heap()->exception();
+ return ReadOnlyRoots(isolate).exception();
}
}
@@ -122,7 +124,7 @@ BUILTIN(StringPrototypeEndsWith) {
Maybe<bool> is_reg_exp = RegExpUtils::IsRegExp(isolate, search);
if (is_reg_exp.IsNothing()) {
DCHECK(isolate->has_pending_exception());
- return isolate->heap()->exception();
+ return ReadOnlyRoots(isolate).exception();
}
if (is_reg_exp.FromJust()) {
THROW_NEW_ERROR_RETURN_FAILURE(
@@ -146,10 +148,10 @@ BUILTIN(StringPrototypeEndsWith) {
}
int start = end - search_string->length();
- if (start < 0) return isolate->heap()->false_value();
+ if (start < 0) return ReadOnlyRoots(isolate).false_value();
- str = String::Flatten(str);
- search_string = String::Flatten(search_string);
+ str = String::Flatten(isolate, str);
+ search_string = String::Flatten(isolate, search_string);
DisallowHeapAllocation no_gc; // ensure vectors stay valid
String::FlatContent str_content = str->GetFlatContent();
@@ -169,10 +171,10 @@ BUILTIN(StringPrototypeEndsWith) {
for (int i = 0; i < search_string->length(); i++) {
if (str_reader.Get(start + i) != search_reader.Get(i)) {
- return isolate->heap()->false_value();
+ return ReadOnlyRoots(isolate).false_value();
}
}
- return isolate->heap()->true_value();
+ return ReadOnlyRoots(isolate).true_value();
}
// ES6 section 21.1.3.9
@@ -219,8 +221,8 @@ BUILTIN(StringPrototypeLocaleCompare) {
int d = str1->Get(0) - str2->Get(0);
if (d != 0) return Smi::FromInt(d);
- str1 = String::Flatten(str1);
- str2 = String::Flatten(str2);
+ str1 = String::Flatten(isolate, str1);
+ str2 = String::Flatten(isolate, str2);
DisallowHeapAllocation no_gc;
String::FlatContent flat1 = str1->GetFlatContent();
@@ -252,13 +254,13 @@ BUILTIN(StringPrototypeNormalize) {
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, form,
Object::ToString(isolate, form_input));
- if (!(String::Equals(form,
+ if (!(String::Equals(isolate, form,
isolate->factory()->NewStringFromStaticChars("NFC")) ||
- String::Equals(form,
+ String::Equals(isolate, form,
isolate->factory()->NewStringFromStaticChars("NFD")) ||
- String::Equals(form,
+ String::Equals(isolate, form,
isolate->factory()->NewStringFromStaticChars("NFKC")) ||
- String::Equals(form,
+ String::Equals(isolate, form,
isolate->factory()->NewStringFromStaticChars("NFKD")))) {
Handle<String> valid_forms =
isolate->factory()->NewStringFromStaticChars("NFC, NFD, NFKC, NFKD");
@@ -280,7 +282,7 @@ BUILTIN(StringPrototypeStartsWith) {
Maybe<bool> is_reg_exp = RegExpUtils::IsRegExp(isolate, search);
if (is_reg_exp.IsNothing()) {
DCHECK(isolate->has_pending_exception());
- return isolate->heap()->exception();
+ return ReadOnlyRoots(isolate).exception();
}
if (is_reg_exp.FromJust()) {
THROW_NEW_ERROR_RETURN_FAILURE(
@@ -304,18 +306,19 @@ BUILTIN(StringPrototypeStartsWith) {
}
if (start + search_string->length() > str->length()) {
- return isolate->heap()->false_value();
+ return ReadOnlyRoots(isolate).false_value();
}
- FlatStringReader str_reader(isolate, String::Flatten(str));
- FlatStringReader search_reader(isolate, String::Flatten(search_string));
+ FlatStringReader str_reader(isolate, String::Flatten(isolate, str));
+ FlatStringReader search_reader(isolate,
+ String::Flatten(isolate, search_string));
for (int i = 0; i < search_string->length(); i++) {
if (str_reader.Get(start + i) != search_reader.Get(i)) {
- return isolate->heap()->false_value();
+ return ReadOnlyRoots(isolate).false_value();
}
}
- return isolate->heap()->true_value();
+ return ReadOnlyRoots(isolate).true_value();
}
#ifndef V8_INTL_SUPPORT
@@ -430,7 +433,7 @@ template <class Converter>
V8_WARN_UNUSED_RESULT static Object* ConvertCase(
Handle<String> s, Isolate* isolate,
unibrow::Mapping<Converter, 128>* mapping) {
- s = String::Flatten(s);
+ s = String::Flatten(isolate, s);
int length = s->length();
// Assume that the string is not empty; we need this assumption later
if (length == 0) return *s;
@@ -525,14 +528,14 @@ BUILTIN(StringRaw) {
Object::ToObject(isolate, templ));
Handle<Object> raw;
- ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, raw,
- Object::GetProperty(cooked, raw_string));
+ ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
+ isolate, raw, Object::GetProperty(isolate, cooked, raw_string));
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, raw,
Object::ToObject(isolate, raw));
Handle<Object> raw_len;
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, raw_len,
- Object::GetProperty(raw, isolate->factory()->length_string()));
+ Object::GetProperty(isolate, raw, isolate->factory()->length_string()));
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, raw_len,
Object::ToLength(isolate, raw_len));