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 |