| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/ic/ic-compiler.h" | 5 #include "src/ic/ic-compiler.h" |
| 6 | 6 |
| 7 #include "src/ic/handler-compiler.h" | 7 #include "src/ic/handler-compiler.h" |
| 8 #include "src/ic/ic-inl.h" | 8 #include "src/ic/ic-inl.h" |
| 9 #include "src/profiler/cpu-profiler.h" | 9 #include "src/profiler/cpu-profiler.h" |
| 10 | 10 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 // No need to check for an elements-free prototype chain here, the generated | 42 // No need to check for an elements-free prototype chain here, the generated |
| 43 // stub code needs to check that dynamically anyway. | 43 // stub code needs to check that dynamically anyway. |
| 44 bool convert_hole_to_undefined = | 44 bool convert_hole_to_undefined = |
| 45 is_js_array && elements_kind == FAST_HOLEY_ELEMENTS && | 45 is_js_array && elements_kind == FAST_HOLEY_ELEMENTS && |
| 46 *receiver_map == isolate->get_initial_js_array_map(elements_kind) && | 46 *receiver_map == isolate->get_initial_js_array_map(elements_kind) && |
| 47 !(is_strong(LoadICState::GetLanguageMode(extra_ic_state))); | 47 !(is_strong(LoadICState::GetLanguageMode(extra_ic_state))); |
| 48 Handle<Code> stub; | 48 Handle<Code> stub; |
| 49 if (receiver_map->has_indexed_interceptor()) { | 49 if (receiver_map->has_indexed_interceptor()) { |
| 50 stub = LoadIndexedInterceptorStub(isolate).GetCode(); | 50 stub = LoadIndexedInterceptorStub(isolate).GetCode(); |
| 51 } else if (receiver_map->IsStringMap()) { | 51 } else if (receiver_map->IsStringMap()) { |
| 52 // We have a string. | |
| 53 stub = LoadIndexedStringStub(isolate).GetCode(); | 52 stub = LoadIndexedStringStub(isolate).GetCode(); |
| 54 } else if (receiver_map->has_sloppy_arguments_elements()) { | 53 } else if (receiver_map->has_sloppy_arguments_elements()) { |
| 55 stub = KeyedLoadSloppyArgumentsStub(isolate).GetCode(); | 54 stub = KeyedLoadSloppyArgumentsStub(isolate).GetCode(); |
| 56 } else if (receiver_map->has_fast_elements() || | 55 } else if (receiver_map->has_fast_elements() || |
| 57 receiver_map->has_fixed_typed_array_elements()) { | 56 receiver_map->has_fixed_typed_array_elements()) { |
| 58 stub = LoadFastElementStub(isolate, is_js_array, elements_kind, | 57 stub = LoadFastElementStub(isolate, is_js_array, elements_kind, |
| 59 convert_hole_to_undefined).GetCode(); | 58 convert_hole_to_undefined).GetCode(); |
| 60 } else { | 59 } else { |
| 60 DCHECK(receiver_map->has_dictionary_elements()); |
| 61 stub = LoadDictionaryElementStub(isolate, LoadICState(extra_ic_state)) | 61 stub = LoadDictionaryElementStub(isolate, LoadICState(extra_ic_state)) |
| 62 .GetCode(); | 62 .GetCode(); |
| 63 } | 63 } |
| 64 return stub; | 64 return stub; |
| 65 } | 65 } |
| 66 | 66 |
| 67 | 67 |
| 68 Handle<Code> PropertyICCompiler::ComputeKeyedStoreMonomorphicHandler( | 68 Handle<Code> PropertyICCompiler::ComputeKeyedStoreMonomorphicHandler( |
| 69 Handle<Map> receiver_map, LanguageMode language_mode, | 69 Handle<Map> receiver_map, LanguageMode language_mode, |
| 70 KeyedAccessStoreMode store_mode) { | 70 KeyedAccessStoreMode store_mode) { |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 | 308 |
| 309 TailCallBuiltin(masm(), Builtins::kKeyedStoreIC_Miss); | 309 TailCallBuiltin(masm(), Builtins::kKeyedStoreIC_Miss); |
| 310 | 310 |
| 311 return GetCode(kind(), Code::NORMAL, factory()->empty_string()); | 311 return GetCode(kind(), Code::NORMAL, factory()->empty_string()); |
| 312 } | 312 } |
| 313 | 313 |
| 314 | 314 |
| 315 #undef __ | 315 #undef __ |
| 316 } // namespace internal | 316 } // namespace internal |
| 317 } // namespace v8 | 317 } // namespace v8 |
| OLD | NEW |