Commit bfa948c2 by Nicolas Capens Committed by Nicolas Capens

Remove RemoveTree.

All AST nodes are allocated in a memory pool and get deleted by the pool. RemoveTree doesn't do anything because delete is overloaded for the nodes. BUG=18469191 Change-Id: I1dc23e894c441db2e2eb1f6e9b8f0c11b2e52b3c Reviewed-on: https://swiftshader-review.googlesource.com/1452Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Tested-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 978ddc59
......@@ -121,8 +121,6 @@ bool TCompiler::compile(const char* const shaderStrings[],
success = translate(root);
}
// Cleanup memory.
intermediate.remove(parseContext.treeRoot);
// Ensure symbol table is returned to the built-in level,
// throwing away all but the built-ins.
while (!symbolTable.atBuiltInLevel())
......
......@@ -211,7 +211,6 @@
<ClCompile Include="parseConst.cpp" />
<ClCompile Include="ParseHelper.cpp" />
<ClCompile Include="PoolAlloc.cpp" />
<ClCompile Include="RemoveTree.cpp" />
<ClCompile Include="ShaderLang.cpp" />
<ClCompile Include="SymbolTable.cpp" />
<ClCompile Include="TranslatorASM.cpp" />
......@@ -313,7 +312,6 @@
<ClInclude Include="ParseHelper.h" />
<ClInclude Include="PoolAlloc.h" />
<ClInclude Include="Pragma.h" />
<ClInclude Include="RemoveTree.h" />
<ClInclude Include="ShHandle.h" />
<ClInclude Include="SymbolTable.h" />
<ClInclude Include="TranslatorASM.h" />
......
......@@ -50,9 +50,6 @@
<ClCompile Include="PoolAlloc.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="RemoveTree.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ShaderLang.cpp">
<Filter>Source Files</Filter>
</ClCompile>
......@@ -136,9 +133,6 @@
<ClInclude Include="PoolAlloc.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="RemoveTree.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ShHandle.h">
<Filter>Header Files</Filter>
</ClInclude>
......
......@@ -13,7 +13,6 @@
#include <algorithm>
#include "compiler/localintermediate.h"
#include "compiler/RemoveTree.h"
#include "compiler/SymbolTable.h"
bool CompareStructure(const TType& leftNodeType, ConstantUnion* rightUnionArray, ConstantUnion* leftUnionArray);
......@@ -552,15 +551,6 @@ bool TIntermediate::postProcess(TIntermNode* root)
return true;
}
//
// This deletes the tree.
//
void TIntermediate::remove(TIntermNode* root)
{
if (root)
RemoveAllTreeNodes(root);
}
////////////////////////////////////////////////////////////////
//
// Member functions of the nodes used for building the tree.
......
//
// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
#include "compiler/intermediate.h"
#include "compiler/RemoveTree.h"
//
// Code to recursively delete the intermediate tree.
//
class RemoveTree : public TIntermTraverser
{
public:
RemoveTree() : TIntermTraverser(false, false, true)
{
}
protected:
void visitSymbol(TIntermSymbol*);
void visitConstantUnion(TIntermConstantUnion*);
bool visitBinary(Visit visit, TIntermBinary*);
bool visitUnary(Visit visit, TIntermUnary*);
bool visitSelection(Visit visit, TIntermSelection*);
bool visitAggregate(Visit visit, TIntermAggregate*);
};
void RemoveTree::visitSymbol(TIntermSymbol* node)
{
delete node;
}
bool RemoveTree::visitBinary(Visit visit, TIntermBinary* node)
{
delete node;
return true;
}
bool RemoveTree::visitUnary(Visit visit, TIntermUnary* node)
{
delete node;
return true;
}
bool RemoveTree::visitAggregate(Visit visit, TIntermAggregate* node)
{
delete node;
return true;
}
bool RemoveTree::visitSelection(Visit visit, TIntermSelection* node)
{
delete node;
return true;
}
void RemoveTree::visitConstantUnion(TIntermConstantUnion* node)
{
delete node;
}
//
// Entry point.
//
void RemoveAllTreeNodes(TIntermNode* root)
{
RemoveTree it;
root->traverse(&it);
}
//
// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
void RemoveAllTreeNodes(TIntermNode*);
......@@ -43,7 +43,6 @@ public:
TIntermBranch* addBranch(TOperator, TIntermTyped*, TSourceLoc);
TIntermTyped* addSwizzle(TVectorFields&, TSourceLoc);
bool postProcess(TIntermNode*);
void remove(TIntermNode*);
void outputTree(TIntermNode*);
protected:
......
......@@ -272,8 +272,6 @@
<Unit filename="../compiler/PoolAlloc.cpp" />
<Unit filename="../compiler/PoolAlloc.h" />
<Unit filename="../compiler/Pragma.h" />
<Unit filename="../compiler/RemoveTree.cpp" />
<Unit filename="../compiler/RemoveTree.h" />
<Unit filename="../compiler/ShHandle.h" />
<Unit filename="../compiler/ShaderLang.cpp" />
<Unit filename="../compiler/SymbolTable.cpp" />
......
......@@ -347,13 +347,13 @@ void GL_APIENTRY glBindRenderbuffer(GLenum target, GLuint renderbuffer)
if(context)
{
if (renderbuffer != 0 && !context->getRenderbuffer(renderbuffer))
{
if(renderbuffer != 0 && !context->getRenderbuffer(renderbuffer))
{
// [OpenGL ES 2.0.25] Section 4.4.3 page 112
// [OpenGL ES 3.0.2] Section 4.4.2 page 201
// 'renderbuffer' must be either zero or the name of an existing renderbuffer object of
// type 'renderbuffertarget', otherwise an INVALID_OPERATION error is generated.
return error(GL_INVALID_OPERATION);
return error(GL_INVALID_OPERATION);
}
context->bindRenderbuffer(renderbuffer);
......
......@@ -121,8 +121,6 @@ bool TCompiler::compile(const char* const shaderStrings[],
success = translate(root);
}
// Cleanup memory.
intermediate.remove(parseContext.treeRoot);
// Ensure symbol table is returned to the built-in level,
// throwing away all but the built-ins.
while (!symbolTable.atBuiltInLevel())
......
......@@ -123,7 +123,6 @@
<ClCompile Include="parseConst.cpp" />
<ClCompile Include="ParseHelper.cpp" />
<ClCompile Include="PoolAlloc.cpp" />
<ClCompile Include="RemoveTree.cpp" />
<ClCompile Include="ShaderLang.cpp" />
<ClCompile Include="SymbolTable.cpp" />
<ClCompile Include="TranslatorASM.cpp" />
......@@ -192,7 +191,6 @@
<ClInclude Include="ParseHelper.h" />
<ClInclude Include="PoolAlloc.h" />
<ClInclude Include="Pragma.h" />
<ClInclude Include="RemoveTree.h" />
<ClInclude Include="ShHandle.h" />
<ClInclude Include="SymbolTable.h" />
<ClInclude Include="TranslatorASM.h" />
......
......@@ -50,9 +50,6 @@
<ClCompile Include="PoolAlloc.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="RemoveTree.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ShaderLang.cpp">
<Filter>Source Files</Filter>
</ClCompile>
......@@ -136,9 +133,6 @@
<ClInclude Include="PoolAlloc.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="RemoveTree.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ShHandle.h">
<Filter>Header Files</Filter>
</ClInclude>
......
......@@ -13,7 +13,6 @@
#include <algorithm>
#include "compiler/localintermediate.h"
#include "compiler/RemoveTree.h"
#include "compiler/SymbolTable.h"
bool CompareStructure(const TType& leftNodeType, ConstantUnion* rightUnionArray, ConstantUnion* leftUnionArray);
......@@ -552,15 +551,6 @@ bool TIntermediate::postProcess(TIntermNode* root)
return true;
}
//
// This deletes the tree.
//
void TIntermediate::remove(TIntermNode* root)
{
if (root)
RemoveAllTreeNodes(root);
}
////////////////////////////////////////////////////////////////
//
// Member functions of the nodes used for building the tree.
......
//
// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
#include "compiler/intermediate.h"
#include "compiler/RemoveTree.h"
//
// Code to recursively delete the intermediate tree.
//
class RemoveTree : public TIntermTraverser
{
public:
RemoveTree() : TIntermTraverser(false, false, true)
{
}
protected:
void visitSymbol(TIntermSymbol*);
void visitConstantUnion(TIntermConstantUnion*);
bool visitBinary(Visit visit, TIntermBinary*);
bool visitUnary(Visit visit, TIntermUnary*);
bool visitSelection(Visit visit, TIntermSelection*);
bool visitAggregate(Visit visit, TIntermAggregate*);
};
void RemoveTree::visitSymbol(TIntermSymbol* node)
{
delete node;
}
bool RemoveTree::visitBinary(Visit visit, TIntermBinary* node)
{
delete node;
return true;
}
bool RemoveTree::visitUnary(Visit visit, TIntermUnary* node)
{
delete node;
return true;
}
bool RemoveTree::visitAggregate(Visit visit, TIntermAggregate* node)
{
delete node;
return true;
}
bool RemoveTree::visitSelection(Visit visit, TIntermSelection* node)
{
delete node;
return true;
}
void RemoveTree::visitConstantUnion(TIntermConstantUnion* node)
{
delete node;
}
//
// Entry point.
//
void RemoveAllTreeNodes(TIntermNode* root)
{
RemoveTree it;
root->traverse(&it);
}
//
// Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
void RemoveAllTreeNodes(TIntermNode*);
......@@ -43,7 +43,6 @@ public:
TIntermBranch* addBranch(TOperator, TIntermTyped*, TSourceLoc);
TIntermTyped* addSwizzle(TVectorFields&, TSourceLoc);
bool postProcess(TIntermNode*);
void remove(TIntermNode*);
void outputTree(TIntermNode*);
protected:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment