Chromium Code Reviews| Index: src/types.cc |
| diff --git a/src/types.cc b/src/types.cc |
| index 98592cf5c242d3e3c7739a94c8ded31dd2a60288..4c3cee753be12faa4a5d9dd61d2e009ba2694f11 100644 |
| --- a/src/types.cc |
| +++ b/src/types.cc |
| @@ -140,14 +140,6 @@ int TypeImpl<Config>::LubBitset(i::Object* value) { |
| value->ToInt32(&i) ? (Smi::IsValid(i) ? kSignedSmall : kOtherSigned32) : |
| value->ToUint32(&u) ? kUnsigned32 : kFloat); |
| } |
| - if (map->instance_type() == ODDBALL_TYPE) { |
| - if (value->IsUndefined()) return kUndefined; |
| - if (value->IsNull()) return kNull; |
| - if (value->IsBoolean()) return kBoolean; |
| - if (value->IsTheHole()) return kAny; // TODO(rossberg): kNone? |
| - if (value->IsUninitialized()) return kNone; |
| - UNREACHABLE(); |
| - } |
| return LubBitset(map); |
| } |
| @@ -178,8 +170,16 @@ int TypeImpl<Config>::LubBitset(i::Map* map) { |
| return kString; |
| case SYMBOL_TYPE: |
| return kSymbol; |
| - case ODDBALL_TYPE: |
| + case ODDBALL_TYPE: { |
| + Heap* heap = map->GetHeap(); |
| + if (map == heap->undefined_map()) return kUndefined; |
| + if (map == heap->the_hole_map()) return kAny; // TODO(rossberg): kNone? |
| + if (map == heap->null_map()) return kNull; |
| + if (map == heap->boolean_map()) return kBoolean; |
| + if (map == heap->uninitialized_map()) return kNone; |
| + ASSERT(map == heap->oddball_map()); |
| return kOddball; |
|
rossberg
2014/04/07 09:04:03
I think you could now return kInternal here and el
Benedikt Meurer
2014/04/07 09:30:19
Done.
|
| + } |
| case HEAP_NUMBER_TYPE: |
| return kFloat & kTaggedPtr; |
| case JS_VALUE_TYPE: |
| @@ -251,8 +251,7 @@ template<class Config> |
| typename TypeImpl<Config>::TypeHandle TypeImpl<Config>::NowOf( |
| i::Object* value, Region* region) { |
| if (value->IsSmi() || |
| - i::HeapObject::cast(value)->map()->instance_type() == HEAP_NUMBER_TYPE || |
| - i::HeapObject::cast(value)->map()->instance_type() == ODDBALL_TYPE) { |
| + i::HeapObject::cast(value)->map()->instance_type() == HEAP_NUMBER_TYPE) { |
| return Of(value, region); |
| } |
| return Class(i::handle(i::HeapObject::cast(value)->map()), region); |