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); |
} |