| Index: src/ast.cc
|
| ===================================================================
|
| --- src/ast.cc (revision 6216)
|
| +++ src/ast.cc (working copy)
|
| @@ -649,11 +649,19 @@
|
| }
|
|
|
|
|
| +void BinaryOperation::RecordTypeFeedback(TypeFeedbackOracle* oracle) {
|
| + TypeInfo left = oracle->BinaryType(this, TypeFeedbackOracle::LEFT);
|
| + TypeInfo right = oracle->BinaryType(this, TypeFeedbackOracle::RIGHT);
|
| + is_smi_only_ = left.IsSmi() && right.IsSmi();
|
| +}
|
| +
|
| +
|
| void CompareOperation::RecordTypeFeedback(TypeFeedbackOracle* oracle) {
|
| - TypeInfo info = oracle->CompareType(this);
|
| - if (info.IsSmi()) {
|
| + TypeInfo left = oracle->CompareType(this, TypeFeedbackOracle::LEFT);
|
| + TypeInfo right = oracle->CompareType(this, TypeFeedbackOracle::RIGHT);
|
| + if (left.IsSmi() && right.IsSmi()) {
|
| compare_type_ = SMI_ONLY;
|
| - } else if (info.IsNonPrimitive()) {
|
| + } else if (left.IsNonPrimitive() && right.IsNonPrimitive()) {
|
| compare_type_ = OBJECT_ONLY;
|
| } else {
|
| ASSERT(compare_type_ == NONE);
|
|
|