Bug 1372182 part 8 - Optimize AddTypePropertyId. r=evilpie

This commit is contained in:
Jan de Mooij 2017-06-16 17:42:23 +02:00
Родитель 733406cbad
Коммит 6dbbe103da
1 изменённых файлов: 15 добавлений и 8 удалений

Просмотреть файл

@ -405,11 +405,10 @@ PropertyHasBeenMarkedNonConstant(JSObject* obj, jsid id)
}
MOZ_ALWAYS_INLINE bool
HasTypePropertyId(JSObject* obj, jsid id, TypeSet::Type type)
HasTrackedPropertyType(JSObject* obj, jsid id, TypeSet::Type type)
{
id = IdToTypeId(id);
if (!TrackPropertyTypes(obj, id))
return true;
MOZ_ASSERT(id == IdToTypeId(id));
MOZ_ASSERT(TrackPropertyTypes(obj, id));
if (HeapTypeSet* types = obj->group()->maybeGetProperty(id)) {
if (!types->hasType(type))
@ -423,6 +422,16 @@ HasTypePropertyId(JSObject* obj, jsid id, TypeSet::Type type)
return false;
}
MOZ_ALWAYS_INLINE bool
HasTypePropertyId(JSObject* obj, jsid id, TypeSet::Type type)
{
id = IdToTypeId(id);
if (!TrackPropertyTypes(obj, id))
return true;
return HasTrackedPropertyType(obj, id, type);
}
MOZ_ALWAYS_INLINE bool
HasTypePropertyId(JSObject* obj, jsid id, const Value& value)
{
@ -437,16 +446,14 @@ MOZ_ALWAYS_INLINE void
AddTypePropertyId(JSContext* cx, JSObject* obj, jsid id, TypeSet::Type type)
{
id = IdToTypeId(id);
if (TrackPropertyTypes(obj, id))
if (TrackPropertyTypes(obj, id) && !HasTrackedPropertyType(obj, id, type))
AddTypePropertyId(cx, obj->group(), obj, id, type);
}
MOZ_ALWAYS_INLINE void
AddTypePropertyId(JSContext* cx, JSObject* obj, jsid id, const Value& value)
{
id = IdToTypeId(id);
if (TrackPropertyTypes(obj, id))
AddTypePropertyId(cx, obj->group(), obj, id, value);
return AddTypePropertyId(cx, obj, id, TypeSet::GetValueType(value));
}
inline void