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 2741 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2752 case CompareIC::KNOWN_OBJECT: | 2752 case CompareIC::KNOWN_OBJECT: |
2753 return map.is_null() ? Type::Receiver(zone) : Type::Class(map, zone); | 2753 return map.is_null() ? Type::Receiver(zone) : Type::Class(map, zone); |
2754 case CompareIC::GENERIC: | 2754 case CompareIC::GENERIC: |
2755 return Type::Any(zone); | 2755 return Type::Any(zone); |
2756 } | 2756 } |
2757 UNREACHABLE(); | 2757 UNREACHABLE(); |
2758 return NULL; | 2758 return NULL; |
2759 } | 2759 } |
2760 | 2760 |
2761 | 2761 |
2762 void CompareIC::StubInfoToType(uint32_t stub_key, Type** left_type, | |
2763 Type** right_type, Type** overall_type, | |
2764 Handle<Map> map, Zone* zone) { | |
2765 CompareICStub stub(stub_key, map->GetIsolate()); | |
2766 *left_type = StateToType(zone, stub.left()); | |
2767 *right_type = StateToType(zone, stub.right()); | |
2768 *overall_type = StateToType(zone, stub.state(), map); | |
2769 } | |
2770 | |
2771 | |
2772 CompareIC::State CompareIC::NewInputState(State old_state, | 2762 CompareIC::State CompareIC::NewInputState(State old_state, |
2773 Handle<Object> value) { | 2763 Handle<Object> value) { |
2774 switch (old_state) { | 2764 switch (old_state) { |
2775 case UNINITIALIZED: | 2765 case UNINITIALIZED: |
2776 if (value->IsSmi()) return SMI; | 2766 if (value->IsSmi()) return SMI; |
2777 if (value->IsHeapNumber()) return NUMBER; | 2767 if (value->IsHeapNumber()) return NUMBER; |
2778 if (value->IsInternalizedString()) return INTERNALIZED_STRING; | 2768 if (value->IsInternalizedString()) return INTERNALIZED_STRING; |
2779 if (value->IsString()) return STRING; | 2769 if (value->IsString()) return STRING; |
2780 if (value->IsSymbol()) return UNIQUE_NAME; | 2770 if (value->IsSymbol()) return UNIQUE_NAME; |
2781 if (value->IsJSObject()) return OBJECT; | 2771 if (value->IsJSObject()) return OBJECT; |
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3215 static const Address IC_utilities[] = { | 3205 static const Address IC_utilities[] = { |
3216 #define ADDR(name) FUNCTION_ADDR(name), | 3206 #define ADDR(name) FUNCTION_ADDR(name), |
3217 IC_UTIL_LIST(ADDR) NULL | 3207 IC_UTIL_LIST(ADDR) NULL |
3218 #undef ADDR | 3208 #undef ADDR |
3219 }; | 3209 }; |
3220 | 3210 |
3221 | 3211 |
3222 Address IC::AddressFromUtilityId(IC::UtilityId id) { return IC_utilities[id]; } | 3212 Address IC::AddressFromUtilityId(IC::UtilityId id) { return IC_utilities[id]; } |
3223 } | 3213 } |
3224 } // namespace v8::internal | 3214 } // namespace v8::internal |
OLD | NEW |