Index: Source/core/css/CSSValue.cpp |
diff --git a/Source/core/css/CSSValue.cpp b/Source/core/css/CSSValue.cpp |
index 013d2ac72ec9a20dd0c0fbee117b524feadaa946..c24b1c828552aacba6e4db8c0e84e78b73f65278 100644 |
--- a/Source/core/css/CSSValue.cpp |
+++ b/Source/core/css/CSSValue.cpp |
@@ -58,50 +58,12 @@ |
namespace blink { |
struct SameSizeAsCSSValue : public RefCountedWillBeGarbageCollectedFinalized<SameSizeAsCSSValue> |
-// VC++ 2013 doesn't support EBCO (Empty Base Class Optimization), and having |
-// multiple empty base classes makes the size of CSSValue 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 this #if directive once VC++'s issue gets fixed. |
-// Note that we're going to split CSSValue class into two classes; CSSOMValue |
-// (assumed name) which derives ScriptWrappable and CSSValue (new one) which |
-// doesn't derive ScriptWrappable or ScriptWrappableBase. Then, we can safely |
-// remove this #if directive. |
-#if ENABLE(OILPAN) && COMPILER(MSVC) |
- , public ScriptWrappableBase |
-#endif |
{ |
uint32_t bitfields; |
}; |
COMPILE_ASSERT(sizeof(CSSValue) <= sizeof(SameSizeAsCSSValue), CSS_value_should_stay_small); |
-class TextCloneCSSValue : public CSSValue { |
-public: |
- static PassRefPtrWillBeRawPtr<TextCloneCSSValue> create(ClassType classType, const String& text) |
- { |
- return adoptRefWillBeNoop(new TextCloneCSSValue(classType, text)); |
- } |
- |
- String cssText() const { return m_cssText; } |
- |
- void traceAfterDispatch(Visitor* visitor) { CSSValue::traceAfterDispatch(visitor); } |
- |
-private: |
- TextCloneCSSValue(ClassType classType, const String& text) |
- : CSSValue(classType, /*isCSSOMSafe*/ true) |
- , m_cssText(text) |
- { |
- m_isTextClone = true; |
- } |
- |
- String m_cssText; |
-}; |
- |
-DEFINE_CSS_VALUE_TYPE_CASTS(TextCloneCSSValue, isTextCloneCSSValue()); |
- |
bool CSSValue::isImplicitInitialValue() const |
{ |
return m_classType == InitialClass && toCSSInitialValue(this)->isImplicit(); |
@@ -122,9 +84,6 @@ CSSValue::Type CSSValue::cssValueType() const |
bool CSSValue::hasFailedOrCanceledSubresources() const |
{ |
- // This should get called for internal instances only. |
- ASSERT(!isCSSOMSafe()); |
- |
if (isValueList()) |
return toCSSValueList(this)->hasFailedOrCanceledSubresources(); |
if (classType() == FontFaceSrcClass) |
@@ -147,11 +106,6 @@ inline static bool compareCSSValues(const CSSValue& first, const CSSValue& secon |
bool CSSValue::equals(const CSSValue& other) const |
{ |
- if (m_isTextClone) { |
- ASSERT(isCSSOMSafe()); |
- return toTextCloneCSSValue(this)->cssText() == other.cssText(); |
- } |
- |
if (m_classType == other.m_classType) { |
switch (m_classType) { |
case BorderImageSliceClass: |
@@ -225,12 +179,6 @@ bool CSSValue::equals(const CSSValue& other) const |
String CSSValue::cssText() const |
{ |
- if (m_isTextClone) { |
- ASSERT(isCSSOMSafe()); |
- return toTextCloneCSSValue(this)->cssText(); |
- } |
- ASSERT(!isCSSOMSafe() || isSubtypeExposedToCSSOM()); |
- |
switch (classType()) { |
case BorderImageSliceClass: |
return toCSSBorderImageSliceValue(this)->customCSSText(); |
@@ -297,13 +245,6 @@ String CSSValue::cssText() const |
void CSSValue::destroy() |
{ |
- if (m_isTextClone) { |
- ASSERT(isCSSOMSafe()); |
- delete toTextCloneCSSValue(this); |
- return; |
- } |
- ASSERT(!isCSSOMSafe() || isSubtypeExposedToCSSOM()); |
- |
switch (classType()) { |
case BorderImageSliceClass: |
delete toCSSBorderImageSliceValue(this); |
@@ -398,13 +339,6 @@ void CSSValue::destroy() |
void CSSValue::finalizeGarbageCollectedObject() |
{ |
- if (m_isTextClone) { |
- ASSERT(isCSSOMSafe()); |
- toTextCloneCSSValue(this)->~TextCloneCSSValue(); |
- return; |
- } |
- ASSERT(!isCSSOMSafe() || isSubtypeExposedToCSSOM()); |
- |
switch (classType()) { |
case BorderImageSliceClass: |
toCSSBorderImageSliceValue(this)->~CSSBorderImageSliceValue(); |
@@ -499,13 +433,6 @@ void CSSValue::finalizeGarbageCollectedObject() |
void CSSValue::trace(Visitor* visitor) |
{ |
- if (m_isTextClone) { |
- ASSERT(isCSSOMSafe()); |
- toTextCloneCSSValue(this)->traceAfterDispatch(visitor); |
- return; |
- } |
- ASSERT(!isCSSOMSafe() || isSubtypeExposedToCSSOM()); |
- |
switch (classType()) { |
case BorderImageSliceClass: |
toCSSBorderImageSliceValue(this)->traceAfterDispatch(visitor); |
@@ -598,26 +525,4 @@ void CSSValue::trace(Visitor* visitor) |
ASSERT_NOT_REACHED(); |
} |
-PassRefPtrWillBeRawPtr<CSSValue> CSSValue::cloneForCSSOM() const |
-{ |
- switch (classType()) { |
- case PrimitiveClass: |
- return toCSSPrimitiveValue(this)->cloneForCSSOM(); |
- case ValueListClass: |
- return toCSSValueList(this)->cloneForCSSOM(); |
- case ImageClass: |
- case CursorImageClass: |
- return toCSSImageValue(this)->cloneForCSSOM(); |
- case CSSFilterClass: |
- return toCSSFilterValue(this)->cloneForCSSOM(); |
- case CSSTransformClass: |
- return toCSSTransformValue(this)->cloneForCSSOM(); |
- case ImageSetClass: |
- return toCSSImageSetValue(this)->cloneForCSSOM(); |
- default: |
- ASSERT(!isSubtypeExposedToCSSOM()); |
- return TextCloneCSSValue::create(classType(), cssText()); |
- } |
-} |
- |
} |