void RenderLayerStackingNode::updateIsNormalFlowOnly()
{
    bool isNormalFlowOnly = shouldBeNormalFlowOnly();
    if (isNormalFlowOnly == this->isNormalFlowOnly())
        return;

    m_isNormalFlowOnly = isNormalFlowOnly;
    if (RenderLayer* p = layer()->parent())
        p->stackingNode()->dirtyNormalFlowList();
    dirtyStackingContextZOrderLists();
}
void RenderLayerStackingNode::updateStackingNodesAfterStyleChange(const RenderStyle* oldStyle)
{
    bool wasStackingContext = oldStyle ? !oldStyle->hasAutoZIndex() : false;
    int oldZIndex = oldStyle ? oldStyle->zIndex() : 0;

    bool isStackingContext = this->isStackingContext();
    if (isStackingContext == wasStackingContext && oldZIndex == zIndex())
        return;

    dirtyStackingContextZOrderLists();

    if (isStackingContext)
        dirtyZOrderLists();
    else
        clearZOrderLists();
}
void PaintLayerStackingNode::styleDidChange(const ComputedStyle* oldStyle) {
  bool wasStackingContext = oldStyle ? oldStyle->isStackingContext() : false;
  int oldZIndex = oldStyle ? oldStyle->zIndex() : 0;

  bool isStackingContext = this->isStackingContext();
  bool shouldBeStacked = layoutObject()->styleRef().isStacked();
  if (isStackingContext == wasStackingContext &&
      m_isStacked == shouldBeStacked && oldZIndex == zIndex())
    return;

  dirtyStackingContextZOrderLists();

  if (isStackingContext)
    dirtyZOrderLists();
  else
    clearZOrderLists();

  if (m_isStacked != shouldBeStacked) {
    m_isStacked = shouldBeStacked;
    if (!layoutObject()->documentBeingDestroyed() && !layer()->isRootLayer())
      compositor()->setNeedsCompositingUpdate(CompositingUpdateRebuildTree);
  }
}