| Index: src/stub-cache.cc
|
| diff --git a/src/stub-cache.cc b/src/stub-cache.cc
|
| index cbd248a98052bb5ba6960e6d501d634ae8240b24..78a217bb61a06b124ab19d511fd9657f2c27acc0 100644
|
| --- a/src/stub-cache.cc
|
| +++ b/src/stub-cache.cc
|
| @@ -129,7 +129,7 @@ Handle<Code> PropertyHandlerCompiler::Find(Handle<Name> name,
|
| }
|
|
|
|
|
| -Handle<Code> PropertyICCompiler::ComputeMonomorphicIC(
|
| +Handle<Code> PropertyICCompiler::ComputeMonomorphic(
|
| Code::Kind kind, Handle<Name> name, Handle<HeapType> type,
|
| Handle<Code> handler, ExtraICState extra_ic_state) {
|
| CacheHolderFlag flag;
|
| @@ -205,11 +205,11 @@ Handle<Code> NamedLoadHandlerCompiler::ComputeLoadNonexistent(
|
| }
|
|
|
|
|
| -Handle<Code> PropertyICCompiler::ComputeKeyedLoadElement(
|
| +Handle<Code> PropertyICCompiler::ComputeKeyedLoadMonomorphic(
|
| Handle<Map> receiver_map) {
|
| Isolate* isolate = receiver_map->GetIsolate();
|
| Code::Flags flags = Code::ComputeMonomorphicFlags(Code::KEYED_LOAD_IC);
|
| - Handle<Name> name = isolate->factory()->KeyedLoadElementMonomorphic_string();
|
| + Handle<Name> name = isolate->factory()->KeyedLoadMonomorphic_string();
|
|
|
| Handle<Object> probe(receiver_map->FindInCodeCache(*name, flags), isolate);
|
| if (probe->IsCode()) return Handle<Code>::cast(probe);
|
| @@ -219,13 +219,13 @@ Handle<Code> PropertyICCompiler::ComputeKeyedLoadElement(
|
| if (receiver_map->has_fast_elements() ||
|
| receiver_map->has_external_array_elements() ||
|
| receiver_map->has_fixed_typed_array_elements()) {
|
| - stub = KeyedLoadFastElementStub(
|
| - isolate, receiver_map->instance_type() == JS_ARRAY_TYPE,
|
| - elements_kind).GetCode();
|
| + stub = LoadFastElementStub(isolate,
|
| + receiver_map->instance_type() == JS_ARRAY_TYPE,
|
| + elements_kind).GetCode();
|
| } else {
|
| stub = FLAG_compiled_keyed_dictionary_loads
|
| - ? KeyedLoadDictionaryElementStub(isolate).GetCode()
|
| - : KeyedLoadDictionaryElementPlatformStub(isolate).GetCode();
|
| + ? LoadDictionaryElementStub(isolate).GetCode()
|
| + : LoadDictionaryElementPlatformStub(isolate).GetCode();
|
| }
|
| PropertyICCompiler compiler(isolate, Code::KEYED_LOAD_IC);
|
| Handle<Code> code =
|
| @@ -237,7 +237,7 @@ Handle<Code> PropertyICCompiler::ComputeKeyedLoadElement(
|
| }
|
|
|
|
|
| -Handle<Code> PropertyICCompiler::ComputeKeyedStoreElement(
|
| +Handle<Code> PropertyICCompiler::ComputeKeyedStoreMonomorphic(
|
| Handle<Map> receiver_map, StrictMode strict_mode,
|
| KeyedAccessStoreMode store_mode) {
|
| Isolate* isolate = receiver_map->GetIsolate();
|
| @@ -251,14 +251,13 @@ Handle<Code> PropertyICCompiler::ComputeKeyedStoreElement(
|
| store_mode == STORE_NO_TRANSITION_IGNORE_OUT_OF_BOUNDS ||
|
| store_mode == STORE_NO_TRANSITION_HANDLE_COW);
|
|
|
| - Handle<String> name =
|
| - isolate->factory()->KeyedStoreElementMonomorphic_string();
|
| + Handle<String> name = isolate->factory()->KeyedStoreMonomorphic_string();
|
| Handle<Object> probe(receiver_map->FindInCodeCache(*name, flags), isolate);
|
| if (probe->IsCode()) return Handle<Code>::cast(probe);
|
|
|
| PropertyICCompiler compiler(isolate, Code::KEYED_STORE_IC, extra_state);
|
| Handle<Code> code =
|
| - compiler.CompileIndexedStoreMonomorphic(receiver_map, store_mode);
|
| + compiler.CompileKeyedStoreMonomorphic(receiver_map, store_mode);
|
|
|
| Map::UpdateCodeCache(receiver_map, name, code);
|
| ASSERT(KeyedStoreIC::GetKeyedAccessStoreMode(code->extra_ic_state())
|
| @@ -278,9 +277,8 @@ static void FillCache(Isolate* isolate, Handle<Code> code) {
|
| }
|
|
|
|
|
| -Code* PropertyICCompiler::FindPreMonomorphicIC(Isolate* isolate,
|
| - Code::Kind kind,
|
| - ExtraICState state) {
|
| +Code* PropertyICCompiler::FindPreMonomorphic(Isolate* isolate, Code::Kind kind,
|
| + ExtraICState state) {
|
| Code::Flags flags = Code::ComputeFlags(kind, PREMONOMORPHIC, state);
|
| UnseededNumberDictionary* dictionary =
|
| isolate->heap()->non_monomorphic_cache();
|
| @@ -369,7 +367,7 @@ Handle<Code> PropertyICCompiler::ComputeCompareNil(Handle<Map> receiver_map,
|
|
|
|
|
| // TODO(verwaest): Change this method so it takes in a TypeHandleList.
|
| -Handle<Code> PropertyICCompiler::ComputeLoadElementPolymorphic(
|
| +Handle<Code> PropertyICCompiler::ComputeKeyedLoadPolymorphic(
|
| MapHandleList* receiver_maps) {
|
| Isolate* isolate = receiver_maps->at(0)->GetIsolate();
|
| Code::Flags flags = Code::ComputeFlags(Code::KEYED_LOAD_IC, POLYMORPHIC);
|
| @@ -383,7 +381,7 @@ Handle<Code> PropertyICCompiler::ComputeLoadElementPolymorphic(
|
| types.Add(HeapType::Class(receiver_maps->at(i), isolate));
|
| }
|
| CodeHandleList handlers(receiver_maps->length());
|
| - IndexedHandlerCompiler compiler(isolate);
|
| + ElementHandlerCompiler compiler(isolate);
|
| compiler.CompileElementHandlers(receiver_maps, &handlers);
|
| PropertyICCompiler ic_compiler(isolate, Code::KEYED_LOAD_IC);
|
| Handle<Code> code = ic_compiler.CompilePolymorphic(
|
| @@ -397,7 +395,7 @@ Handle<Code> PropertyICCompiler::ComputeLoadElementPolymorphic(
|
| }
|
|
|
|
|
| -Handle<Code> PropertyICCompiler::ComputePolymorphicIC(
|
| +Handle<Code> PropertyICCompiler::ComputePolymorphic(
|
| Code::Kind kind, TypeHandleList* types, CodeHandleList* handlers,
|
| int valid_types, Handle<Name> name, ExtraICState extra_ic_state) {
|
| Handle<Code> handler = handlers->at(0);
|
| @@ -408,7 +406,7 @@ Handle<Code> PropertyICCompiler::ComputePolymorphicIC(
|
| }
|
|
|
|
|
| -Handle<Code> PropertyICCompiler::ComputeStoreElementPolymorphic(
|
| +Handle<Code> PropertyICCompiler::ComputeKeyedStorePolymorphic(
|
| MapHandleList* receiver_maps, KeyedAccessStoreMode store_mode,
|
| StrictMode strict_mode) {
|
| Isolate* isolate = receiver_maps->at(0)->GetIsolate();
|
| @@ -427,7 +425,7 @@ Handle<Code> PropertyICCompiler::ComputeStoreElementPolymorphic(
|
|
|
| PropertyICCompiler compiler(isolate, Code::KEYED_STORE_IC, extra_state);
|
| Handle<Code> code =
|
| - compiler.CompileIndexedStorePolymorphic(receiver_maps, store_mode);
|
| + compiler.CompileKeyedStorePolymorphic(receiver_maps, store_mode);
|
| PolymorphicCodeCache::Update(cache, receiver_maps, flags, code);
|
| return code;
|
| }
|
| @@ -609,7 +607,7 @@ RUNTIME_FUNCTION(LoadPropertyWithInterceptor) {
|
| }
|
|
|
|
|
| -RUNTIME_FUNCTION(StoreInterceptorProperty) {
|
| +RUNTIME_FUNCTION(StorePropertyWithInterceptor) {
|
| HandleScope scope(isolate);
|
| ASSERT(args.length() == 3);
|
| StoreIC ic(IC::NO_EXTRA_FRAME, isolate);
|
| @@ -634,7 +632,7 @@ RUNTIME_FUNCTION(StoreInterceptorProperty) {
|
| }
|
|
|
|
|
| -RUNTIME_FUNCTION(KeyedLoadPropertyWithInterceptor) {
|
| +RUNTIME_FUNCTION(LoadElementWithInterceptor) {
|
| HandleScope scope(isolate);
|
| Handle<JSObject> receiver = args.at<JSObject>(0);
|
| ASSERT(args.smi_at(1) >= 0);
|
| @@ -1088,7 +1086,7 @@ Handle<Code> NamedStoreHandlerCompiler::CompileStoreCallback(
|
| }
|
|
|
|
|
| -Handle<Code> PropertyICCompiler::CompileIndexedStoreMonomorphic(
|
| +Handle<Code> PropertyICCompiler::CompileKeyedStoreMonomorphic(
|
| Handle<Map> receiver_map, KeyedAccessStoreMode store_mode) {
|
| ElementsKind elements_kind = receiver_map->elements_kind();
|
| bool is_jsarray = receiver_map->instance_type() == JS_ARRAY_TYPE;
|
| @@ -1096,11 +1094,11 @@ Handle<Code> PropertyICCompiler::CompileIndexedStoreMonomorphic(
|
| if (receiver_map->has_fast_elements() ||
|
| receiver_map->has_external_array_elements() ||
|
| receiver_map->has_fixed_typed_array_elements()) {
|
| - stub = KeyedStoreFastElementStub(isolate(), is_jsarray, elements_kind,
|
| - store_mode).GetCode();
|
| + stub = StoreFastElementStub(isolate(), is_jsarray, elements_kind,
|
| + store_mode).GetCode();
|
| } else {
|
| - stub = KeyedStoreElementStub(isolate(), is_jsarray, elements_kind,
|
| - store_mode).GetCode();
|
| + stub = StoreElementStub(isolate(), is_jsarray, elements_kind, store_mode)
|
| + .GetCode();
|
| }
|
|
|
| __ DispatchMap(receiver(), scratch1(), receiver_map, stub, DO_SMI_CHECK);
|
| @@ -1155,7 +1153,7 @@ Handle<Code> PropertyHandlerCompiler::GetCode(Code::Kind kind,
|
| }
|
|
|
|
|
| -void IndexedHandlerCompiler::CompileElementHandlers(
|
| +void ElementHandlerCompiler::CompileElementHandlers(
|
| MapHandleList* receiver_maps, CodeHandleList* handlers) {
|
| for (int i = 0; i < receiver_maps->length(); ++i) {
|
| Handle<Map> receiver_map = receiver_maps->at(i);
|
| @@ -1172,16 +1170,13 @@ void IndexedHandlerCompiler::CompileElementHandlers(
|
| if (IsFastElementsKind(elements_kind) ||
|
| IsExternalArrayElementsKind(elements_kind) ||
|
| IsFixedTypedArrayElementsKind(elements_kind)) {
|
| - cached_stub =
|
| - KeyedLoadFastElementStub(isolate(),
|
| - is_js_array,
|
| - elements_kind).GetCode();
|
| + cached_stub = LoadFastElementStub(isolate(), is_js_array, elements_kind)
|
| + .GetCode();
|
| } else if (elements_kind == SLOPPY_ARGUMENTS_ELEMENTS) {
|
| cached_stub = isolate()->builtins()->KeyedLoadIC_SloppyArguments();
|
| } else {
|
| ASSERT(elements_kind == DICTIONARY_ELEMENTS);
|
| - cached_stub =
|
| - KeyedLoadDictionaryElementStub(isolate()).GetCode();
|
| + cached_stub = LoadDictionaryElementStub(isolate()).GetCode();
|
| }
|
| }
|
|
|
| @@ -1190,7 +1185,7 @@ void IndexedHandlerCompiler::CompileElementHandlers(
|
| }
|
|
|
|
|
| -Handle<Code> PropertyICCompiler::CompileIndexedStorePolymorphic(
|
| +Handle<Code> PropertyICCompiler::CompileKeyedStorePolymorphic(
|
| MapHandleList* receiver_maps, KeyedAccessStoreMode store_mode) {
|
| // Collect MONOMORPHIC stubs for all |receiver_maps|.
|
| CodeHandleList handlers(receiver_maps->length());
|
| @@ -1219,13 +1214,11 @@ Handle<Code> PropertyICCompiler::CompileIndexedStorePolymorphic(
|
| if (receiver_map->has_fast_elements() ||
|
| receiver_map->has_external_array_elements() ||
|
| receiver_map->has_fixed_typed_array_elements()) {
|
| - cached_stub =
|
| - KeyedStoreFastElementStub(isolate(), is_js_array, elements_kind,
|
| - store_mode).GetCode();
|
| + cached_stub = StoreFastElementStub(isolate(), is_js_array,
|
| + elements_kind, store_mode).GetCode();
|
| } else {
|
| - cached_stub =
|
| - KeyedStoreElementStub(isolate(), is_js_array, elements_kind,
|
| - store_mode).GetCode();
|
| + cached_stub = StoreElementStub(isolate(), is_js_array, elements_kind,
|
| + store_mode).GetCode();
|
| }
|
| }
|
| ASSERT(!cached_stub.is_null());
|
| @@ -1233,15 +1226,15 @@ Handle<Code> PropertyICCompiler::CompileIndexedStorePolymorphic(
|
| transitioned_maps.Add(transitioned_map);
|
| }
|
|
|
| - Handle<Code> code = CompileIndexedStorePolymorphic(receiver_maps, &handlers,
|
| - &transitioned_maps);
|
| + Handle<Code> code = CompileKeyedStorePolymorphic(receiver_maps, &handlers,
|
| + &transitioned_maps);
|
| isolate()->counters()->keyed_store_polymorphic_stubs()->Increment();
|
| PROFILE(isolate(), CodeCreateEvent(log_kind(code), *code, 0));
|
| return code;
|
| }
|
|
|
|
|
| -void IndexedHandlerCompiler::GenerateStoreDictionaryElement(
|
| +void ElementHandlerCompiler::GenerateStoreDictionaryElement(
|
| MacroAssembler* masm) {
|
| KeyedStoreIC::GenerateSlow(masm);
|
| }
|
|
|