Changeset 138879 in webkit


Ignore:
Timestamp:
Jan 4, 2013 6:05:14 PM (11 years ago)
Author:
rniwa@webkit.org
Message:

Chromium windows compile fails because of the assertion in NodeRareData
https://bugs.webkit.org/show_bug.cgi?id=106149

Reviewed by Andreas Kling.

MSVC adds padding between bitfields of different types for better alignment.
Since we care more about the memory usage, use unsigned for all bitfields to work around this behavior.

  • dom/NodeRareData.cpp:

(SameSizeAsNodeRareData):
(WebCore):

  • dom/NodeRareData.h:

(WebCore::NodeRareData::isWebVTTNode):
(WebCore::NodeRareData::isWebVTTFutureNode):
(NodeRareData):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r138878 r138879  
     12013-01-04  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        Chromium windows compile fails because of the assertion in NodeRareData
     4        https://bugs.webkit.org/show_bug.cgi?id=106149
     5
     6        Reviewed by Andreas Kling.
     7
     8        MSVC adds padding between bitfields of different types for better alignment.
     9        Since we care more about the memory usage, use unsigned for all bitfields to work around this behavior.
     10
     11        * dom/NodeRareData.cpp:
     12        (SameSizeAsNodeRareData):
     13        (WebCore):
     14        * dom/NodeRareData.h:
     15        (WebCore::NodeRareData::isWebVTTNode):
     16        (WebCore::NodeRareData::isWebVTTFutureNode):
     17        (NodeRareData):
     18
    1192013-01-04  Dan Bernstein  <mitz@apple.com>
    220
  • trunk/Source/WebCore/dom/NodeRareData.cpp

    r138811 r138879  
    4646    void* m_microData;
    4747#endif
     48};
    4849
    49 // Enum is integer type and is aligned in Windows when placed in the bitfield, so it takes more space.
    50 #if PLATFORM(WIN)
    51     TextTrack::WebVTTNodeType m_WebVTTNodeType;
    52 #endif
    53 };
    5450COMPILE_ASSERT(sizeof(NodeRareData) == sizeof(SameSizeAsNodeRareData), NodeRareDataShouldStaySmall);
    5551
  • trunk/Source/WebCore/dom/NodeRareData.h

    r138823 r138879  
    373373protected:
    374374#if ENABLE(VIDEO_TRACK)
    375     bool isWebVTTNode() { return m_WebVTTNodeType != TextTrack::WebVTTNodeTypeNone; }
     375    bool isWebVTTNode() { return static_cast<TextTrack::WebVTTNodeType>(m_WebVTTNodeType) != TextTrack::WebVTTNodeTypeNone; }
    376376    void setIsWebVTTNode() { m_WebVTTNodeType = TextTrack::WebVTTNodeTypePast; }
    377     bool isWebVTTFutureNode() { return m_WebVTTNodeType == TextTrack::WebVTTNodeTypeFuture; }
     377    bool isWebVTTFutureNode() { return static_cast<TextTrack::WebVTTNodeType>(m_WebVTTNodeType) == TextTrack::WebVTTNodeTypeFuture; }
    378378    void setIsWebVTTFutureNode() { m_WebVTTNodeType = TextTrack::WebVTTNodeTypeFuture; }
    379379#endif
    380380    short m_tabIndex;
    381381    unsigned short m_childIndex;
    382     bool m_tabIndexWasSetExplicitly : 1;
    383     bool m_needsFocusAppearanceUpdateSoonAfterAttach : 1;
    384     bool m_styleAffectedByEmpty : 1;
    385     bool m_isInCanvasSubtree : 1;
     382    unsigned m_tabIndexWasSetExplicitly : 1;
     383    unsigned m_needsFocusAppearanceUpdateSoonAfterAttach : 1;
     384    unsigned m_styleAffectedByEmpty : 1;
     385    unsigned m_isInCanvasSubtree : 1;
    386386#if ENABLE(FULLSCREEN_API)
    387     bool m_containsFullScreenElement : 1;
     387    unsigned m_containsFullScreenElement : 1;
    388388#endif
    389389#if ENABLE(DIALOG_ELEMENT)
    390     bool m_isInTopLayer : 1;
     390    unsigned m_isInTopLayer : 1;
    391391#endif
    392392#if ENABLE(SVG)
    393     bool m_hasPendingResources : 1;
    394 #endif
    395     bool m_childrenAffectedByHover : 1;
    396     bool m_childrenAffectedByActive : 1;
    397     bool m_childrenAffectedByDrag : 1;
     393    unsigned m_hasPendingResources : 1;
     394#endif
     395    unsigned m_childrenAffectedByHover : 1;
     396    unsigned m_childrenAffectedByActive : 1;
     397    unsigned m_childrenAffectedByDrag : 1;
    398398    // Bits for dynamic child matching.
    399399    // We optimize for :first-child and :last-child. The other positional child selectors like nth-child or
    400400    // *-child-of-type, we will just give up and re-evaluate whenever children change at all.
    401     bool m_childrenAffectedByFirstChildRules : 1;
    402     bool m_childrenAffectedByLastChildRules : 1;
    403     bool m_childrenAffectedByDirectAdjacentRules : 1;
    404     bool m_childrenAffectedByForwardPositionalRules : 1;
    405     bool m_childrenAffectedByBackwardPositionalRules : 1;
     401    unsigned m_childrenAffectedByFirstChildRules : 1;
     402    unsigned m_childrenAffectedByLastChildRules : 1;
     403    unsigned m_childrenAffectedByDirectAdjacentRules : 1;
     404    unsigned m_childrenAffectedByForwardPositionalRules : 1;
     405    unsigned m_childrenAffectedByBackwardPositionalRules : 1;
    406406#if ENABLE(VIDEO_TRACK)
    407     TextTrack::WebVTTNodeType m_WebVTTNodeType : 2;
    408 #endif
     407    unsigned m_WebVTTNodeType : 2;
     408#endif
     409
    409410private:
    410411    OwnPtr<NodeListsNodeData> m_nodeLists;
Note: See TracChangeset for help on using the changeset viewer.