Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(619)

Unified Diff: Source/core/css/CSSCalculationValue.cpp

Issue 166443003: Move CSSCalcExpressionNode and subclasses to the oilpan heap. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Review feedback Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/css/CSSCalculationValue.h ('k') | Source/core/css/CSSCalculationValueTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/css/CSSCalculationValue.cpp
diff --git a/Source/core/css/CSSCalculationValue.cpp b/Source/core/css/CSSCalculationValue.cpp
index c0b94ba16c4cf8cac84900fd6fad68009922b87d..58ce6d7cd01cd2567fd26ce8bb098adaf50edfce 100644
--- a/Source/core/css/CSSCalculationValue.cpp
+++ b/Source/core/css/CSSCalculationValue.cpp
@@ -47,6 +47,8 @@ enum ParseState {
namespace WebCore {
+DEFINE_GC_INFO(CSSCalcExpressionNode);
+
static CalculationCategory unitCategory(CSSPrimitiveValue::UnitTypes type)
{
switch (type) {
@@ -179,19 +181,19 @@ CSSCalcExpressionNode::~CSSCalcExpressionNode()
}
class CSSCalcPrimitiveValue FINAL : public CSSCalcExpressionNode {
- WTF_MAKE_FAST_ALLOCATED;
+ WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED;
public:
- static PassRefPtr<CSSCalcPrimitiveValue> create(PassRefPtr<CSSPrimitiveValue> value, bool isInteger)
+ static PassRefPtrWillBeRawPtr<CSSCalcPrimitiveValue> create(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> value, bool isInteger)
{
- return adoptRef(new CSSCalcPrimitiveValue(value, isInteger));
+ return adoptRefWillBeNoop(new CSSCalcPrimitiveValue(value, isInteger));
}
- static PassRefPtr<CSSCalcPrimitiveValue> create(double value, CSSPrimitiveValue::UnitTypes type, bool isInteger)
+ static PassRefPtrWillBeRawPtr<CSSCalcPrimitiveValue> create(double value, CSSPrimitiveValue::UnitTypes type, bool isInteger)
{
if (std::isnan(value) || std::isinf(value))
return 0;
- return adoptRef(new CSSCalcPrimitiveValue(CSSPrimitiveValue::create(value, type).get(), isInteger));
+ return adoptRefWillBeNoop(new CSSCalcPrimitiveValue(CSSPrimitiveValue::create(value, type).get(), isInteger));
}
virtual bool isZero() const OVERRIDE
@@ -263,14 +265,21 @@ public:
return CSSPrimitiveValue::UnitTypes(m_value->primitiveType());
}
+
+ virtual void trace(Visitor* visitor)
+ {
+ visitor->trace(m_value);
+ CSSCalcExpressionNode::trace(visitor);
+ }
+
private:
- explicit CSSCalcPrimitiveValue(PassRefPtr<CSSPrimitiveValue> value, bool isInteger)
+ CSSCalcPrimitiveValue(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> value, bool isInteger)
: CSSCalcExpressionNode(unitCategory((CSSPrimitiveValue::UnitTypes)value->primitiveType()), isInteger)
, m_value(value)
{
}
- RefPtr<CSSPrimitiveValue> m_value;
+ RefPtrWillBeMember<CSSPrimitiveValue> m_value;
};
static const CalculationCategory addSubtractResult[CalcOther][CalcOther] = {
@@ -317,9 +326,8 @@ static bool isIntegerResult(const CSSCalcExpressionNode* leftSide, const CSSCalc
}
class CSSCalcBinaryOperation FINAL : public CSSCalcExpressionNode {
-
public:
- static PassRefPtr<CSSCalcExpressionNode> create(PassRefPtr<CSSCalcExpressionNode> leftSide, PassRefPtr<CSSCalcExpressionNode> rightSide, CalcOperator op)
+ static PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> create(PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> leftSide, PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> rightSide, CalcOperator op)
{
ASSERT(leftSide->category() != CalcOther && rightSide->category() != CalcOther);
@@ -327,10 +335,10 @@ public:
if (newCategory == CalcOther)
return 0;
- return adoptRef(new CSSCalcBinaryOperation(leftSide, rightSide, op, newCategory));
+ return adoptRefWillBeNoop(new CSSCalcBinaryOperation(leftSide, rightSide, op, newCategory));
}
- static PassRefPtr<CSSCalcExpressionNode> createSimplified(PassRefPtr<CSSCalcExpressionNode> leftSide, PassRefPtr<CSSCalcExpressionNode> rightSide, CalcOperator op)
+ static PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> createSimplified(PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> leftSide, PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> rightSide, CalcOperator op)
{
CalculationCategory leftCategory = leftSide->category();
CalculationCategory rightCategory = rightSide->category();
@@ -475,9 +483,15 @@ public:
return CSSPrimitiveValue::CSS_UNKNOWN;
}
+ virtual void trace(Visitor* visitor)
+ {
+ visitor->trace(m_leftSide);
+ visitor->trace(m_rightSide);
+ CSSCalcExpressionNode::trace(visitor);
+ }
private:
- CSSCalcBinaryOperation(PassRefPtr<CSSCalcExpressionNode> leftSide, PassRefPtr<CSSCalcExpressionNode> rightSide, CalcOperator op, CalculationCategory category)
+ CSSCalcBinaryOperation(PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> leftSide, PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> rightSide, CalcOperator op, CalculationCategory category)
: CSSCalcExpressionNode(category, isIntegerResult(leftSide.get(), rightSide.get(), op))
, m_leftSide(leftSide)
, m_rightSide(rightSide)
@@ -516,8 +530,8 @@ private:
return 0;
}
- const RefPtr<CSSCalcExpressionNode> m_leftSide;
- const RefPtr<CSSCalcExpressionNode> m_rightSide;
+ const RefPtrWillBeMember<CSSCalcExpressionNode> m_leftSide;
+ const RefPtrWillBeMember<CSSCalcExpressionNode> m_rightSide;
const CalcOperator m_operator;
};
@@ -532,8 +546,9 @@ static ParseState checkDepthAndIndex(int* depth, unsigned index, CSSParserValueL
}
class CSSCalcExpressionNodeParser {
+ DISALLOW_ALLOCATION(); // Is only ever stack allocated.
public:
- PassRefPtr<CSSCalcExpressionNode> parseCalc(CSSParserValueList* tokens)
+ PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> parseCalc(CSSParserValueList* tokens)
{
unsigned index = 0;
Value result;
@@ -546,7 +561,9 @@ public:
private:
struct Value {
- RefPtr<CSSCalcExpressionNode> value;
+ DISALLOW_ALLOCATION(); // Is only ever stack allocated.
+ public:
+ RefPtrWillBeRawPtr<CSSCalcExpressionNode> value;
};
char operatorValue(CSSParserValueList* tokens, unsigned index)
@@ -655,17 +672,17 @@ private:
}
};
-PassRefPtr<CSSCalcExpressionNode> CSSCalcValue::createExpressionNode(PassRefPtr<CSSPrimitiveValue> value, bool isInteger)
+PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> CSSCalcValue::createExpressionNode(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> value, bool isInteger)
{
return CSSCalcPrimitiveValue::create(value, isInteger);
}
-PassRefPtr<CSSCalcExpressionNode> CSSCalcValue::createExpressionNode(PassRefPtr<CSSCalcExpressionNode> leftSide, PassRefPtr<CSSCalcExpressionNode> rightSide, CalcOperator op)
+PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> CSSCalcValue::createExpressionNode(PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> leftSide, PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> rightSide, CalcOperator op)
{
return CSSCalcBinaryOperation::create(leftSide, rightSide, op);
}
-PassRefPtr<CSSCalcExpressionNode> CSSCalcValue::createExpressionNode(const CalcExpressionNode* node, float zoom)
+PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> CSSCalcValue::createExpressionNode(const CalcExpressionNode* node, float zoom)
{
switch (node->type()) {
case CalcExpressionNodeNumber: {
@@ -702,7 +719,7 @@ PassRefPtr<CSSCalcExpressionNode> CSSCalcValue::createExpressionNode(const CalcE
return 0;
}
-PassRefPtr<CSSCalcExpressionNode> CSSCalcValue::createExpressionNode(const Length& length, float zoom)
+PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> CSSCalcValue::createExpressionNode(const Length& length, float zoom)
{
switch (length.type()) {
case Percent:
@@ -731,7 +748,7 @@ PassRefPtr<CSSCalcExpressionNode> CSSCalcValue::createExpressionNode(const Lengt
PassRefPtrWillBeRawPtr<CSSCalcValue> CSSCalcValue::create(CSSParserString name, CSSParserValueList* parserValueList, ValueRange range)
{
CSSCalcExpressionNodeParser parser;
- RefPtr<CSSCalcExpressionNode> expression;
+ RefPtrWillBeRawPtr<CSSCalcExpressionNode> expression;
if (equalIgnoringCase(name, "calc(") || equalIgnoringCase(name, "-webkit-calc("))
expression = parser.parseCalc(parserValueList);
@@ -740,9 +757,15 @@ PassRefPtrWillBeRawPtr<CSSCalcValue> CSSCalcValue::create(CSSParserString name,
return expression ? adoptRefCountedWillBeRefCountedGarbageCollected(new CSSCalcValue(expression, range)) : 0;
}
-PassRefPtrWillBeRawPtr<CSSCalcValue> CSSCalcValue::create(PassRefPtr<CSSCalcExpressionNode> expression, ValueRange range)
+PassRefPtrWillBeRawPtr<CSSCalcValue> CSSCalcValue::create(PassRefPtrWillBeRawPtr<CSSCalcExpressionNode> expression, ValueRange range)
{
return adoptRefCountedWillBeRefCountedGarbageCollected(new CSSCalcValue(expression, range));
}
+void CSSCalcValue::traceAfterDispatch(Visitor* visitor)
+{
+ visitor->trace(m_expression);
+ CSSValue::traceAfterDispatch(visitor);
+}
+
} // namespace WebCore
« no previous file with comments | « Source/core/css/CSSCalculationValue.h ('k') | Source/core/css/CSSCalculationValueTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698