Index: src/ic.cc |
diff --git a/src/ic.cc b/src/ic.cc |
index 01d4ca0869a6507d87b5c5769112bc8303af8809..382b438a0b58cacfb01bc6ae2f12cf831f1f819f 100644 |
--- a/src/ic.cc |
+++ b/src/ic.cc |
@@ -2131,6 +2131,7 @@ const char* TRBinaryOpIC::GetName(TypeInfo type_info) { |
case SMI: return "SMI"; |
case INT32: return "Int32s"; |
case HEAP_NUMBER: return "HeapNumbers"; |
+ case ODDBALL: return "Oddball"; |
case STRING: return "Strings"; |
case GENERIC: return "Generic"; |
default: return "Invalid"; |
@@ -2145,6 +2146,7 @@ TRBinaryOpIC::State TRBinaryOpIC::ToState(TypeInfo type_info) { |
case SMI: |
case INT32: |
case HEAP_NUMBER: |
+ case ODDBALL: |
case STRING: |
return MONOMORPHIC; |
case GENERIC: |
@@ -2192,6 +2194,10 @@ TRBinaryOpIC::TypeInfo TRBinaryOpIC::GetTypeInfo(Handle<Object> left, |
return STRING; |
} |
+ // Check for oddball objects. |
+ if (left->IsUndefined() && right->IsNumber()) return ODDBALL; |
+ if (left->IsNumber() && right->IsUndefined()) return ODDBALL; |
+ |
return GENERIC; |
} |