| Index: Source/core/css/CSSValueObject.cpp
|
| diff --git a/Source/core/css/CSSValueObject.cpp b/Source/core/css/CSSValueObject.cpp
|
| index 0248bd8d865c83ddf3f6a989a8e6715bae771ec8..20ebdc8f1e1599a71be38a4efd506e4da20f3b55 100644
|
| --- a/Source/core/css/CSSValueObject.cpp
|
| +++ b/Source/core/css/CSSValueObject.cpp
|
| @@ -62,6 +62,18 @@ struct SameSizeAsCSSValueObject : public RefCountedWillBeGarbageCollectedFinaliz
|
|
|
| static_assert(sizeof(CSSValueObject) <= sizeof(SameSizeAsCSSValueObject), "CSSValueObject should stay small");
|
|
|
| +// Only for use by CSSValueObject.
|
| +inline CSSPrimitiveValue::CSSLargePrimitiveValue* toCSSLargePrimitiveValue(CSSValueObject* value)
|
| +{
|
| + ASSERT_WITH_SECURITY_IMPLICATION(!value || value->isPrimitiveValue());
|
| + return static_cast<CSSPrimitiveValue::CSSLargePrimitiveValue*>(value);
|
| +}
|
| +inline CSSPrimitiveValue toCSSPrimitiveValue(const CSSValueObject* value)
|
| +{
|
| + ASSERT_WITH_SECURITY_IMPLICATION(!value || value->isPrimitiveValue());
|
| + return CSSPrimitiveValue(static_cast<const CSSPrimitiveValue::CSSLargePrimitiveValue*>(value));
|
| +}
|
| +
|
| bool CSSValueObject::isImplicitInitialValue() const
|
| {
|
| return m_classType == InitialClass && toCSSInitialValue(this)->isImplicit();
|
| @@ -126,7 +138,7 @@ bool CSSValueObject::equals(const CSSValueObject& other) const
|
| case PathClass:
|
| return compareCSSValues<CSSPathValue>(*this, other);
|
| case PrimitiveClass:
|
| - return compareCSSValues<CSSPrimitiveValue>(*this, other);
|
| + return toCSSPrimitiveValue(this).equals(toCSSPrimitiveValue(&other));
|
| case ReflectClass:
|
| return compareCSSValues<CSSReflectValue>(*this, other);
|
| case ShadowClass:
|
| @@ -193,7 +205,7 @@ String CSSValueObject::cssText() const
|
| case PathClass:
|
| return toCSSPathValue(this)->customCSSText();
|
| case PrimitiveClass:
|
| - return toCSSPrimitiveValue(this)->customCSSText();
|
| + return toCSSPrimitiveValue(this).customCSSText();
|
| case ReflectClass:
|
| return toCSSReflectValue(this)->customCSSText();
|
| case ShadowClass:
|
| @@ -273,7 +285,7 @@ void CSSValueObject::destroy()
|
| delete toCSSPathValue(this);
|
| return;
|
| case PrimitiveClass:
|
| - delete toCSSPrimitiveValue(this);
|
| + delete toCSSLargePrimitiveValue(this);
|
| return;
|
| case ReflectClass:
|
| delete toCSSReflectValue(this);
|
| @@ -364,7 +376,7 @@ void CSSValueObject::finalizeGarbageCollectedObject()
|
| toCSSPathValue(this)->~CSSPathValue();
|
| return;
|
| case PrimitiveClass:
|
| - toCSSPrimitiveValue(this)->~CSSPrimitiveValue();
|
| + toCSSLargePrimitiveValue(this)->~CSSLargePrimitiveValue();
|
| return;
|
| case ReflectClass:
|
| toCSSReflectValue(this)->~CSSReflectValue();
|
| @@ -455,7 +467,7 @@ DEFINE_TRACE(CSSValueObject)
|
| toCSSPathValue(this)->traceAfterDispatch(visitor);
|
| return;
|
| case PrimitiveClass:
|
| - toCSSPrimitiveValue(this)->traceAfterDispatch(visitor);
|
| + toCSSLargePrimitiveValue(this)->traceAfterDispatch(visitor);
|
| return;
|
| case ReflectClass:
|
| toCSSReflectValue(this)->traceAfterDispatch(visitor);
|
|
|