OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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.h" | 5 #include "src/ic/ic.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/api.h" | 8 #include "src/api.h" |
9 #include "src/arguments.h" | 9 #include "src/arguments.h" |
10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
(...skipping 2237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2248 // prototype chain does have dictionary elements. This ensures that | 2248 // prototype chain does have dictionary elements. This ensures that |
2249 // other non-dictionary receivers in the polymorphic case benefit | 2249 // other non-dictionary receivers in the polymorphic case benefit |
2250 // from fast path keyed stores. | 2250 // from fast path keyed stores. |
2251 if (!old_receiver_map->DictionaryElementsInPrototypeChainOnly()) { | 2251 if (!old_receiver_map->DictionaryElementsInPrototypeChainOnly()) { |
2252 stub = StoreElementStub(old_receiver_map, store_mode); | 2252 stub = StoreElementStub(old_receiver_map, store_mode); |
2253 | 2253 |
2254 // Validate that the store_mode in the stub can also be derived | 2254 // Validate that the store_mode in the stub can also be derived |
2255 // from peeking in the code bits of the handlers. | 2255 // from peeking in the code bits of the handlers. |
2256 if (!FLAG_vector_stores) ValidateStoreMode(stub); | 2256 if (!FLAG_vector_stores) ValidateStoreMode(stub); |
2257 } else { | 2257 } else { |
2258 TRACE_GENERIC_IC(isolate(), "KeyedStoreIC", "dictionary prototype"); | 2258 TRACE_GENERIC_IC(isolate(), "KeyedStoreIC", |
| 2259 "dictionary or proxy prototype"); |
2259 } | 2260 } |
2260 } else { | 2261 } else { |
2261 TRACE_GENERIC_IC(isolate(), "KeyedStoreIC", "non-smi-like key"); | 2262 TRACE_GENERIC_IC(isolate(), "KeyedStoreIC", "non-smi-like key"); |
2262 } | 2263 } |
2263 } else { | 2264 } else { |
2264 TRACE_GENERIC_IC(isolate(), "KeyedStoreIC", "non-JSObject receiver"); | 2265 TRACE_GENERIC_IC(isolate(), "KeyedStoreIC", "non-JSObject receiver"); |
2265 } | 2266 } |
2266 } | 2267 } |
2267 | 2268 |
2268 if (FLAG_vector_stores) { | 2269 if (FLAG_vector_stores) { |
(...skipping 875 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3144 KeyedLoadICNexus nexus(vector, vector_slot); | 3145 KeyedLoadICNexus nexus(vector, vector_slot); |
3145 KeyedLoadIC ic(IC::EXTRA_CALL_FRAME, isolate, &nexus); | 3146 KeyedLoadIC ic(IC::EXTRA_CALL_FRAME, isolate, &nexus); |
3146 ic.UpdateState(receiver, key); | 3147 ic.UpdateState(receiver, key); |
3147 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key)); | 3148 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key)); |
3148 } | 3149 } |
3149 | 3150 |
3150 return *result; | 3151 return *result; |
3151 } | 3152 } |
3152 } // namespace internal | 3153 } // namespace internal |
3153 } // namespace v8 | 3154 } // namespace v8 |
OLD | NEW |