summaryrefslogtreecommitdiff
path: root/deps/v8/src/builtins/builtins-string.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/builtins/builtins-string.cc')
-rw-r--r--deps/v8/src/builtins/builtins-string.cc18
1 files changed, 11 insertions, 7 deletions
diff --git a/deps/v8/src/builtins/builtins-string.cc b/deps/v8/src/builtins/builtins-string.cc
index 950cefd7ba..d94976bab2 100644
--- a/deps/v8/src/builtins/builtins-string.cc
+++ b/deps/v8/src/builtins/builtins-string.cc
@@ -140,21 +140,25 @@ BUILTIN(StringPrototypeLocaleCompare) {
HandleScope handle_scope(isolate);
isolate->CountUsage(v8::Isolate::UseCounterFeature::kStringLocaleCompare);
- const char* method = "String.prototype.localeCompare";
+ static const char* const kMethod = "String.prototype.localeCompare";
#ifdef V8_INTL_SUPPORT
- TO_THIS_STRING(str1, method);
+ TO_THIS_STRING(str1, kMethod);
Handle<String> str2;
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
isolate, str2, Object::ToString(isolate, args.atOrUndefined(isolate, 1)));
- RETURN_RESULT_OR_FAILURE(
- isolate, Intl::StringLocaleCompare(
- isolate, str1, str2, args.atOrUndefined(isolate, 2),
- args.atOrUndefined(isolate, 3), method));
+ base::Optional<int> result = Intl::StringLocaleCompare(
+ isolate, str1, str2, args.atOrUndefined(isolate, 2),
+ args.atOrUndefined(isolate, 3), kMethod);
+ if (!result.has_value()) {
+ DCHECK(isolate->has_pending_exception());
+ return ReadOnlyRoots(isolate).exception();
+ }
+ return Smi::FromInt(result.value());
#else
DCHECK_LE(2, args.length());
- TO_THIS_STRING(str1, method);
+ TO_THIS_STRING(str1, kMethod);
Handle<String> str2;
ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, str2,
Object::ToString(isolate, args.at(1)));