| Index: src/ic-inl.h | 
| diff --git a/src/ic-inl.h b/src/ic-inl.h | 
| index d1c31c0c8f3227e4afab1771daeed4ed7a803033..bd45c3e99d8a19a7778a6ef7439f4e4b18944ad9 100644 | 
| --- a/src/ic-inl.h | 
| +++ b/src/ic-inl.h | 
| @@ -120,6 +120,39 @@ HeapObject* IC::GetCodeCacheHolder(Isolate* isolate, | 
| } | 
|  | 
|  | 
| +InlineCacheHolderFlag IC::GetCodeCacheFlag(Type* type) { | 
| +  if (type->Is(Type::Boolean()) || | 
| +      type->Is(Type::Number()) || | 
| +      type->Is(Type::String()) || | 
| +      type->Is(Type::Symbol())) { | 
| +    return PROTOTYPE_MAP; | 
| +  } | 
| +  return OWN_MAP; | 
| +} | 
| + | 
| + | 
| +Handle<Map> IC::GetCodeCacheHolder(InlineCacheHolderFlag flag, | 
| +                                   Type* type, | 
| +                                   Isolate* isolate) { | 
| +  if (flag == PROTOTYPE_MAP) { | 
| +    Context* context = isolate->context()->native_context(); | 
| +    JSFunction* constructor; | 
| +    if (type->Is(Type::Boolean())) { | 
| +      constructor = context->boolean_function(); | 
| +    } else if (type->Is(Type::Number())) { | 
| +      constructor = context->number_function(); | 
| +    } else if (type->Is(Type::String())) { | 
| +      constructor = context->string_function(); | 
| +    } else { | 
| +      ASSERT(type->Is(Type::Symbol())); | 
| +      constructor = context->symbol_function(); | 
| +    } | 
| +    return handle(JSObject::cast(constructor->instance_prototype())->map()); | 
| +  } | 
| +  return type->AsClass(); | 
| +} | 
| + | 
| + | 
| } }  // namespace v8::internal | 
|  | 
| #endif  // V8_IC_INL_H_ | 
|  |