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 "v8.h" | 5 #include "v8.h" |
6 | 6 |
7 #include "accessors.h" | 7 #include "accessors.h" |
8 #include "api.h" | 8 #include "api.h" |
9 #include "arguments.h" | 9 #include "arguments.h" |
10 #include "codegen.h" | 10 #include "codegen.h" |
(...skipping 1776 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1787 if (!(receiver->map()->DictionaryElementsInPrototypeChainOnly())) { | 1787 if (!(receiver->map()->DictionaryElementsInPrototypeChainOnly())) { |
1788 KeyedAccessStoreMode store_mode = | 1788 KeyedAccessStoreMode store_mode = |
1789 GetStoreMode(receiver, key, value); | 1789 GetStoreMode(receiver, key, value); |
1790 stub = StoreElementStub(receiver, store_mode); | 1790 stub = StoreElementStub(receiver, store_mode); |
1791 } | 1791 } |
1792 } | 1792 } |
1793 } | 1793 } |
1794 } | 1794 } |
1795 } | 1795 } |
1796 | 1796 |
| 1797 if (store_handle.is_null()) { |
| 1798 ASSIGN_RETURN_ON_EXCEPTION( |
| 1799 isolate(), |
| 1800 store_handle, |
| 1801 Runtime::SetObjectProperty( |
| 1802 isolate(), object, key, value, NONE, strict_mode()), |
| 1803 Object); |
| 1804 } |
| 1805 |
1797 if (!is_target_set()) { | 1806 if (!is_target_set()) { |
1798 if (*stub == *generic_stub()) { | 1807 if (*stub == *generic_stub()) { |
1799 TRACE_GENERIC_IC(isolate(), "KeyedStoreIC", "set generic"); | 1808 TRACE_GENERIC_IC(isolate(), "KeyedStoreIC", "set generic"); |
1800 } | 1809 } |
1801 ASSERT(!stub.is_null()); | 1810 ASSERT(!stub.is_null()); |
1802 set_target(*stub); | 1811 set_target(*stub); |
1803 TRACE_IC("StoreIC", key); | 1812 TRACE_IC("StoreIC", key); |
1804 } | 1813 } |
1805 | 1814 |
1806 if (!store_handle.is_null()) return store_handle; | 1815 return store_handle; |
1807 Handle<Object> result; | |
1808 ASSIGN_RETURN_ON_EXCEPTION( | |
1809 isolate(), | |
1810 result, | |
1811 Runtime::SetObjectProperty( | |
1812 isolate(), object, key, value, NONE, strict_mode()), | |
1813 Object); | |
1814 return result; | |
1815 } | 1816 } |
1816 | 1817 |
1817 | 1818 |
1818 CallIC::State::State(ExtraICState extra_ic_state) | 1819 CallIC::State::State(ExtraICState extra_ic_state) |
1819 : argc_(ArgcBits::decode(extra_ic_state)), | 1820 : argc_(ArgcBits::decode(extra_ic_state)), |
1820 call_type_(CallTypeBits::decode(extra_ic_state)) { | 1821 call_type_(CallTypeBits::decode(extra_ic_state)) { |
1821 } | 1822 } |
1822 | 1823 |
1823 | 1824 |
1824 ExtraICState CallIC::State::GetExtraICState() const { | 1825 ExtraICState CallIC::State::GetExtraICState() const { |
(...skipping 1160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2985 #undef ADDR | 2986 #undef ADDR |
2986 }; | 2987 }; |
2987 | 2988 |
2988 | 2989 |
2989 Address IC::AddressFromUtilityId(IC::UtilityId id) { | 2990 Address IC::AddressFromUtilityId(IC::UtilityId id) { |
2990 return IC_utilities[id]; | 2991 return IC_utilities[id]; |
2991 } | 2992 } |
2992 | 2993 |
2993 | 2994 |
2994 } } // namespace v8::internal | 2995 } } // namespace v8::internal |
OLD | NEW |