Hash :
dd0d3426
Author :
Date :
2014-03-26T14:01:56
Use a heap-memory traversal to free compiler resources. The stack-memory traversal is prone to stack overflow. See the WebGL conformance test long-expressions-should-not-crash. BUG=angle:584 Change-Id: I02d72bc2e4101b7141d609c50303403ea8298e60 Reviewed-on: https://chromium-review.googlesource.com/191930 Reviewed-by: Zhenyao Mo <zmo@chromium.org> Reviewed-by: Nicolas Capens <nicolascapens@chromium.org> Tested-by: Jamie Madill <jmadill@chromium.org>
//
// 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/translator/intermediate.h"
#include "compiler/translator/RemoveTree.h"
//
// Code to delete the intermediate tree.
//
void RemoveAllTreeNodes(TIntermNode* root)
{
std::queue<TIntermNode*> nodeQueue;
nodeQueue.push(root);
while (!nodeQueue.empty())
{
TIntermNode *node = nodeQueue.front();
nodeQueue.pop();
node->enqueueChildren(&nodeQueue);
delete node;
}
}