| Index: src/runtime/runtime-strings.cc
 | 
| diff --git a/src/runtime/runtime-strings.cc b/src/runtime/runtime-strings.cc
 | 
| index 328bdceb376c469e90c103c9464732415ba527e4..46bb4aad60f48d4f2cb68fb9a8f0a9f98b113962 100644
 | 
| --- a/src/runtime/runtime-strings.cc
 | 
| +++ b/src/runtime/runtime-strings.cc
 | 
| @@ -86,17 +86,32 @@ RUNTIME_FUNCTION(Runtime_StringReplaceOneCharWithString) {
 | 
|    return isolate->StackOverflow();
 | 
|  }
 | 
|  
 | 
| -
 | 
| +// ES6 #sec-string.prototype.indexof
 | 
| +// String.prototype.indexOf(searchString [, position])
 | 
|  RUNTIME_FUNCTION(Runtime_StringIndexOf) {
 | 
|    HandleScope scope(isolate);
 | 
|    DCHECK(args.length() == 3);
 | 
| -  return String::IndexOf(isolate, args.at<Object>(0), args.at<Object>(1),
 | 
| -                         args.at<Object>(2));
 | 
| +  return String::IndexOf(isolate, args.at(0), args.at(1), args.at(2));
 | 
| +}
 | 
| +
 | 
| +// ES6 #sec-string.prototype.indexof
 | 
| +// String.prototype.indexOf(searchString, position)
 | 
| +// Fast version that assumes that does not perform conversions of the incoming
 | 
| +// arguments.
 | 
| +RUNTIME_FUNCTION(Runtime_StringIndexOfUnchecked) {
 | 
| +  HandleScope scope(isolate);
 | 
| +  DCHECK(args.length() == 3);
 | 
| +  Handle<String> receiver_string = args.at<String>(0);
 | 
| +  Handle<String> search_string = args.at<String>(1);
 | 
| +  int index = std::min(std::max(args.smi_at(2), 0), receiver_string->length());
 | 
| +
 | 
| +  return Smi::FromInt(String::IndexOf(isolate, receiver_string, search_string,
 | 
| +                                      static_cast<uint32_t>(index)));
 | 
|  }
 | 
|  
 | 
|  RUNTIME_FUNCTION(Runtime_StringLastIndexOf) {
 | 
|    HandleScope handle_scope(isolate);
 | 
| -  return String::LastIndexOf(isolate, args.at<Object>(0), args.at<Object>(1),
 | 
| +  return String::LastIndexOf(isolate, args.at(0), args.at(1),
 | 
|                               isolate->factory()->undefined_value());
 | 
|  }
 | 
|  
 | 
| 
 |