| Index: src/types.h | 
| diff --git a/src/types.h b/src/types.h | 
| index 25ed6e8f5612ca8667cf261d691f526ad377321c..a2bcda65791646c57464a5d85a908564efc5587a 100644 | 
| --- a/src/types.h | 
| +++ b/src/types.h | 
| @@ -126,6 +126,7 @@ class Type : public Object { | 
| static Type* Function() { return from_bitset(kFunction); } | 
| static Type* RegExp() { return from_bitset(kRegExp); } | 
| static Type* Proxy() { return from_bitset(kProxy); } | 
| +  static Type* Internal() { return from_bitset(kInternal); } | 
|  | 
| static Type* Class(Handle<Map> map) { return from_handle(map); } | 
| static Type* Constant(Handle<HeapObject> value) { | 
| @@ -139,7 +140,7 @@ class Type : public Object { | 
| static Type* Intersect(Handle<Type> type1, Handle<Type> type2); | 
| static Type* Optional(Handle<Type> type);  // type \/ Undefined | 
|  | 
| -  bool Is(Type* that); | 
| +  bool Is(Type* that) { return (this == that) ? true : IsSlowCase(that); } | 
| bool Is(Handle<Type> that) { return this->Is(*that); } | 
| bool Maybe(Type* that); | 
| bool Maybe(Handle<Type> that) { return this->Maybe(*that); } | 
| @@ -207,6 +208,7 @@ class Type : public Object { | 
| kRegExp = 1 << 13, | 
| kOtherObject = 1 << 14, | 
| kProxy = 1 << 15, | 
| +    kInternal = 1 << 16, | 
|  | 
| kOddball = kBoolean | kNull | kUndefined, | 
| kSigned32 = kSmi | kOtherSigned32, | 
| @@ -218,7 +220,7 @@ class Type : public Object { | 
| kObject = kUndetectable | kArray | kFunction | kRegExp | kOtherObject, | 
| kReceiver = kObject | kProxy, | 
| kAllocated = kDouble | kName | kReceiver, | 
| -    kAny = kOddball | kNumber | kAllocated, | 
| +    kAny = kOddball | kNumber | kAllocated | kInternal, | 
| kDetectable = kAllocated - kUndetectable, | 
| kNone = 0 | 
| }; | 
| @@ -228,6 +230,8 @@ class Type : public Object { | 
| bool is_constant() { return this->IsBox(); } | 
| bool is_union() { return this->IsFixedArray(); } | 
|  | 
| +  bool IsSlowCase(Type* that); | 
| + | 
| int as_bitset() { return Smi::cast(this)->value(); } | 
| Handle<Map> as_class() { return Handle<Map>::cast(handle()); } | 
| Handle<v8::internal::Object> as_constant() { | 
|  |