In FPs, store pointers for all child slots, even nullptr

This simplifies things like ConstantOutputForConstantInput and
invokeChild. It also removes the need for child indices: generated
FPs now directly refer to their children by slot number.

Change-Id: I69bbb042d5d72d21b999256f969c467702d0774d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/302436
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
diff --git a/src/gpu/effects/generated/GrComposeLerpEffect.cpp b/src/gpu/effects/generated/GrComposeLerpEffect.cpp
index 3a4a323..905b406 100644
--- a/src/gpu/effects/generated/GrComposeLerpEffect.cpp
+++ b/src/gpu/effects/generated/GrComposeLerpEffect.cpp
@@ -27,23 +27,13 @@
         (void)weight;
         weightVar = args.fUniformHandler->addUniform(&_outer, kFragment_GrShaderFlag,
                                                      kFloat_GrSLType, "weight");
-        SkString _sample290;
-        if (_outer.child1_index >= 0) {
-            _sample290 = this->invokeChild(_outer.child1_index, args);
-        } else {
-            _sample290 = "half4(1)";
-        }
-        SkString _sample358;
-        if (_outer.child2_index >= 0) {
-            _sample358 = this->invokeChild(_outer.child2_index, args);
-        } else {
-            _sample358 = "half4(1)";
-        }
+        SkString _sample290 = this->invokeChild(0, args);
+        SkString _sample358 = this->invokeChild(1, args);
         fragBuilder->codeAppendf(
                 R"SkSL(%s = mix(%s ? %s : %s, %s ? %s : %s, half(%s));
 )SkSL",
-                args.fOutputColor, _outer.child1_index >= 0 ? "true" : "false", _sample290.c_str(),
-                args.fInputColor, _outer.child2_index >= 0 ? "true" : "false", _sample358.c_str(),
+                args.fOutputColor, _outer.childProcessor(0) ? "true" : "false", _sample290.c_str(),
+                args.fInputColor, _outer.childProcessor(1) ? "true" : "false", _sample358.c_str(),
                 args.fInputColor, args.fUniformHandler->getUniformCStr(weightVar));
     }
 
@@ -68,12 +58,7 @@
 }
 GrComposeLerpEffect::GrComposeLerpEffect(const GrComposeLerpEffect& src)
         : INHERITED(kGrComposeLerpEffect_ClassID, src.optimizationFlags()), weight(src.weight) {
-    if (src.child1_index >= 0) {
-        child1_index = this->cloneAndRegisterChildProcessor(src.childProcessor(src.child1_index));
-    }
-    if (src.child2_index >= 0) {
-        child2_index = this->cloneAndRegisterChildProcessor(src.childProcessor(src.child2_index));
-    }
+    this->cloneAndRegisterAllChildProcessors(src);
 }
 std::unique_ptr<GrFragmentProcessor> GrComposeLerpEffect::clone() const {
     return std::unique_ptr<GrFragmentProcessor>(new GrComposeLerpEffect(*this));