Tue, 06 Jan 2015 21:39:09 +0100
Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.
1 //
2 // Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
7 #include "compiler/depgraph/DependencyGraph.h"
9 // These methods do a breadth-first traversal through the graph and mark visited nodes.
11 void TGraphNode::traverse(TDependencyGraphTraverser* graphTraverser)
12 {
13 graphTraverser->markVisited(this);
14 }
16 void TGraphParentNode::traverse(TDependencyGraphTraverser* graphTraverser)
17 {
18 TGraphNode::traverse(graphTraverser);
20 graphTraverser->incrementDepth();
22 // Visit the parent node's children.
23 for (TGraphNodeSet::const_iterator iter = mDependentNodes.begin();
24 iter != mDependentNodes.end();
25 ++iter)
26 {
27 TGraphNode* node = *iter;
28 if (!graphTraverser->isVisited(node))
29 node->traverse(graphTraverser);
30 }
32 graphTraverser->decrementDepth();
33 }
35 void TGraphArgument::traverse(TDependencyGraphTraverser* graphTraverser)
36 {
37 graphTraverser->visitArgument(this);
38 TGraphParentNode::traverse(graphTraverser);
39 }
41 void TGraphFunctionCall::traverse(TDependencyGraphTraverser* graphTraverser)
42 {
43 graphTraverser->visitFunctionCall(this);
44 TGraphParentNode::traverse(graphTraverser);
45 }
47 void TGraphSymbol::traverse(TDependencyGraphTraverser* graphTraverser)
48 {
49 graphTraverser->visitSymbol(this);
50 TGraphParentNode::traverse(graphTraverser);
51 }
53 void TGraphSelection::traverse(TDependencyGraphTraverser* graphTraverser)
54 {
55 graphTraverser->visitSelection(this);
56 TGraphNode::traverse(graphTraverser);
57 }
59 void TGraphLoop::traverse(TDependencyGraphTraverser* graphTraverser)
60 {
61 graphTraverser->visitLoop(this);
62 TGraphNode::traverse(graphTraverser);
63 }
65 void TGraphLogicalOp::traverse(TDependencyGraphTraverser* graphTraverser)
66 {
67 graphTraverser->visitLogicalOp(this);
68 TGraphNode::traverse(graphTraverser);
69 }