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/v8.h" | 5 #include "src/v8.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 1789 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1800 | 1800 |
1801 Handle<Object> store_handle; | 1801 Handle<Object> store_handle; |
1802 Handle<Code> stub = generic_stub(); | 1802 Handle<Code> stub = generic_stub(); |
1803 | 1803 |
1804 if (key->IsInternalizedString()) { | 1804 if (key->IsInternalizedString()) { |
1805 ASSIGN_RETURN_ON_EXCEPTION( | 1805 ASSIGN_RETURN_ON_EXCEPTION( |
1806 isolate(), store_handle, | 1806 isolate(), store_handle, |
1807 StoreIC::Store(object, Handle<String>::cast(key), value, | 1807 StoreIC::Store(object, Handle<String>::cast(key), value, |
1808 JSReceiver::MAY_BE_STORE_FROM_KEYED), | 1808 JSReceiver::MAY_BE_STORE_FROM_KEYED), |
1809 Object); | 1809 Object); |
1810 if (!is_target_set()) { | 1810 // TODO(jkummerow): Ideally we'd wrap this in "if (!is_target_set())", |
1811 TRACE_GENERIC_IC(isolate(), "KeyedStoreIC", | 1811 // but doing so causes Hydrogen crashes. Needs investigation. |
1812 "unhandled internalized string key"); | 1812 TRACE_GENERIC_IC(isolate(), "KeyedStoreIC", |
1813 TRACE_IC("StoreIC", key); | 1813 "unhandled internalized string key"); |
1814 set_target(*stub); | 1814 TRACE_IC("StoreIC", key); |
1815 } | 1815 set_target(*stub); |
1816 return store_handle; | 1816 return store_handle; |
1817 } | 1817 } |
1818 | 1818 |
1819 bool use_ic = | 1819 bool use_ic = |
1820 FLAG_use_ic && !object->IsStringWrapper() && | 1820 FLAG_use_ic && !object->IsStringWrapper() && |
1821 !object->IsAccessCheckNeeded() && !object->IsJSGlobalProxy() && | 1821 !object->IsAccessCheckNeeded() && !object->IsJSGlobalProxy() && |
1822 !(object->IsJSObject() && JSObject::cast(*object)->map()->is_observed()); | 1822 !(object->IsJSObject() && JSObject::cast(*object)->map()->is_observed()); |
1823 if (use_ic && !object->IsSmi()) { | 1823 if (use_ic && !object->IsSmi()) { |
1824 // Don't use ICs for maps of the objects in Array's prototype chain. We | 1824 // Don't use ICs for maps of the objects in Array's prototype chain. We |
1825 // expect to be able to trap element sets to objects with those maps in | 1825 // expect to be able to trap element sets to objects with those maps in |
(...skipping 854 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2680 static const Address IC_utilities[] = { | 2680 static const Address IC_utilities[] = { |
2681 #define ADDR(name) FUNCTION_ADDR(name), | 2681 #define ADDR(name) FUNCTION_ADDR(name), |
2682 IC_UTIL_LIST(ADDR) NULL | 2682 IC_UTIL_LIST(ADDR) NULL |
2683 #undef ADDR | 2683 #undef ADDR |
2684 }; | 2684 }; |
2685 | 2685 |
2686 | 2686 |
2687 Address IC::AddressFromUtilityId(IC::UtilityId id) { return IC_utilities[id]; } | 2687 Address IC::AddressFromUtilityId(IC::UtilityId id) { return IC_utilities[id]; } |
2688 } | 2688 } |
2689 } // namespace v8::internal | 2689 } // namespace v8::internal |
OLD | NEW |