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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/ic/call-optimization.h" | 7 #include "src/ic/call-optimization.h" |
8 #include "src/ic/handler-compiler.h" | 8 #include "src/ic/handler-compiler.h" |
9 #include "src/ic/ic.h" | 9 #include "src/ic/ic.h" |
10 #include "src/ic/ic-inl.h" | 10 #include "src/ic/ic-inl.h" |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
234 bool inline_followup = false; | 234 bool inline_followup = false; |
235 switch (it->state()) { | 235 switch (it->state()) { |
236 case LookupIterator::TRANSITION: | 236 case LookupIterator::TRANSITION: |
237 UNREACHABLE(); | 237 UNREACHABLE(); |
238 case LookupIterator::ACCESS_CHECK: | 238 case LookupIterator::ACCESS_CHECK: |
239 case LookupIterator::INTERCEPTOR: | 239 case LookupIterator::INTERCEPTOR: |
240 case LookupIterator::JSPROXY: | 240 case LookupIterator::JSPROXY: |
241 case LookupIterator::NOT_FOUND: | 241 case LookupIterator::NOT_FOUND: |
242 break; | 242 break; |
243 case LookupIterator::DATA: | 243 case LookupIterator::DATA: |
244 inline_followup = it->property_details().type() == FIELD; | 244 inline_followup = |
| 245 it->property_details().type() == FIELD && !it->is_dictionary_holder(); |
245 break; | 246 break; |
246 case LookupIterator::ACCESSOR: { | 247 case LookupIterator::ACCESSOR: { |
247 Handle<Object> accessors = it->GetAccessors(); | 248 Handle<Object> accessors = it->GetAccessors(); |
248 inline_followup = accessors->IsExecutableAccessorInfo(); | 249 inline_followup = accessors->IsExecutableAccessorInfo(); |
249 if (!inline_followup) break; | 250 if (!inline_followup) break; |
250 Handle<ExecutableAccessorInfo> info = | 251 Handle<ExecutableAccessorInfo> info = |
251 Handle<ExecutableAccessorInfo>::cast(accessors); | 252 Handle<ExecutableAccessorInfo>::cast(accessors); |
252 inline_followup = info->getter() != NULL && | 253 inline_followup = info->getter() != NULL && |
253 ExecutableAccessorInfo::IsCompatibleReceiverType( | 254 ExecutableAccessorInfo::IsCompatibleReceiverType( |
254 isolate(), info, type()); | 255 isolate(), info, type()); |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
435 DCHECK(elements_kind == DICTIONARY_ELEMENTS); | 436 DCHECK(elements_kind == DICTIONARY_ELEMENTS); |
436 cached_stub = LoadDictionaryElementStub(isolate()).GetCode(); | 437 cached_stub = LoadDictionaryElementStub(isolate()).GetCode(); |
437 } | 438 } |
438 } | 439 } |
439 | 440 |
440 handlers->Add(cached_stub); | 441 handlers->Add(cached_stub); |
441 } | 442 } |
442 } | 443 } |
443 } | 444 } |
444 } // namespace v8::internal | 445 } // namespace v8::internal |
OLD | NEW |