Chromium Code Reviews| Index: src/objects-inl.h |
| diff --git a/src/objects-inl.h b/src/objects-inl.h |
| index cb787374c81378898ba0f13c204776fa6b719eae..f3a71a90c70e13e3d51496e4601a3161fb6ce7cb 100644 |
| --- a/src/objects-inl.h |
| +++ b/src/objects-inl.h |
| @@ -161,24 +161,17 @@ SIMD128_TYPES(SIMD128_TYPE_CHECKER) |
| return IsHeapObject() && HeapObject::cast(this)->Is##type_(); \ |
| } |
| HEAP_OBJECT_TYPE_LIST(IS_TYPE_FUNCTION_DEF) |
| -ODDBALL_LIST(IS_TYPE_FUNCTION_DEF) |
| #undef IS_TYPE_FUNCTION_DEF |
| -bool HeapObject::IsTheHole(Isolate* isolate) const { |
| - return this == isolate->heap()->the_hole_value(); |
| -} |
| - |
| -bool HeapObject::IsUndefined(Isolate* isolate) const { |
| - return this == isolate->heap()->undefined_value(); |
| -} |
| - |
| -bool Object::IsTheHole(Isolate* isolate) const { |
| - return this == isolate->heap()->the_hole_value(); |
| -} |
| - |
| -bool Object::IsUndefined(Isolate* isolate) const { |
| - return this == isolate->heap()->undefined_value(); |
| -} |
| +#define IS_TYPE_FUNCTION_DEF(Type, Value) \ |
| + bool Object::Is##Type(Isolate* isolate) const { \ |
| + return this == isolate->heap()->Value(); \ |
| + } \ |
| + bool HeapObject::Is##Type(Isolate* isolate) const { \ |
| + return this == isolate->heap()->Value(); \ |
| + } |
| +ODDBALL_LIST(IS_TYPE_FUNCTION_DEF) |
| +#undef IS_TYPE_FUNCTION_DEF |
| bool HeapObject::IsString() const { |
| return map()->instance_type() < FIRST_NONSTRING_TYPE; |
| @@ -300,12 +293,12 @@ bool Object::FilterKey(PropertyFilter filter) { |
| Handle<Object> Object::NewStorageFor(Isolate* isolate, |
| Handle<Object> object, |
| Representation representation) { |
| - if (representation.IsSmi() && object->IsUninitialized()) { |
| + if (representation.IsSmi() && object->IsUninitialized(isolate)) { |
| return handle(Smi::FromInt(0), isolate); |
| } |
| if (!representation.IsDouble()) return object; |
| double value; |
| - if (object->IsUninitialized()) { |
| + if (object->IsUninitialized(isolate)) { |
| value = 0; |
| } else if (object->IsMutableHeapNumber()) { |
| value = HeapNumber::cast(*object)->value(); |
| @@ -319,7 +312,7 @@ Handle<Object> Object::NewStorageFor(Isolate* isolate, |
| Handle<Object> Object::WrapForRead(Isolate* isolate, |
| Handle<Object> object, |
| Representation representation) { |
| - DCHECK(!object->IsUninitialized()); |
| + DCHECK(!object->IsUninitialized(isolate)); |
| if (!representation.IsDouble()) { |
| DCHECK(object->FitsRepresentation(representation)); |
| return object; |
| @@ -954,13 +947,6 @@ bool HeapObject::IsStruct() const { |
| STRUCT_LIST(MAKE_STRUCT_PREDICATE) |
| #undef MAKE_STRUCT_PREDICATE |
| -#define MAKE_ODDBALL_PREDICATE(Name) \ |
| - bool HeapObject::Is##Name() const { \ |
| - return IsOddball() && Oddball::cast(this)->kind() == Oddball::k##Name; \ |
| - } |
| -ODDBALL_LIST(MAKE_ODDBALL_PREDICATE) |
| - |
| -#undef MAKE_ODDBALL_PREDICATE |
| double Object::Number() const { |
| DCHECK(IsNumber()); |
| return IsSmi() |
| @@ -986,7 +972,8 @@ Representation Object::OptimalRepresentation() { |
| return Representation::Smi(); |
| } else if (FLAG_track_double_fields && IsHeapNumber()) { |
| return Representation::Double(); |
| - } else if (FLAG_track_computed_fields && IsUninitialized()) { |
| + } else if (FLAG_track_computed_fields && |
| + IsUninitialized(HeapObject::cast(this)->GetIsolate())) { |
| return Representation::None(); |
| } else if (FLAG_track_heap_object_fields) { |
| DCHECK(IsHeapObject()); |
| @@ -2201,7 +2188,10 @@ void JSObject::WriteToField(int descriptor, PropertyDetails details, |
| FieldIndex index = FieldIndex::ForDescriptor(map(), descriptor); |
| if (details.representation().IsDouble()) { |
| // Nothing more to be done. |
| - if (value->IsUninitialized()) return; |
| + if (!value->IsSmi() && |
| + value->IsUninitialized(HeapObject::cast(value)->GetIsolate())) { |
|
Michael Starzinger
2016/06/08 15:58:20
nit: Just use "this->GetIsolate()" here, avoiding
Camillo Bruni
2016/06/10 09:28:57
tunnelvision.
|
| + return; |
| + } |
| if (IsUnboxedDoubleField(index)) { |
| RawFastDoublePropertyAtPut(index, value->Number()); |
| } else { |
| @@ -2298,8 +2288,8 @@ void Object::VerifyApiCallResultType() { |
| DCHECK(IsHeapObject()); |
| Isolate* isolate = HeapObject::cast(this)->GetIsolate(); |
| if (!(IsString() || IsSymbol() || IsJSReceiver() || IsHeapNumber() || |
| - IsSimd128Value() || IsUndefined(isolate) || IsTrue() || IsFalse() || |
| - IsNull())) { |
| + IsSimd128Value() || IsUndefined(isolate) || IsTrue(isolate) || |
| + IsFalse(isolate) || IsNull(isolate))) { |
| FATAL("API call returned invalid object"); |
| } |
| #endif // DEBUG |
| @@ -5310,7 +5300,7 @@ Object* Map::prototype() const { |
| void Map::set_prototype(Object* value, WriteBarrierMode mode) { |
| - DCHECK(value->IsNull() || value->IsJSReceiver()); |
| + DCHECK(value->IsNull(GetIsolate()) || value->IsJSReceiver()); |
| WRITE_FIELD(this, kPrototypeOffset, value); |
| CONDITIONAL_WRITE_BARRIER(GetHeap(), this, kPrototypeOffset, value, mode); |
| } |
| @@ -7339,8 +7329,9 @@ void AccessorPair::set(AccessorComponent component, Object* value) { |
| void AccessorPair::SetComponents(Object* getter, Object* setter) { |
| - if (!getter->IsNull()) set_getter(getter); |
| - if (!setter->IsNull()) set_setter(setter); |
| + Isolate* isolate = GetIsolate(); |
| + if (!getter->IsNull(isolate)) set_getter(getter); |
| + if (!setter->IsNull(isolate)) set_setter(setter); |
| } |