| 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 <iostream> | 7 #include <iostream> |
| 8 | 8 |
| 9 #include "src/accessors.h" | 9 #include "src/accessors.h" |
| 10 #include "src/api-arguments-inl.h" | 10 #include "src/api-arguments-inl.h" |
| (...skipping 1522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1533 TRACE_HANDLER_STATS(isolate(), LoadIC_LoadCallback); | 1533 TRACE_HANDLER_STATS(isolate(), LoadIC_LoadCallback); |
| 1534 NamedLoadHandlerCompiler compiler(isolate(), map, holder, cache_holder); | 1534 NamedLoadHandlerCompiler compiler(isolate(), map, holder, cache_holder); |
| 1535 Handle<Code> code = | 1535 Handle<Code> code = |
| 1536 compiler.CompileLoadCallback(lookup->name(), info, slow_stub()); | 1536 compiler.CompileLoadCallback(lookup->name(), info, slow_stub()); |
| 1537 return code; | 1537 return code; |
| 1538 } | 1538 } |
| 1539 UNREACHABLE(); | 1539 UNREACHABLE(); |
| 1540 } | 1540 } |
| 1541 | 1541 |
| 1542 case LookupIterator::DATA: { | 1542 case LookupIterator::DATA: { |
| 1543 if (lookup->is_dictionary_holder()) { | 1543 DCHECK(lookup->is_dictionary_holder()); |
| 1544 DCHECK(kind() == Code::LOAD_IC || kind() == Code::LOAD_GLOBAL_IC); | 1544 DCHECK(kind() == Code::LOAD_IC || kind() == Code::LOAD_GLOBAL_IC); |
| 1545 DCHECK(holder->IsJSGlobalObject()); | 1545 DCHECK(holder->IsJSGlobalObject()); |
| 1546 TRACE_HANDLER_STATS(isolate(), LoadIC_LoadGlobal); | 1546 TRACE_HANDLER_STATS(isolate(), LoadIC_LoadGlobal); |
| 1547 NamedLoadHandlerCompiler compiler(isolate(), map, holder, cache_holder); | |
| 1548 Handle<PropertyCell> cell = lookup->GetPropertyCell(); | |
| 1549 Handle<Code> code = compiler.CompileLoadGlobal( | |
| 1550 cell, lookup->name(), lookup->IsConfigurable()); | |
| 1551 return code; | |
| 1552 } | |
| 1553 | |
| 1554 // -------------- Fields -------------- | |
| 1555 if (lookup->property_details().type() == DATA) { | |
| 1556 FieldIndex field = lookup->GetFieldIndex(); | |
| 1557 DCHECK(!receiver_is_holder); | |
| 1558 TRACE_HANDLER_STATS(isolate(), LoadIC_LoadField); | |
| 1559 NamedLoadHandlerCompiler compiler(isolate(), map, holder, cache_holder); | |
| 1560 return compiler.CompileLoadField(lookup->name(), field); | |
| 1561 } | |
| 1562 | |
| 1563 // -------------- Constant properties -------------- | |
| 1564 DCHECK(lookup->property_details().type() == DATA_CONSTANT); | |
| 1565 DCHECK(!receiver_is_holder); | |
| 1566 TRACE_HANDLER_STATS(isolate(), LoadIC_LoadConstant); | |
| 1567 NamedLoadHandlerCompiler compiler(isolate(), map, holder, cache_holder); | 1547 NamedLoadHandlerCompiler compiler(isolate(), map, holder, cache_holder); |
| 1568 return compiler.CompileLoadConstant(lookup->name(), | 1548 Handle<PropertyCell> cell = lookup->GetPropertyCell(); |
| 1569 lookup->GetConstantIndex()); | 1549 Handle<Code> code = compiler.CompileLoadGlobal(cell, lookup->name(), |
| 1550 lookup->IsConfigurable()); |
| 1551 return code; |
| 1570 } | 1552 } |
| 1571 | 1553 |
| 1572 case LookupIterator::INTEGER_INDEXED_EXOTIC: | 1554 case LookupIterator::INTEGER_INDEXED_EXOTIC: |
| 1573 case LookupIterator::ACCESS_CHECK: | 1555 case LookupIterator::ACCESS_CHECK: |
| 1574 case LookupIterator::JSPROXY: | 1556 case LookupIterator::JSPROXY: |
| 1575 case LookupIterator::NOT_FOUND: | 1557 case LookupIterator::NOT_FOUND: |
| 1576 case LookupIterator::TRANSITION: | 1558 case LookupIterator::TRANSITION: |
| 1577 UNREACHABLE(); | 1559 UNREACHABLE(); |
| 1578 } | 1560 } |
| 1579 UNREACHABLE(); | 1561 UNREACHABLE(); |
| (...skipping 1653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3233 DCHECK_EQ(LookupIterator::INTERCEPTOR, it.state()); | 3215 DCHECK_EQ(LookupIterator::INTERCEPTOR, it.state()); |
| 3234 it.Next(); | 3216 it.Next(); |
| 3235 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, | 3217 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, |
| 3236 Object::GetProperty(&it)); | 3218 Object::GetProperty(&it)); |
| 3237 } | 3219 } |
| 3238 | 3220 |
| 3239 return *result; | 3221 return *result; |
| 3240 } | 3222 } |
| 3241 } // namespace internal | 3223 } // namespace internal |
| 3242 } // namespace v8 | 3224 } // namespace v8 |
| OLD | NEW |