#include "src/sksl/analysis/SkSLSpecialization.h"
#include "include/private/base/SkAssert.h"
#include "include/private/base/SkSpan_impl.h"
#include "src/sksl/SkSLAnalysis.h"
#include "src/sksl/SkSLDefines.h"
#include "src/sksl/analysis/SkSLProgramVisitor.h"
#include "src/sksl/ir/SkSLExpression.h"
#include "src/sksl/ir/SkSLFieldAccess.h"
#include "src/sksl/ir/SkSLFunctionCall.h"
#include "src/sksl/ir/SkSLFunctionDeclaration.h"
#include "src/sksl/ir/SkSLFunctionDefinition.h"
#include "src/sksl/ir/SkSLProgram.h"
#include "src/sksl/ir/SkSLProgramElement.h"
#include "src/sksl/ir/SkSLVariable.h"
#include "src/sksl/ir/SkSLVariableReference.h"
#include <algorithm>
#include <memory>
usingnamespaceskia_private;
namespace SkSL::Analysis {
static bool parameter_mappings_are_equal(const SpecializedParameters& left,
const SpecializedParameters& right) { … }
void FindFunctionsToSpecialize(const Program& program,
SpecializationInfo* info,
const ParameterMatchesFn& parameterMatchesFn) { … }
SpecializationIndex FindSpecializationIndexForCall(const FunctionCall& call,
const SpecializationInfo& info,
SpecializationIndex parentSpecializationIndex) { … }
SkBitSet FindSpecializedParametersForFunction(const FunctionDeclaration& func,
const SpecializationInfo& info) { … }
void GetParameterMappingsForFunction(const FunctionDeclaration& func,
const SpecializationInfo& info,
SpecializationIndex specializationIndex,
const ParameterMappingCallback& callback) { … }
}