Bug 883887. Add an Unlink method to js::ExpandoAndGeneration. r=peterv

This commit is contained in:
Boris Zbarsky 2013-06-19 14:48:44 -04:00
parent 919f238e96
commit 9c26ede3fe
4 changed files with 9 additions and 6 deletions

View File

@ -1865,8 +1865,7 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsDocument)
// else, and not unlink an awful lot here.
tmp->mIdentifierMap.Clear();
++tmp->mExpandoAndGeneration.generation;
tmp->mExpandoAndGeneration.expando = JS::UndefinedValue();
tmp->mExpandoAndGeneration.Unlink();
tmp->mCustomPrototypes.Clear();

View File

@ -314,8 +314,7 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(HTMLFormElement,
nsGenericHTMLElement)
tmp->Clear();
++tmp->mExpandoAndGeneration.generation;
tmp->mExpandoAndGeneration.expando = JS::UndefinedValue();
tmp->mExpandoAndGeneration.Unlink();
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(HTMLFormElement,

View File

@ -28,8 +28,7 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsDOMStringMap)
tmp->mElement->RemoveMutationObserver(tmp);
tmp->mElement = nullptr;
}
++tmp->mExpandoAndGeneration.generation;
tmp->mExpandoAndGeneration.expando = JS::UndefinedValue();
tmp->mExpandoAndGeneration.Unlink();
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(nsDOMStringMap)

View File

@ -892,6 +892,12 @@ struct ExpandoAndGeneration {
generation(0)
{}
void Unlink()
{
++generation;
expando.setUndefined();
}
JS::Heap<JS::Value> expando;
uint32_t generation;
};