| Index: src/runtime/runtime-regexp.cc
 | 
| diff --git a/src/runtime/runtime-regexp.cc b/src/runtime/runtime-regexp.cc
 | 
| index a8133d349538e4f0742f25042653b793d0f8b877..b36e5e66cbae17b447958a05c6ef192a94197272 100644
 | 
| --- a/src/runtime/runtime-regexp.cc
 | 
| +++ b/src/runtime/runtime-regexp.cc
 | 
| @@ -386,11 +386,10 @@ void FindStringIndicesDispatch(Isolate* isolate, String* subject,
 | 
|    }
 | 
|  }
 | 
|  
 | 
| -
 | 
|  template <typename ResultSeqString>
 | 
|  MUST_USE_RESULT static Object* StringReplaceGlobalAtomRegExpWithString(
 | 
|      Isolate* isolate, Handle<String> subject, Handle<JSRegExp> pattern_regexp,
 | 
| -    Handle<String> replacement, Handle<JSArray> last_match_info) {
 | 
| +    Handle<String> replacement, Handle<JSObject> last_match_info) {
 | 
|    DCHECK(subject->IsFlat());
 | 
|    DCHECK(replacement->IsFlat());
 | 
|  
 | 
| @@ -465,10 +464,9 @@ MUST_USE_RESULT static Object* StringReplaceGlobalAtomRegExpWithString(
 | 
|    return *result;
 | 
|  }
 | 
|  
 | 
| -
 | 
|  MUST_USE_RESULT static Object* StringReplaceGlobalRegExpWithString(
 | 
|      Isolate* isolate, Handle<String> subject, Handle<JSRegExp> regexp,
 | 
| -    Handle<String> replacement, Handle<JSArray> last_match_info) {
 | 
| +    Handle<String> replacement, Handle<JSObject> last_match_info) {
 | 
|    DCHECK(subject->IsFlat());
 | 
|    DCHECK(replacement->IsFlat());
 | 
|  
 | 
| @@ -547,11 +545,10 @@ MUST_USE_RESULT static Object* StringReplaceGlobalRegExpWithString(
 | 
|    RETURN_RESULT_OR_FAILURE(isolate, builder.ToString());
 | 
|  }
 | 
|  
 | 
| -
 | 
|  template <typename ResultSeqString>
 | 
|  MUST_USE_RESULT static Object* StringReplaceGlobalRegExpWithEmptyString(
 | 
|      Isolate* isolate, Handle<String> subject, Handle<JSRegExp> regexp,
 | 
| -    Handle<JSArray> last_match_info) {
 | 
| +    Handle<JSObject> last_match_info) {
 | 
|    DCHECK(subject->IsFlat());
 | 
|  
 | 
|    // Shortcut for simple non-regexp global replacements
 | 
| @@ -654,7 +651,7 @@ RUNTIME_FUNCTION(Runtime_StringReplaceGlobalRegExpWithString) {
 | 
|    CONVERT_ARG_HANDLE_CHECKED(String, subject, 0);
 | 
|    CONVERT_ARG_HANDLE_CHECKED(String, replacement, 2);
 | 
|    CONVERT_ARG_HANDLE_CHECKED(JSRegExp, regexp, 1);
 | 
| -  CONVERT_ARG_HANDLE_CHECKED(JSArray, last_match_info, 3);
 | 
| +  CONVERT_ARG_HANDLE_CHECKED(JSObject, last_match_info, 3);
 | 
|  
 | 
|    CHECK(regexp->GetFlags() & JSRegExp::kGlobal);
 | 
|    CHECK(last_match_info->HasFastObjectElements());
 | 
| @@ -771,7 +768,7 @@ RUNTIME_FUNCTION(Runtime_RegExpExec) {
 | 
|    CONVERT_ARG_HANDLE_CHECKED(JSRegExp, regexp, 0);
 | 
|    CONVERT_ARG_HANDLE_CHECKED(String, subject, 1);
 | 
|    CONVERT_INT32_ARG_CHECKED(index, 2);
 | 
| -  CONVERT_ARG_HANDLE_CHECKED(JSArray, last_match_info, 3);
 | 
| +  CONVERT_ARG_HANDLE_CHECKED(JSObject, last_match_info, 3);
 | 
|    // Due to the way the JS calls are constructed this must be less than the
 | 
|    // length of a string, i.e. it is always a Smi.  We check anyway for security.
 | 
|    CHECK(index >= 0);
 | 
| @@ -838,7 +835,7 @@ RUNTIME_FUNCTION(Runtime_RegExpInitializeAndCompile) {
 | 
|  template <bool has_capture>
 | 
|  static Object* SearchRegExpMultiple(Isolate* isolate, Handle<String> subject,
 | 
|                                      Handle<JSRegExp> regexp,
 | 
| -                                    Handle<JSArray> last_match_array,
 | 
| +                                    Handle<JSObject> last_match_array,
 | 
|                                      Handle<JSArray> result_array) {
 | 
|    DCHECK(subject->IsFlat());
 | 
|    DCHECK_NE(has_capture, regexp->CaptureCount() == 0);
 | 
| @@ -988,7 +985,7 @@ RUNTIME_FUNCTION(Runtime_RegExpExecMultiple) {
 | 
|  
 | 
|    CONVERT_ARG_HANDLE_CHECKED(JSRegExp, regexp, 0);
 | 
|    CONVERT_ARG_HANDLE_CHECKED(String, subject, 1);
 | 
| -  CONVERT_ARG_HANDLE_CHECKED(JSArray, last_match_info, 2);
 | 
| +  CONVERT_ARG_HANDLE_CHECKED(JSObject, last_match_info, 2);
 | 
|    CONVERT_ARG_HANDLE_CHECKED(JSArray, result_array, 3);
 | 
|    CHECK(last_match_info->HasFastObjectElements());
 | 
|    CHECK(result_array->HasFastObjectElements());
 | 
| 
 |