| 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 911 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 922 if (megamorphic_cached_code != *code) return code; | 922 if (megamorphic_cached_code != *code) return code; |
| 923 } else { | 923 } else { |
| 924 return code; | 924 return code; |
| 925 } | 925 } |
| 926 } | 926 } |
| 927 } | 927 } |
| 928 | 928 |
| 929 code = CompileHandler(lookup, value, flag); | 929 code = CompileHandler(lookup, value, flag); |
| 930 DCHECK(code->is_handler()); | 930 DCHECK(code->is_handler()); |
| 931 | 931 |
| 932 if (code->type() != Code::NORMAL) { | 932 // TODO(mvstanton): we'd only like to cache code on the map when it's custom |
| 933 // code compiled for this map, otherwise it's already cached in the global |
| 934 // code |
| 935 // cache. We are also guarding against installing code with flags that don't |
| 936 // match the desired CacheHolderFlag computed above, which would lead to |
| 937 // invalid lookups later. |
| 938 if (code->type() != Code::NORMAL && |
| 939 Code::ExtractCacheHolderFromFlags(code->flags()) == flag) { |
| 933 Map::UpdateCodeCache(stub_holder_map, lookup->name(), code); | 940 Map::UpdateCodeCache(stub_holder_map, lookup->name(), code); |
| 934 } | 941 } |
| 935 | 942 |
| 936 return code; | 943 return code; |
| 937 } | 944 } |
| 938 | 945 |
| 939 | 946 |
| 940 Handle<Code> LoadIC::CompileHandler(LookupIterator* lookup, | 947 Handle<Code> LoadIC::CompileHandler(LookupIterator* lookup, |
| 941 Handle<Object> unused, | 948 Handle<Object> unused, |
| 942 CacheHolderFlag cache_holder) { | 949 CacheHolderFlag cache_holder) { |
| (...skipping 1701 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2644 static const Address IC_utilities[] = { | 2651 static const Address IC_utilities[] = { |
| 2645 #define ADDR(name) FUNCTION_ADDR(name), | 2652 #define ADDR(name) FUNCTION_ADDR(name), |
| 2646 IC_UTIL_LIST(ADDR) NULL | 2653 IC_UTIL_LIST(ADDR) NULL |
| 2647 #undef ADDR | 2654 #undef ADDR |
| 2648 }; | 2655 }; |
| 2649 | 2656 |
| 2650 | 2657 |
| 2651 Address IC::AddressFromUtilityId(IC::UtilityId id) { return IC_utilities[id]; } | 2658 Address IC::AddressFromUtilityId(IC::UtilityId id) { return IC_utilities[id]; } |
| 2652 } | 2659 } |
| 2653 } // namespace v8::internal | 2660 } // namespace v8::internal |
| OLD | NEW |