| Index: src/mips64/code-stubs-mips64.cc | 
| diff --git a/src/mips64/code-stubs-mips64.cc b/src/mips64/code-stubs-mips64.cc | 
| index 643ff5cd01e55af03e694f0e39d431438f5fbd77..74477b557bff04bb9cee26c9f98a1be43ea6b605 100644 | 
| --- a/src/mips64/code-stubs-mips64.cc | 
| +++ b/src/mips64/code-stubs-mips64.cc | 
| @@ -1380,12 +1380,8 @@ void LoadIndexedStringStub::Generate(MacroAssembler* masm) { | 
| Register result = v0; | 
| DCHECK(!scratch.is(receiver) && !scratch.is(index)); | 
| DCHECK(!FLAG_vector_ics || | 
| -         (!scratch.is(VectorLoadICDescriptor::VectorRegister()) && | 
| -          result.is(VectorLoadICDescriptor::SlotRegister()))); | 
| +         !scratch.is(VectorLoadICDescriptor::VectorRegister())); | 
|  | 
| -  // StringCharAtGenerator doesn't use the result register until it's passed | 
| -  // the different miss possibilities. If it did, we would have a conflict | 
| -  // when FLAG_vector_ics is true. | 
| StringCharAtGenerator char_at_generator(receiver, index, scratch, result, | 
| &miss,  // When not a string. | 
| &miss,  // When not a number. | 
| @@ -1396,7 +1392,7 @@ void LoadIndexedStringStub::Generate(MacroAssembler* masm) { | 
| __ Ret(); | 
|  | 
| StubRuntimeCallHelper call_helper; | 
| -  char_at_generator.GenerateSlow(masm, call_helper); | 
| +  char_at_generator.GenerateSlow(masm, PART_OF_IC_HANDLER, call_helper); | 
|  | 
| __ bind(&miss); | 
| PropertyAccessCompiler::TailCallBuiltin( | 
| @@ -3089,7 +3085,7 @@ void CallICStub::GenerateMiss(MacroAssembler* masm) { | 
|  | 
|  | 
| void StringCharCodeAtGenerator::GenerateSlow( | 
| -    MacroAssembler* masm, | 
| +    MacroAssembler* masm, EmbedMode embed_mode, | 
| const RuntimeCallHelper& call_helper) { | 
| __ Abort(kUnexpectedFallthroughToCharCodeAtSlowCase); | 
|  | 
| @@ -3103,7 +3099,12 @@ void StringCharCodeAtGenerator::GenerateSlow( | 
| DONT_DO_SMI_CHECK); | 
| call_helper.BeforeCall(masm); | 
| // Consumed by runtime conversion function: | 
| -  __ Push(object_, index_); | 
| +  if (FLAG_vector_ics && embed_mode == PART_OF_IC_HANDLER) { | 
| +    __ Push(VectorLoadICDescriptor::VectorRegister(), | 
| +            VectorLoadICDescriptor::SlotRegister(), object_, index_); | 
| +  } else { | 
| +    __ Push(object_, index_); | 
| +  } | 
| if (index_flags_ == STRING_INDEX_IS_NUMBER) { | 
| __ CallRuntime(Runtime::kNumberToIntegerMapMinusZero, 1); | 
| } else { | 
| @@ -3116,7 +3117,12 @@ void StringCharCodeAtGenerator::GenerateSlow( | 
| // have a chance to overwrite it. | 
|  | 
| __ Move(index_, v0); | 
| -  __ pop(object_); | 
| +  if (FLAG_vector_ics && embed_mode == PART_OF_IC_HANDLER) { | 
| +    __ Pop(VectorLoadICDescriptor::SlotRegister(), | 
| +           VectorLoadICDescriptor::VectorRegister(), object_); | 
| +  } else { | 
| +    __ pop(object_); | 
| +  } | 
| // Reload the instance type. | 
| __ ld(result_, FieldMemOperand(object_, HeapObject::kMapOffset)); | 
| __ lbu(result_, FieldMemOperand(result_, Map::kInstanceTypeOffset)); | 
|  |