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) { |