// static void XPCLazyCallContext::AssertContextIsTopOfStack(JSContext* cx) { XPCPerThreadData* tls = XPCPerThreadData::GetData(cx); XPCJSContextStack* stack = tls->GetJSContextStack(); JSContext* topJSContext; nsresult rv = stack->Peek(&topJSContext); NS_ASSERTION(NS_SUCCEEDED(rv), "XPCJSContextStack::Peek failed"); NS_ASSERTION(cx == topJSContext, "wrong context on XPCJSContextStack!"); }
NS_IMETHODIMP nsXPCJSContextStackIterator::Reset(nsIJSContextStack *aStack) { NS_ASSERTION(aStack == nsXPConnect::GetXPConnect(), "aStack must be implemented by XPConnect singleton"); XPCPerThreadData* data = XPCPerThreadData::GetData(nsnull); if(!data) return NS_ERROR_FAILURE; mStack = data->GetJSContextStack()->GetStack(); if(mStack->IsEmpty()) mStack = nsnull; else mPosition = mStack->Length() - 1; return NS_OK; }
void xpc_qsAssertContextOK(JSContext *cx) { XPCPerThreadData *thread = XPCPerThreadData::GetData(cx); XPCJSContextStack* stack = thread->GetJSContextStack(); JSContext* topJSContext = nsnull; nsresult rv = stack->Peek(&topJSContext); NS_ASSERTION(NS_SUCCEEDED(rv), "XPCJSContextStack::Peek failed"); // This is what we're actually trying to assert here. NS_ASSERTION(cx == topJSContext, "wrong context on XPCJSContextStack!"); NS_ASSERTION(XPCPerThreadData::IsMainThread(cx), "XPConnect quick stub called on non-main thread"); }