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 1779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1790 } | 1790 } |
1791 DCHECK(holder.is_identical_to(receiver)); | 1791 DCHECK(holder.is_identical_to(receiver)); |
1792 return isolate()->builtins()->StoreIC_Normal(); | 1792 return isolate()->builtins()->StoreIC_Normal(); |
1793 } | 1793 } |
1794 | 1794 |
1795 // -------------- Fields -------------- | 1795 // -------------- Fields -------------- |
1796 if (lookup->property_details().type() == DATA) { | 1796 if (lookup->property_details().type() == DATA) { |
1797 bool use_stub = true; | 1797 bool use_stub = true; |
1798 if (lookup->representation().IsHeapObject()) { | 1798 if (lookup->representation().IsHeapObject()) { |
1799 // Only use a generic stub if no types need to be tracked. | 1799 // Only use a generic stub if no types need to be tracked. |
1800 Handle<HeapType> field_type = lookup->GetFieldType(); | 1800 Handle<FieldType> field_type = lookup->GetFieldType(); |
1801 HeapType::Iterator<Map> it = field_type->Classes(); | 1801 FieldType::Iterator it = field_type->Classes(); |
Benedikt Meurer
2016/01/26 14:22:47
No Iterator please.
| |
1802 use_stub = it.Done(); | 1802 use_stub = it.Done(); |
1803 } | 1803 } |
1804 if (use_stub) { | 1804 if (use_stub) { |
1805 StoreFieldStub stub(isolate(), lookup->GetFieldIndex(), | 1805 StoreFieldStub stub(isolate(), lookup->GetFieldIndex(), |
1806 lookup->representation()); | 1806 lookup->representation()); |
1807 return stub.GetCode(); | 1807 return stub.GetCode(); |
1808 } | 1808 } |
1809 NamedStoreHandlerCompiler compiler(isolate(), receiver_map(), holder); | 1809 NamedStoreHandlerCompiler compiler(isolate(), receiver_map(), holder); |
1810 return compiler.CompileStoreField(lookup); | 1810 return compiler.CompileStoreField(lookup); |
1811 } | 1811 } |
(...skipping 1162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2974 KeyedLoadICNexus nexus(vector, vector_slot); | 2974 KeyedLoadICNexus nexus(vector, vector_slot); |
2975 KeyedLoadIC ic(IC::EXTRA_CALL_FRAME, isolate, &nexus); | 2975 KeyedLoadIC ic(IC::EXTRA_CALL_FRAME, isolate, &nexus); |
2976 ic.UpdateState(receiver, key); | 2976 ic.UpdateState(receiver, key); |
2977 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key)); | 2977 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key)); |
2978 } | 2978 } |
2979 | 2979 |
2980 return *result; | 2980 return *result; |
2981 } | 2981 } |
2982 } // namespace internal | 2982 } // namespace internal |
2983 } // namespace v8 | 2983 } // namespace v8 |
OLD | NEW |