NS_ASSERTION(!entry->placeholderFrame, "Registering a placeholder for a frame that already has a placeholder!");
FrameManager::RegisterPlaceholderFrame(nsPlaceholderFrame* aPlaceholderFrame){  NS_ENSURE_TRUE(mPresShell, NS_ERROR_NOT_AVAILABLE);  NS_PRECONDITION(aPlaceholderFrame, "null param unexpected");#ifdef DEBUG  nsCOMPtr<nsIAtom> frameType;  aPlaceholderFrame->GetFrameType(getter_AddRefs(frameType));  NS_PRECONDITION(nsLayoutAtoms::placeholderFrame == frameType,                  "unexpected frame type");#endif  if (!mPlaceholderMap.ops) {    if (!PL_DHashTableInit(&mPlaceholderMap, &PlaceholderMapOps, nsnull,                           sizeof(PlaceholderMapEntry), 16)) {      mPlaceholderMap.ops = nsnull;      return NS_ERROR_OUT_OF_MEMORY;    }  }  PlaceholderMapEntry *entry = NS_STATIC_CAST(PlaceholderMapEntry*,          PL_DHashTableOperate(&mPlaceholderMap,                              aPlaceholderFrame->GetOutOfFlowFrame(),                              PL_DHASH_ADD));  if (!entry)    return NS_ERROR_OUT_OF_MEMORY;  entry->placeholderFrame = aPlaceholderFrame;  return NS_OK;}