Revert "moved BinaryExpression's data into IRNode"
This reverts commit efc8797880e2cef85a1d6211430d1dd27e3d5b78.
Reason for revert: breakage due to std::max initializer list
Original change's description:
> moved BinaryExpression's data into IRNode
>
> This is another step in the process of merging the various IRNodes' data
> into the base class.
>
> Change-Id: Ide39c240e6178e23bb6fe317dd56addf2ffefcbb
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/317102
> Commit-Queue: John Stiles <johnstiles@google.com>
> Reviewed-by: John Stiles <johnstiles@google.com>
TBR=brianosman@google.com,ethannicholas@google.com,johnstiles@google.com
Change-Id: Ib8ef629ffa0ff8bb0aeddfa4f42b824e79ce72b6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/317384
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/src/sksl/SkSLCPPCodeGenerator.cpp b/src/sksl/SkSLCPPCodeGenerator.cpp
index a62374e..3eacb80 100644
--- a/src/sksl/SkSLCPPCodeGenerator.cpp
+++ b/src/sksl/SkSLCPPCodeGenerator.cpp
@@ -70,45 +70,42 @@
void CPPCodeGenerator::writeBinaryExpression(const BinaryExpression& b,
Precedence parentPrecedence) {
- const Expression& left = b.left();
- const Expression& right = b.right();
- Token::Kind op = b.getOperator();
- if (op == Token::Kind::TK_PERCENT) {
+ if (b.fOperator == Token::Kind::TK_PERCENT) {
// need to use "%%" instead of "%" b/c the code will be inside of a printf
- Precedence precedence = GetBinaryPrecedence(op);
+ Precedence precedence = GetBinaryPrecedence(b.fOperator);
if (precedence >= parentPrecedence) {
this->write("(");
}
- this->writeExpression(left, precedence);
+ this->writeExpression(*b.fLeft, precedence);
this->write(" %% ");
- this->writeExpression(right, precedence);
+ this->writeExpression(*b.fRight, precedence);
if (precedence >= parentPrecedence) {
this->write(")");
}
- } else if (left.kind() == Expression::Kind::kNullLiteral ||
- right.kind() == Expression::Kind::kNullLiteral) {
+ } else if (b.fLeft->kind() == Expression::Kind::kNullLiteral ||
+ b.fRight->kind() == Expression::Kind::kNullLiteral) {
const Variable* var;
- if (left.kind() != Expression::Kind::kNullLiteral) {
- var = &left.as<VariableReference>().fVariable;
+ if (b.fLeft->kind() != Expression::Kind::kNullLiteral) {
+ var = &b.fLeft->as<VariableReference>().fVariable;
} else {
- var = &right.as<VariableReference>().fVariable;
+ var = &b.fRight->as<VariableReference>().fVariable;
}
SkASSERT(var->type().typeKind() == Type::TypeKind::kNullable &&
var->type().componentType() == *fContext.fFragmentProcessor_Type);
this->write("%s");
- const char* prefix = "";
- switch (op) {
+ const char* op = "";
+ switch (b.fOperator) {
case Token::Kind::TK_EQEQ:
- prefix = "!";
+ op = "!";
break;
case Token::Kind::TK_NEQ:
- prefix = "";
+ op = "";
break;
default:
SkASSERT(false);
}
int childIndex = this->getChildFPIndex(*var);
- fFormatArgs.push_back(String(prefix) + "_outer.childProcessor(" + to_string(childIndex) +
+ fFormatArgs.push_back(String(op) + "_outer.childProcessor(" + to_string(childIndex) +
") ? \"true\" : \"false\"");
} else {
INHERITED::writeBinaryExpression(b, parentPrecedence);