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

Unified Diff: src/sksl/SkSLCompiler.cpp

Issue 2131223002: SkSL performance improvements (Closed) Base URL: https://skia.googlesource.com/skia@master
Patch Set: minor fixes Created 4 years, 5 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
Index: src/sksl/SkSLCompiler.cpp
diff --git a/src/sksl/SkSLCompiler.cpp b/src/sksl/SkSLCompiler.cpp
index 2b4adc1026307053f38fae0480708607ad7c4f46..6c6cef4577a7b1586ba6133c080f2b5a7e0cf388 100644
--- a/src/sksl/SkSLCompiler.cpp
+++ b/src/sksl/SkSLCompiler.cpp
@@ -43,7 +43,7 @@ Compiler::Compiler()
auto symbols = std::shared_ptr<SymbolTable>(new SymbolTable(types, *this));
fIRGenerator = new IRGenerator(symbols, *this);
fTypes = types;
- #define ADD_TYPE(t) types->add(k ## t ## _Type->fName, k ## t ## _Type)
+ #define ADD_TYPE(t) types->addWithoutOwnership(k ## t ## _Type.fName, &k ## t ## _Type)
ADD_TYPE(Void);
ADD_TYPE(Float);
ADD_TYPE(Vec2);
@@ -184,20 +184,22 @@ void Compiler::internalConvertProgram(std::string text,
std::unique_ptr<Program> Compiler::convertProgram(Program::Kind kind, std::string text) {
fErrorText = "";
fErrorCount = 0;
- fIRGenerator->pushSymbolTable();
- std::vector<std::unique_ptr<ProgramElement>> result;
+ fIRGenerator->pushSymbolTable(true);
+ std::vector<std::unique_ptr<ProgramElement>> elements;
switch (kind) {
case Program::kVertex_Kind:
- this->internalConvertProgram(SKSL_VERT_INCLUDE, &result);
+ this->internalConvertProgram(SKSL_VERT_INCLUDE, &elements);
break;
case Program::kFragment_Kind:
- this->internalConvertProgram(SKSL_FRAG_INCLUDE, &result);
+ this->internalConvertProgram(SKSL_FRAG_INCLUDE, &elements);
break;
}
- this->internalConvertProgram(text, &result);
+ this->internalConvertProgram(text, &elements);
+ auto result = std::unique_ptr<Program>(new Program(kind, std::move(elements),
+ fIRGenerator->fSymbolTable));;
fIRGenerator->popSymbolTable();
this->writeErrorCount();
- return std::unique_ptr<Program>(new Program(kind, std::move(result)));;
+ return result;
}
void Compiler::error(Position position, std::string msg) {

Powered by Google App Engine
This is Rietveld 408576698