| Index: src/objects-inl.h
|
| diff --git a/src/objects-inl.h b/src/objects-inl.h
|
| index 7640a76e041fdca0428581e785494018843c4fb4..dde792e13d17849c28b517cc6f567532e5c8f680 100644
|
| --- a/src/objects-inl.h
|
| +++ b/src/objects-inl.h
|
| @@ -54,22 +54,19 @@ PropertyDetails PropertyDetails::AsDeleted() const {
|
|
|
|
|
| #define TYPE_CHECKER(type, instancetype) \
|
| - bool Object::Is##type() { \
|
| + bool Object::Is##type() const { \
|
| return Object::IsHeapObject() && \
|
| HeapObject::cast(this)->map()->instance_type() == instancetype; \
|
| }
|
|
|
|
|
| -// TODO(svenpanne) We use const_cast here and at a few other places to break our
|
| -// dependency cycle between the cast methods and the predicates. This can be
|
| -// removed when the predicates are const-correct, too.
|
| #define CAST_ACCESSOR(type) \
|
| type* type::cast(Object* object) { \
|
| SLOW_ASSERT(object->Is##type()); \
|
| return reinterpret_cast<type*>(object); \
|
| } \
|
| const type* type::cast(const Object* object) { \
|
| - SLOW_ASSERT(const_cast<Object*>(object)->Is##type()); \
|
| + SLOW_ASSERT(object->Is##type()); \
|
| return reinterpret_cast<const type*>(object); \
|
| }
|
|
|
| @@ -138,31 +135,31 @@ PropertyDetails PropertyDetails::AsDeleted() const {
|
| }
|
|
|
|
|
| -bool Object::IsFixedArrayBase() {
|
| +bool Object::IsFixedArrayBase() const {
|
| return IsFixedArray() || IsFixedDoubleArray() || IsConstantPoolArray() ||
|
| IsFixedTypedArrayBase() || IsExternalArray();
|
| }
|
|
|
|
|
| // External objects are not extensible, so the map check is enough.
|
| -bool Object::IsExternal() {
|
| +bool Object::IsExternal() const {
|
| return Object::IsHeapObject() &&
|
| HeapObject::cast(this)->map() ==
|
| HeapObject::cast(this)->GetHeap()->external_map();
|
| }
|
|
|
|
|
| -bool Object::IsAccessorInfo() {
|
| +bool Object::IsAccessorInfo() const {
|
| return IsExecutableAccessorInfo() || IsDeclaredAccessorInfo();
|
| }
|
|
|
|
|
| -bool Object::IsSmi() {
|
| +bool Object::IsSmi() const {
|
| return HAS_SMI_TAG(this);
|
| }
|
|
|
|
|
| -bool Object::IsHeapObject() {
|
| +bool Object::IsHeapObject() const {
|
| return Internals::HasHeapObjectTag(this);
|
| }
|
|
|
| @@ -171,41 +168,41 @@ TYPE_CHECKER(HeapNumber, HEAP_NUMBER_TYPE)
|
| TYPE_CHECKER(Symbol, SYMBOL_TYPE)
|
|
|
|
|
| -bool Object::IsString() {
|
| +bool Object::IsString() const {
|
| return Object::IsHeapObject()
|
| && HeapObject::cast(this)->map()->instance_type() < FIRST_NONSTRING_TYPE;
|
| }
|
|
|
|
|
| -bool Object::IsName() {
|
| +bool Object::IsName() const {
|
| return IsString() || IsSymbol();
|
| }
|
|
|
|
|
| -bool Object::IsUniqueName() {
|
| +bool Object::IsUniqueName() const {
|
| return IsInternalizedString() || IsSymbol();
|
| }
|
|
|
|
|
| -bool Object::IsSpecObject() {
|
| +bool Object::IsSpecObject() const {
|
| return Object::IsHeapObject()
|
| && HeapObject::cast(this)->map()->instance_type() >= FIRST_SPEC_OBJECT_TYPE;
|
| }
|
|
|
|
|
| -bool Object::IsSpecFunction() {
|
| +bool Object::IsSpecFunction() const {
|
| if (!Object::IsHeapObject()) return false;
|
| InstanceType type = HeapObject::cast(this)->map()->instance_type();
|
| return type == JS_FUNCTION_TYPE || type == JS_FUNCTION_PROXY_TYPE;
|
| }
|
|
|
|
|
| -bool Object::IsTemplateInfo() {
|
| +bool Object::IsTemplateInfo() const {
|
| return IsObjectTemplateInfo() || IsFunctionTemplateInfo();
|
| }
|
|
|
|
|
| -bool Object::IsInternalizedString() {
|
| +bool Object::IsInternalizedString() const {
|
| if (!this->IsHeapObject()) return false;
|
| uint32_t type = HeapObject::cast(this)->map()->instance_type();
|
| STATIC_ASSERT(kNotInternalizedTag != 0);
|
| @@ -214,52 +211,52 @@ bool Object::IsInternalizedString() {
|
| }
|
|
|
|
|
| -bool Object::IsConsString() {
|
| +bool Object::IsConsString() const {
|
| if (!IsString()) return false;
|
| return StringShape(String::cast(this)).IsCons();
|
| }
|
|
|
|
|
| -bool Object::IsSlicedString() {
|
| +bool Object::IsSlicedString() const {
|
| if (!IsString()) return false;
|
| return StringShape(String::cast(this)).IsSliced();
|
| }
|
|
|
|
|
| -bool Object::IsSeqString() {
|
| +bool Object::IsSeqString() const {
|
| if (!IsString()) return false;
|
| return StringShape(String::cast(this)).IsSequential();
|
| }
|
|
|
|
|
| -bool Object::IsSeqOneByteString() {
|
| +bool Object::IsSeqOneByteString() const {
|
| if (!IsString()) return false;
|
| return StringShape(String::cast(this)).IsSequential() &&
|
| String::cast(this)->IsOneByteRepresentation();
|
| }
|
|
|
|
|
| -bool Object::IsSeqTwoByteString() {
|
| +bool Object::IsSeqTwoByteString() const {
|
| if (!IsString()) return false;
|
| return StringShape(String::cast(this)).IsSequential() &&
|
| String::cast(this)->IsTwoByteRepresentation();
|
| }
|
|
|
|
|
| -bool Object::IsExternalString() {
|
| +bool Object::IsExternalString() const {
|
| if (!IsString()) return false;
|
| return StringShape(String::cast(this)).IsExternal();
|
| }
|
|
|
|
|
| -bool Object::IsExternalAsciiString() {
|
| +bool Object::IsExternalAsciiString() const {
|
| if (!IsString()) return false;
|
| return StringShape(String::cast(this)).IsExternal() &&
|
| String::cast(this)->IsOneByteRepresentation();
|
| }
|
|
|
|
|
| -bool Object::IsExternalTwoByteString() {
|
| +bool Object::IsExternalTwoByteString() const {
|
| if (!IsString()) return false;
|
| return StringShape(String::cast(this)).IsExternal() &&
|
| String::cast(this)->IsTwoByteRepresentation();
|
| @@ -287,7 +284,7 @@ Handle<Object> Object::NewStorageFor(Isolate* isolate,
|
| }
|
|
|
|
|
| -StringShape::StringShape(String* str)
|
| +StringShape::StringShape(const String* str)
|
| : type_(str->map()->instance_type()) {
|
| set_valid();
|
| ASSERT((type_ & kIsNotStringMask) == kStringTag);
|
| @@ -316,13 +313,13 @@ bool StringShape::IsInternalized() {
|
| }
|
|
|
|
|
| -bool String::IsOneByteRepresentation() {
|
| +bool String::IsOneByteRepresentation() const {
|
| uint32_t type = map()->instance_type();
|
| return (type & kStringEncodingMask) == kOneByteStringTag;
|
| }
|
|
|
|
|
| -bool String::IsTwoByteRepresentation() {
|
| +bool String::IsTwoByteRepresentation() const {
|
| uint32_t type = map()->instance_type();
|
| return (type & kStringEncodingMask) == kTwoByteStringTag;
|
| }
|
| @@ -612,7 +609,7 @@ class Utf8StringKey : public HashTableKey {
|
| };
|
|
|
|
|
| -bool Object::IsNumber() {
|
| +bool Object::IsNumber() const {
|
| return IsSmi() || IsHeapNumber();
|
| }
|
|
|
| @@ -621,14 +618,14 @@ TYPE_CHECKER(ByteArray, BYTE_ARRAY_TYPE)
|
| TYPE_CHECKER(FreeSpace, FREE_SPACE_TYPE)
|
|
|
|
|
| -bool Object::IsFiller() {
|
| +bool Object::IsFiller() const {
|
| if (!Object::IsHeapObject()) return false;
|
| InstanceType instance_type = HeapObject::cast(this)->map()->instance_type();
|
| return instance_type == FREE_SPACE_TYPE || instance_type == FILLER_TYPE;
|
| }
|
|
|
|
|
| -bool Object::IsExternalArray() {
|
| +bool Object::IsExternalArray() const {
|
| if (!Object::IsHeapObject())
|
| return false;
|
| InstanceType instance_type =
|
| @@ -646,7 +643,7 @@ TYPED_ARRAYS(TYPED_ARRAY_TYPE_CHECKER)
|
| #undef TYPED_ARRAY_TYPE_CHECKER
|
|
|
|
|
| -bool Object::IsFixedTypedArrayBase() {
|
| +bool Object::IsFixedTypedArrayBase() const {
|
| if (!Object::IsHeapObject()) return false;
|
|
|
| InstanceType instance_type =
|
| @@ -656,21 +653,21 @@ bool Object::IsFixedTypedArrayBase() {
|
| }
|
|
|
|
|
| -bool Object::IsJSReceiver() {
|
| +bool Object::IsJSReceiver() const {
|
| STATIC_ASSERT(LAST_JS_RECEIVER_TYPE == LAST_TYPE);
|
| return IsHeapObject() &&
|
| HeapObject::cast(this)->map()->instance_type() >= FIRST_JS_RECEIVER_TYPE;
|
| }
|
|
|
|
|
| -bool Object::IsJSObject() {
|
| +bool Object::IsJSObject() const {
|
| STATIC_ASSERT(LAST_JS_OBJECT_TYPE == LAST_TYPE);
|
| return IsHeapObject() &&
|
| HeapObject::cast(this)->map()->instance_type() >= FIRST_JS_OBJECT_TYPE;
|
| }
|
|
|
|
|
| -bool Object::IsJSProxy() {
|
| +bool Object::IsJSProxy() const {
|
| if (!Object::IsHeapObject()) return false;
|
| return HeapObject::cast(this)->map()->IsJSProxyMap();
|
| }
|
| @@ -690,22 +687,22 @@ TYPE_CHECKER(FixedDoubleArray, FIXED_DOUBLE_ARRAY_TYPE)
|
| TYPE_CHECKER(ConstantPoolArray, CONSTANT_POOL_ARRAY_TYPE)
|
|
|
|
|
| -bool Object::IsJSWeakCollection() {
|
| +bool Object::IsJSWeakCollection() const {
|
| return IsJSWeakMap() || IsJSWeakSet();
|
| }
|
|
|
|
|
| -bool Object::IsDescriptorArray() {
|
| +bool Object::IsDescriptorArray() const {
|
| return IsFixedArray();
|
| }
|
|
|
|
|
| -bool Object::IsTransitionArray() {
|
| +bool Object::IsTransitionArray() const {
|
| return IsFixedArray();
|
| }
|
|
|
|
|
| -bool Object::IsDeoptimizationInputData() {
|
| +bool Object::IsDeoptimizationInputData() const {
|
| // Must be a fixed array.
|
| if (!IsFixedArray()) return false;
|
|
|
| @@ -722,7 +719,7 @@ bool Object::IsDeoptimizationInputData() {
|
| }
|
|
|
|
|
| -bool Object::IsDeoptimizationOutputData() {
|
| +bool Object::IsDeoptimizationOutputData() const {
|
| if (!IsFixedArray()) return false;
|
| // There's actually no way to see the difference between a fixed array and
|
| // a deoptimization data array. Since this is used for asserts we can check
|
| @@ -732,7 +729,7 @@ bool Object::IsDeoptimizationOutputData() {
|
| }
|
|
|
|
|
| -bool Object::IsDependentCode() {
|
| +bool Object::IsDependentCode() const {
|
| if (!IsFixedArray()) return false;
|
| // There's actually no way to see the difference between a fixed array and
|
| // a dependent codes array.
|
| @@ -740,7 +737,7 @@ bool Object::IsDependentCode() {
|
| }
|
|
|
|
|
| -bool Object::IsContext() {
|
| +bool Object::IsContext() const {
|
| if (!Object::IsHeapObject()) return false;
|
| Map* map = HeapObject::cast(this)->map();
|
| Heap* heap = map->GetHeap();
|
| @@ -754,14 +751,14 @@ bool Object::IsContext() {
|
| }
|
|
|
|
|
| -bool Object::IsNativeContext() {
|
| +bool Object::IsNativeContext() const {
|
| return Object::IsHeapObject() &&
|
| HeapObject::cast(this)->map() ==
|
| HeapObject::cast(this)->GetHeap()->native_context_map();
|
| }
|
|
|
|
|
| -bool Object::IsScopeInfo() {
|
| +bool Object::IsScopeInfo() const {
|
| return Object::IsHeapObject() &&
|
| HeapObject::cast(this)->map() ==
|
| HeapObject::cast(this)->GetHeap()->scope_info_map();
|
| @@ -788,7 +785,7 @@ TYPE_CHECKER(JSDate, JS_DATE_TYPE)
|
| TYPE_CHECKER(JSMessageObject, JS_MESSAGE_OBJECT_TYPE)
|
|
|
|
|
| -bool Object::IsStringWrapper() {
|
| +bool Object::IsStringWrapper() const {
|
| return IsJSValue() && JSValue::cast(this)->value()->IsString();
|
| }
|
|
|
| @@ -796,7 +793,7 @@ bool Object::IsStringWrapper() {
|
| TYPE_CHECKER(Foreign, FOREIGN_TYPE)
|
|
|
|
|
| -bool Object::IsBoolean() {
|
| +bool Object::IsBoolean() const {
|
| return IsOddball() &&
|
| ((Oddball::cast(this)->kind() & Oddball::kNotBooleanMask) == 0);
|
| }
|
| @@ -808,7 +805,7 @@ TYPE_CHECKER(JSTypedArray, JS_TYPED_ARRAY_TYPE)
|
| TYPE_CHECKER(JSDataView, JS_DATA_VIEW_TYPE)
|
|
|
|
|
| -bool Object::IsJSArrayBufferView() {
|
| +bool Object::IsJSArrayBufferView() const {
|
| return IsJSDataView() || IsJSTypedArray();
|
| }
|
|
|
| @@ -821,47 +818,47 @@ template <> inline bool Is<JSArray>(Object* obj) {
|
| }
|
|
|
|
|
| -bool Object::IsHashTable() {
|
| +bool Object::IsHashTable() const {
|
| return Object::IsHeapObject() &&
|
| HeapObject::cast(this)->map() ==
|
| HeapObject::cast(this)->GetHeap()->hash_table_map();
|
| }
|
|
|
|
|
| -bool Object::IsWeakHashTable() {
|
| +bool Object::IsWeakHashTable() const {
|
| return IsHashTable();
|
| }
|
|
|
|
|
| -bool Object::IsDictionary() {
|
| +bool Object::IsDictionary() const {
|
| return IsHashTable() &&
|
| this != HeapObject::cast(this)->GetHeap()->string_table();
|
| }
|
|
|
|
|
| -bool Object::IsNameDictionary() {
|
| +bool Object::IsNameDictionary() const {
|
| return IsDictionary();
|
| }
|
|
|
|
|
| -bool Object::IsSeededNumberDictionary() {
|
| +bool Object::IsSeededNumberDictionary() const {
|
| return IsDictionary();
|
| }
|
|
|
|
|
| -bool Object::IsUnseededNumberDictionary() {
|
| +bool Object::IsUnseededNumberDictionary() const {
|
| return IsDictionary();
|
| }
|
|
|
|
|
| -bool Object::IsStringTable() {
|
| +bool Object::IsStringTable() const {
|
| return IsHashTable();
|
| }
|
|
|
|
|
| -bool Object::IsJSFunctionResultCache() {
|
| +bool Object::IsJSFunctionResultCache() const {
|
| if (!IsFixedArray()) return false;
|
| - FixedArray* self = FixedArray::cast(this);
|
| + const FixedArray* self = FixedArray::cast(this);
|
| int length = self->length();
|
| if (length < JSFunctionResultCache::kEntriesIndex) return false;
|
| if ((length - JSFunctionResultCache::kEntriesIndex)
|
| @@ -870,7 +867,10 @@ bool Object::IsJSFunctionResultCache() {
|
| }
|
| #ifdef VERIFY_HEAP
|
| if (FLAG_verify_heap) {
|
| - reinterpret_cast<JSFunctionResultCache*>(this)->
|
| + // TODO(svenpanne) We use const_cast here and below to break our dependency
|
| + // cycle between the predicates and the verifiers. This can be removed when
|
| + // the verifiers are const-correct, too.
|
| + reinterpret_cast<JSFunctionResultCache*>(const_cast<Object*>(this))->
|
| JSFunctionResultCacheVerify();
|
| }
|
| #endif
|
| @@ -878,7 +878,7 @@ bool Object::IsJSFunctionResultCache() {
|
| }
|
|
|
|
|
| -bool Object::IsNormalizedMapCache() {
|
| +bool Object::IsNormalizedMapCache() const {
|
| return NormalizedMapCache::IsNormalizedMapCache(this);
|
| }
|
|
|
| @@ -888,68 +888,69 @@ int NormalizedMapCache::GetIndex(Handle<Map> map) {
|
| }
|
|
|
|
|
| -bool NormalizedMapCache::IsNormalizedMapCache(Object* obj) {
|
| +bool NormalizedMapCache::IsNormalizedMapCache(const Object* obj) {
|
| if (!obj->IsFixedArray()) return false;
|
| if (FixedArray::cast(obj)->length() != NormalizedMapCache::kEntries) {
|
| return false;
|
| }
|
| #ifdef VERIFY_HEAP
|
| if (FLAG_verify_heap) {
|
| - reinterpret_cast<NormalizedMapCache*>(obj)->NormalizedMapCacheVerify();
|
| + reinterpret_cast<NormalizedMapCache*>(const_cast<Object*>(obj))->
|
| + NormalizedMapCacheVerify();
|
| }
|
| #endif
|
| return true;
|
| }
|
|
|
|
|
| -bool Object::IsCompilationCacheTable() {
|
| +bool Object::IsCompilationCacheTable() const {
|
| return IsHashTable();
|
| }
|
|
|
|
|
| -bool Object::IsCodeCacheHashTable() {
|
| +bool Object::IsCodeCacheHashTable() const {
|
| return IsHashTable();
|
| }
|
|
|
|
|
| -bool Object::IsPolymorphicCodeCacheHashTable() {
|
| +bool Object::IsPolymorphicCodeCacheHashTable() const {
|
| return IsHashTable();
|
| }
|
|
|
|
|
| -bool Object::IsMapCache() {
|
| +bool Object::IsMapCache() const {
|
| return IsHashTable();
|
| }
|
|
|
|
|
| -bool Object::IsObjectHashTable() {
|
| +bool Object::IsObjectHashTable() const {
|
| return IsHashTable();
|
| }
|
|
|
|
|
| -bool Object::IsOrderedHashTable() {
|
| +bool Object::IsOrderedHashTable() const {
|
| return IsHeapObject() &&
|
| HeapObject::cast(this)->map() ==
|
| HeapObject::cast(this)->GetHeap()->ordered_hash_table_map();
|
| }
|
|
|
|
|
| -bool Object::IsOrderedHashSet() {
|
| +bool Object::IsOrderedHashSet() const {
|
| return IsOrderedHashTable();
|
| }
|
|
|
|
|
| -bool Object::IsOrderedHashMap() {
|
| +bool Object::IsOrderedHashMap() const {
|
| return IsOrderedHashTable();
|
| }
|
|
|
|
|
| -bool Object::IsPrimitive() {
|
| +bool Object::IsPrimitive() const {
|
| return IsOddball() || IsNumber() || IsString();
|
| }
|
|
|
|
|
| -bool Object::IsJSGlobalProxy() {
|
| +bool Object::IsJSGlobalProxy() const {
|
| bool result = IsHeapObject() &&
|
| (HeapObject::cast(this)->map()->instance_type() ==
|
| JS_GLOBAL_PROXY_TYPE);
|
| @@ -959,7 +960,7 @@ bool Object::IsJSGlobalProxy() {
|
| }
|
|
|
|
|
| -bool Object::IsGlobalObject() {
|
| +bool Object::IsGlobalObject() const {
|
| if (!IsHeapObject()) return false;
|
|
|
| InstanceType type = HeapObject::cast(this)->map()->instance_type();
|
| @@ -972,25 +973,24 @@ TYPE_CHECKER(JSGlobalObject, JS_GLOBAL_OBJECT_TYPE)
|
| TYPE_CHECKER(JSBuiltinsObject, JS_BUILTINS_OBJECT_TYPE)
|
|
|
|
|
| -bool Object::IsUndetectableObject() {
|
| +bool Object::IsUndetectableObject() const {
|
| return IsHeapObject()
|
| && HeapObject::cast(this)->map()->is_undetectable();
|
| }
|
|
|
|
|
| -bool Object::IsAccessCheckNeeded() {
|
| +bool Object::IsAccessCheckNeeded() const {
|
| if (!IsHeapObject()) return false;
|
| if (IsJSGlobalProxy()) {
|
| - JSGlobalProxy* proxy = JSGlobalProxy::cast(this);
|
| - GlobalObject* global =
|
| - proxy->GetIsolate()->context()->global_object();
|
| + const JSGlobalProxy* proxy = JSGlobalProxy::cast(this);
|
| + GlobalObject* global = proxy->GetIsolate()->context()->global_object();
|
| return proxy->IsDetachedFrom(global);
|
| }
|
| return HeapObject::cast(this)->map()->is_access_check_needed();
|
| }
|
|
|
|
|
| -bool Object::IsStruct() {
|
| +bool Object::IsStruct() const {
|
| if (!IsHeapObject()) return false;
|
| switch (HeapObject::cast(this)->map()->instance_type()) {
|
| #define MAKE_STRUCT_CASE(NAME, Name, name) case NAME##_TYPE: return true;
|
| @@ -1001,51 +1001,51 @@ bool Object::IsStruct() {
|
| }
|
|
|
|
|
| -#define MAKE_STRUCT_PREDICATE(NAME, Name, name) \
|
| - bool Object::Is##Name() { \
|
| - return Object::IsHeapObject() \
|
| +#define MAKE_STRUCT_PREDICATE(NAME, Name, name) \
|
| + bool Object::Is##Name() const { \
|
| + return Object::IsHeapObject() \
|
| && HeapObject::cast(this)->map()->instance_type() == NAME##_TYPE; \
|
| }
|
| STRUCT_LIST(MAKE_STRUCT_PREDICATE)
|
| #undef MAKE_STRUCT_PREDICATE
|
|
|
|
|
| -bool Object::IsUndefined() {
|
| +bool Object::IsUndefined() const {
|
| return IsOddball() && Oddball::cast(this)->kind() == Oddball::kUndefined;
|
| }
|
|
|
|
|
| -bool Object::IsNull() {
|
| +bool Object::IsNull() const {
|
| return IsOddball() && Oddball::cast(this)->kind() == Oddball::kNull;
|
| }
|
|
|
|
|
| -bool Object::IsTheHole() {
|
| +bool Object::IsTheHole() const {
|
| return IsOddball() && Oddball::cast(this)->kind() == Oddball::kTheHole;
|
| }
|
|
|
|
|
| -bool Object::IsException() {
|
| +bool Object::IsException() const {
|
| return IsOddball() && Oddball::cast(this)->kind() == Oddball::kException;
|
| }
|
|
|
|
|
| -bool Object::IsUninitialized() {
|
| +bool Object::IsUninitialized() const {
|
| return IsOddball() && Oddball::cast(this)->kind() == Oddball::kUninitialized;
|
| }
|
|
|
|
|
| -bool Object::IsTrue() {
|
| +bool Object::IsTrue() const {
|
| return IsOddball() && Oddball::cast(this)->kind() == Oddball::kTrue;
|
| }
|
|
|
|
|
| -bool Object::IsFalse() {
|
| +bool Object::IsFalse() const {
|
| return IsOddball() && Oddball::cast(this)->kind() == Oddball::kFalse;
|
| }
|
|
|
|
|
| -bool Object::IsArgumentsMarker() {
|
| +bool Object::IsArgumentsMarker() const {
|
| return IsOddball() && Oddball::cast(this)->kind() == Oddball::kArgumentMarker;
|
| }
|
|
|
| @@ -1058,7 +1058,7 @@ double Object::Number() {
|
| }
|
|
|
|
|
| -bool Object::IsNaN() {
|
| +bool Object::IsNaN() const {
|
| return this->IsHeapNumber() && std::isnan(HeapNumber::cast(this)->value());
|
| }
|
|
|
| @@ -1369,7 +1369,7 @@ Heap* HeapObject::GetHeap() const {
|
| }
|
|
|
|
|
| -Isolate* HeapObject::GetIsolate() {
|
| +Isolate* HeapObject::GetIsolate() const {
|
| return GetHeap()->isolate();
|
| }
|
|
|
| @@ -1478,7 +1478,7 @@ void HeapObject::IterateNextCodeLink(ObjectVisitor* v, int offset) {
|
| }
|
|
|
|
|
| -double HeapNumber::value() {
|
| +double HeapNumber::value() const {
|
| return READ_DOUBLE_FIELD(this, kValueOffset);
|
| }
|
|
|
| @@ -1849,7 +1849,7 @@ ACCESSORS(Oddball, to_string, String, kToStringOffset)
|
| ACCESSORS(Oddball, to_number, Object, kToNumberOffset)
|
|
|
|
|
| -byte Oddball::kind() {
|
| +byte Oddball::kind() const {
|
| return Smi::cast(READ_FIELD(this, kKindOffset))->value();
|
| }
|
|
|
| @@ -3147,7 +3147,7 @@ FixedTypedArray<Traits>* FixedTypedArray<Traits>::cast(Object* object) {
|
| template <class Traits>
|
| const FixedTypedArray<Traits>*
|
| FixedTypedArray<Traits>::cast(const Object* object) {
|
| - SLOW_ASSERT(const_cast<Object*>(object)->IsHeapObject() &&
|
| + SLOW_ASSERT(object->IsHeapObject() &&
|
| HeapObject::cast(object)->map()->instance_type() ==
|
| Traits::kInstanceType);
|
| return reinterpret_cast<FixedTypedArray<Traits>*>(object);
|
| @@ -3170,7 +3170,7 @@ HashTable<Derived, Shape, Key>::cast(Object* obj) {
|
| template <typename Derived, typename Shape, typename Key>
|
| const HashTable<Derived, Shape, Key>*
|
| HashTable<Derived, Shape, Key>::cast(const Object* obj) {
|
| - SLOW_ASSERT(const_cast<Object*>(obj)->IsHashTable());
|
| + SLOW_ASSERT(obj->IsHashTable());
|
| return reinterpret_cast<const HashTable*>(obj);
|
| }
|
|
|
| @@ -6438,7 +6438,7 @@ bool String::AsArrayIndex(uint32_t* index) {
|
| }
|
|
|
|
|
| -Object* JSReceiver::GetPrototype() {
|
| +Object* JSReceiver::GetPrototype() const {
|
| return map()->prototype();
|
| }
|
|
|
| @@ -6494,7 +6494,7 @@ bool JSGlobalObject::IsDetached() {
|
| }
|
|
|
|
|
| -bool JSGlobalProxy::IsDetachedFrom(GlobalObject* global) {
|
| +bool JSGlobalProxy::IsDetachedFrom(GlobalObject* global) const {
|
| return GetPrototype() != global;
|
| }
|
|
|
|
|