| Index: src/runtime/runtime-strings.cc
|
| diff --git a/src/runtime/runtime-strings.cc b/src/runtime/runtime-strings.cc
|
| index f5bda59b26fe9316b02aecdd80b3b60742876a8b..6a6f14a65b25e0a3aa75b46d5e12d73e11d500bb 100644
|
| --- a/src/runtime/runtime-strings.cc
|
| +++ b/src/runtime/runtime-strings.cc
|
| @@ -43,16 +43,21 @@ MaybeHandle<String> StringReplaceOneCharWithString(
|
|
|
| return subject;
|
| } else {
|
| - int index = String::IndexOf(isolate, subject, search, 0);
|
| - if (index == -1) return subject;
|
| + Object* index = String::IndexOf(isolate, subject, search,
|
| + isolate->factory()->undefined_value());
|
| + int index_int = -1;
|
| + index->ToInt32(&index_int);
|
| +
|
| + if (index_int == -1) return subject;
|
| *found = true;
|
| - Handle<String> first = isolate->factory()->NewSubString(subject, 0, index);
|
| + Handle<String> first =
|
| + isolate->factory()->NewSubString(subject, 0, index_int);
|
| Handle<String> cons1;
|
| ASSIGN_RETURN_ON_EXCEPTION(
|
| isolate, cons1, isolate->factory()->NewConsString(first, replace),
|
| String);
|
| - Handle<String> second =
|
| - isolate->factory()->NewSubString(subject, index + 1, subject->length());
|
| + Handle<String> second = isolate->factory()->NewSubString(
|
| + subject, index_int + 1, subject->length());
|
| return isolate->factory()->NewConsString(cons1, second);
|
| }
|
| }
|
| @@ -90,17 +95,8 @@ RUNTIME_FUNCTION(Runtime_StringReplaceOneCharWithString) {
|
| RUNTIME_FUNCTION(Runtime_StringIndexOf) {
|
| HandleScope scope(isolate);
|
| DCHECK(args.length() == 3);
|
| -
|
| - CONVERT_ARG_HANDLE_CHECKED(String, sub, 0);
|
| - CONVERT_ARG_HANDLE_CHECKED(String, pat, 1);
|
| - CONVERT_ARG_HANDLE_CHECKED(Object, index, 2);
|
| -
|
| - uint32_t start_index = 0;
|
| - if (!index->ToArrayIndex(&start_index)) return Smi::FromInt(-1);
|
| -
|
| - CHECK(start_index <= static_cast<uint32_t>(sub->length()));
|
| - int position = String::IndexOf(isolate, sub, pat, start_index);
|
| - return Smi::FromInt(position);
|
| + return String::IndexOf(isolate, args.at<Object>(0), args.at<Object>(1),
|
| + args.at<Object>(2));
|
| }
|
|
|
| RUNTIME_FUNCTION(Runtime_StringLastIndexOf) {
|
|
|