| 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 25 matching lines...) Expand all Loading... |
| 36 Handle<Code> PropertyICCompiler::ComputeKeyedLoadMonomorphicHandler( | 36 Handle<Code> PropertyICCompiler::ComputeKeyedLoadMonomorphicHandler( |
| 37 Handle<Map> receiver_map, ExtraICState extra_ic_state) { | 37 Handle<Map> receiver_map, ExtraICState extra_ic_state) { |
| 38 Isolate* isolate = receiver_map->GetIsolate(); | 38 Isolate* isolate = receiver_map->GetIsolate(); |
| 39 bool is_js_array = receiver_map->instance_type() == JS_ARRAY_TYPE; | 39 bool is_js_array = receiver_map->instance_type() == JS_ARRAY_TYPE; |
| 40 ElementsKind elements_kind = receiver_map->elements_kind(); | 40 ElementsKind elements_kind = receiver_map->elements_kind(); |
| 41 | 41 |
| 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))); | |
| 48 Handle<Code> stub; | 47 Handle<Code> stub; |
| 49 if (receiver_map->has_indexed_interceptor()) { | 48 if (receiver_map->has_indexed_interceptor()) { |
| 50 stub = LoadIndexedInterceptorStub(isolate).GetCode(); | 49 stub = LoadIndexedInterceptorStub(isolate).GetCode(); |
| 51 } else if (receiver_map->IsStringMap()) { | 50 } else if (receiver_map->IsStringMap()) { |
| 52 stub = LoadIndexedStringStub(isolate).GetCode(); | 51 stub = LoadIndexedStringStub(isolate).GetCode(); |
| 53 } else if (receiver_map->has_sloppy_arguments_elements()) { | 52 } else if (receiver_map->has_sloppy_arguments_elements()) { |
| 54 stub = KeyedLoadSloppyArgumentsStub(isolate).GetCode(); | 53 stub = KeyedLoadSloppyArgumentsStub(isolate).GetCode(); |
| 55 } else if (receiver_map->has_fast_elements() || | 54 } else if (receiver_map->has_fast_elements() || |
| 56 receiver_map->has_fixed_typed_array_elements()) { | 55 receiver_map->has_fixed_typed_array_elements()) { |
| 57 stub = LoadFastElementStub(isolate, is_js_array, elements_kind, | 56 stub = LoadFastElementStub(isolate, is_js_array, elements_kind, |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 308 | 307 |
| 309 TailCallBuiltin(masm(), Builtins::kKeyedStoreIC_Miss); | 308 TailCallBuiltin(masm(), Builtins::kKeyedStoreIC_Miss); |
| 310 | 309 |
| 311 return GetCode(kind(), Code::NORMAL, factory()->empty_string()); | 310 return GetCode(kind(), Code::NORMAL, factory()->empty_string()); |
| 312 } | 311 } |
| 313 | 312 |
| 314 | 313 |
| 315 #undef __ | 314 #undef __ |
| 316 } // namespace internal | 315 } // namespace internal |
| 317 } // namespace v8 | 316 } // namespace v8 |
| OLD | NEW |