Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / css / CSSRule.cpp
index bbeebcd..74c1e89 100644 (file)
 
 namespace blink {
 
-struct SameSizeAsCSSRule : public RefCountedWillBeGarbageCollectedFinalized<SameSizeAsCSSRule> {
+// VC++ 2013 doesn't support EBCO (Empty Base Class Optimization), and having
+// multiple empty base classes makes the size of CSSRule bloat (Note that both
+// of GarbageCollectedFinalized and ScriptWrappableBase are empty classes).
+// See the following article for details.
+// http://social.msdn.microsoft.com/forums/vstudio/en-US/504c6598-6076-4acf-96b6-e6acb475d302/vc-multiple-inheritance-empty-base-classes-bloats-object-size
+//
+// FIXME: Remove ScriptWrappableBase from the base class list once VC++'s issue
+// gets fixed.
+// Note that we're going to split CSSRule class into two classes; CSSOMRule
+// (assumed name) which derives ScriptWrappable and CSSRule (new one) which
+// doesn't derive ScriptWrappable or ScriptWrappableBase. Then, we can safely
+// remove ScriptWrappableBase from the base class list.
+struct SameSizeAsCSSRule : public RefCountedWillBeGarbageCollectedFinalized<SameSizeAsCSSRule>, public ScriptWrappableBase {
     virtual ~SameSizeAsCSSRule();
     unsigned char bitfields;
     void* pointerUnion;