зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1372182 part 8 - Optimize AddTypePropertyId. r=evilpie
This commit is contained in:
Родитель
733406cbad
Коммит
6dbbe103da
|
@ -405,11 +405,10 @@ PropertyHasBeenMarkedNonConstant(JSObject* obj, jsid id)
|
||||||
}
|
}
|
||||||
|
|
||||||
MOZ_ALWAYS_INLINE bool
|
MOZ_ALWAYS_INLINE bool
|
||||||
HasTypePropertyId(JSObject* obj, jsid id, TypeSet::Type type)
|
HasTrackedPropertyType(JSObject* obj, jsid id, TypeSet::Type type)
|
||||||
{
|
{
|
||||||
id = IdToTypeId(id);
|
MOZ_ASSERT(id == IdToTypeId(id));
|
||||||
if (!TrackPropertyTypes(obj, id))
|
MOZ_ASSERT(TrackPropertyTypes(obj, id));
|
||||||
return true;
|
|
||||||
|
|
||||||
if (HeapTypeSet* types = obj->group()->maybeGetProperty(id)) {
|
if (HeapTypeSet* types = obj->group()->maybeGetProperty(id)) {
|
||||||
if (!types->hasType(type))
|
if (!types->hasType(type))
|
||||||
|
@ -423,6 +422,16 @@ HasTypePropertyId(JSObject* obj, jsid id, TypeSet::Type type)
|
||||||
return false;
|
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
|
MOZ_ALWAYS_INLINE bool
|
||||||
HasTypePropertyId(JSObject* obj, jsid id, const Value& value)
|
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)
|
AddTypePropertyId(JSContext* cx, JSObject* obj, jsid id, TypeSet::Type type)
|
||||||
{
|
{
|
||||||
id = IdToTypeId(id);
|
id = IdToTypeId(id);
|
||||||
if (TrackPropertyTypes(obj, id))
|
if (TrackPropertyTypes(obj, id) && !HasTrackedPropertyType(obj, id, type))
|
||||||
AddTypePropertyId(cx, obj->group(), obj, id, type);
|
AddTypePropertyId(cx, obj->group(), obj, id, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
MOZ_ALWAYS_INLINE void
|
MOZ_ALWAYS_INLINE void
|
||||||
AddTypePropertyId(JSContext* cx, JSObject* obj, jsid id, const Value& value)
|
AddTypePropertyId(JSContext* cx, JSObject* obj, jsid id, const Value& value)
|
||||||
{
|
{
|
||||||
id = IdToTypeId(id);
|
return AddTypePropertyId(cx, obj, id, TypeSet::GetValueType(value));
|
||||||
if (TrackPropertyTypes(obj, id))
|
|
||||||
AddTypePropertyId(cx, obj->group(), obj, id, value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
|
|
Загрузка…
Ссылка в новой задаче