Chromium Code Reviews| Index: src/type-info.cc |
| diff --git a/src/type-info.cc b/src/type-info.cc |
| index 195864b7cc7a81d3cf27641327ffb3591b35d7a8..713b84368ab58012c4d1e246114d29981f057517 100644 |
| --- a/src/type-info.cc |
| +++ b/src/type-info.cc |
| @@ -315,6 +315,35 @@ TypeInfo TypeFeedbackOracle::SwitchType(CaseClause* clause) { |
| } |
| +TypeInfo TypeFeedbackOracle::IncrementType(CountOperation* expr) { |
| + Handle<Object> object = GetInfo(expr->CountId()); |
| + TypeInfo unknown = TypeInfo::Unknown(); |
| + if (!object->IsCode()) return unknown; |
| + Handle<Code> code = Handle<Code>::cast(object); |
| + if (!code->is_type_recording_binary_op_stub()) return unknown; |
| + |
| + TRBinaryOpIC::TypeInfo type = static_cast<TRBinaryOpIC::TypeInfo>( |
| + code->type_recording_binary_op_type()); |
| + switch (type) { |
| + case TRBinaryOpIC::UNINITIALIZED: |
| + case TRBinaryOpIC::SMI: |
| + return TypeInfo::Smi(); |
| + case TRBinaryOpIC::INT32: |
| + return TypeInfo::Integer32(); |
| + case TRBinaryOpIC::HEAP_NUMBER: |
| + return TypeInfo::Double(); |
| + case TRBinaryOpIC::BOTH_STRING: |
| + case TRBinaryOpIC::STRING: |
| + case TRBinaryOpIC::GENERIC: |
| + return unknown; |
| + default: |
| + return unknown; |
| + } |
| + UNREACHABLE(); |
|
fschneider
2011/04/29 08:56:22
Maybe no need for UNREACHABLE() and the following
William Hesse
2011/04/29 09:20:34
I think there is a MacOS compiler that can't handl
|
| + return unknown; |
| +} |
| + |
| + |
| ZoneMapList* TypeFeedbackOracle::CollectReceiverTypes(unsigned ast_id, |
| Handle<String> name, |
| Code::Flags flags) { |