ROSE
0.11.145.272
Toggle main menu visibility
Main Page
Related Pages
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
a
c
d
g
h
i
l
m
n
s
t
u
v
Typedefs
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
x
Enumerations
a
b
c
d
e
f
i
k
l
m
o
p
s
t
v
w
x
Enumerator
a
b
c
d
e
f
h
i
l
m
n
o
p
s
t
u
v
w
y
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
Enumerator
a
b
c
d
e
f
g
i
l
m
n
o
p
r
s
t
u
v
w
x
y
Related Symbols
b
i
o
Files
File List
Examples
src
midend
astProcessing
AstSharedMemoryParallelSimpleProcessing.h
1
// Author: Gergo Barany
2
// $Id: AstSharedMemoryParallelSimpleProcessing.h,v 1.1 2008/01/08 02:56:39 dquinlan Exp $
3
4
// Class for parallelizing AstSimpleProcessing traversals; see the comment in
5
// AstSharedMemoryParallelProcessing.h for general information.
6
7
#ifndef ASTSHAREDMEMORYPARALLELSIMPLEPROCESSING_H
8
#define ASTSHAREDMEMORYPARALLELSIMPLEPROCESSING_H
9
10
#include "AstSimpleProcessing.h"
11
#include "AstSharedMemoryParallelProcessing.h"
12
13
// parallel SIMPLE processing class
14
15
// Class representing a traversal that can run in parallel with some other instances of the same type. It is basically a
16
// combined processing class with a thin synchronization layer. The user will probably never need to instantiate this
17
// class, they should use the AstSharedMemoryParallel*Processing classes instead.
18
class
AstSharedMemoryParallelizableSimpleProcessing
19
:
public
AstCombinedSimpleProcessing
,
20
private
AstSharedMemoryParallelProcessingSynchronizationBase
21
{
22
public
:
23
typedef
AstCombinedSimpleProcessing
Superclass
;
24
typedef
Superclass::TraversalType
TraversalType
;
25
typedef
Superclass::TraversalPtr
TraversalPtr
;
26
typedef
Superclass::TraversalPtrList TraversalPtrList;
27
28
AstSharedMemoryParallelizableSimpleProcessing
(
29
const
AstSharedMemoryParallelProcessingSynchronizationInfo
&,
30
const
TraversalPtrList &);
31
32
void
set_runningParallelTraversal(
bool
val);
33
34
protected
:
35
virtual
void
visit
(
SgNode
*astNode);
36
virtual
void
atTraversalEnd();
37
38
private
:
39
size_t
visitedNodes;
40
bool
runningParallelTraversal;
41
size_t
synchronizationWindowSize;
42
};
18
class
AstSharedMemoryParallelizableSimpleProcessing
{
…
};
43
44
// Class for parallel execution of a number of traversals. This is a drop-in
45
// replacement for the corresponding AstCombined*Processing class, the usage
46
// is identical except that you call traverseInParallel() instead of
47
// traverse(). (Calling traverse() is identical to AstCombined*Processing,
48
// i.e. it will not run in parallel.)
49
class
ROSE_DLL_API
AstSharedMemoryParallelSimpleProcessing
50
:
public
AstCombinedSimpleProcessing
51
{
52
public
:
53
typedef
AstCombinedSimpleProcessing
Superclass
;
54
typedef
Superclass::TraversalPtr
TraversalPtr
;
55
typedef
Superclass::TraversalPtrList TraversalPtrList;
56
57
typedef
AstSharedMemoryParallelizableSimpleProcessing
*
ParallelizableTraversalPtr
;
58
typedef
std::vector<ParallelizableTraversalPtr> ParallelizableTraversalPtrList;
59
60
AstSharedMemoryParallelSimpleProcessing
(
int
threads);
61
AstSharedMemoryParallelSimpleProcessing
(
const
TraversalPtrList &,
int
threads);
62
63
void
traverseInParallel(
SgNode
*basenode, t_traverseOrder treeTraverseOrder);
64
65
private
:
66
size_t
numberOfThreads;
67
size_t
synchronizationWindowSize;
68
};
49
class
ROSE_DLL_API
AstSharedMemoryParallelSimpleProcessing
{
…
};
69
70
// parallel PRE POST processing class
71
72
// Class representing a traversal that can run in parallel with some other instances of the same type. It is basically a
73
// combined processing class with a thin synchronization layer. The user will probably never need to instantiate this
74
// class, they should use the AstSharedMemoryParallel*Processing classes instead.
75
class
AstSharedMemoryParallelizablePrePostProcessing
76
:
public
AstCombinedPrePostProcessing
,
77
private
AstSharedMemoryParallelProcessingSynchronizationBase
78
{
79
public
:
80
typedef
AstCombinedPrePostProcessing
Superclass
;
81
typedef
Superclass::TraversalType
TraversalType
;
82
typedef
Superclass::TraversalPtr
TraversalPtr
;
83
typedef
Superclass::TraversalPtrList TraversalPtrList;
84
85
AstSharedMemoryParallelizablePrePostProcessing
(
86
const
AstSharedMemoryParallelProcessingSynchronizationInfo
&,
87
const
TraversalPtrList &);
88
89
void
set_runningParallelTraversal(
bool
val);
90
91
protected
:
92
virtual
void
preOrderVisit
(
SgNode
*astNode);
93
virtual
void
atTraversalEnd();
94
95
private
:
96
size_t
visitedNodes;
97
bool
runningParallelTraversal;
98
size_t
synchronizationWindowSize;
99
};
75
class
AstSharedMemoryParallelizablePrePostProcessing
{
…
};
100
101
// Class for parallel execution of a number of traversals. This is a drop-in
102
// replacement for the corresponding AstCombined*Processing class, the usage
103
// is identical except that you call traverseInParallel() instead of
104
// traverse(). (Calling traverse() is identical to AstCombined*Processing,
105
// i.e. it will not run in parallel.)
106
class
AstSharedMemoryParallelPrePostProcessing
107
:
public
AstCombinedPrePostProcessing
108
{
109
public
:
110
typedef
AstCombinedPrePostProcessing
Superclass
;
111
typedef
Superclass::TraversalPtr
TraversalPtr
;
112
typedef
Superclass::TraversalPtrList TraversalPtrList;
113
114
typedef
AstSharedMemoryParallelizablePrePostProcessing
*
ParallelizableTraversalPtr
;
115
typedef
std::vector<ParallelizableTraversalPtr> ParallelizableTraversalPtrList;
116
117
AstSharedMemoryParallelPrePostProcessing
(
int
threads);
118
AstSharedMemoryParallelPrePostProcessing
(
const
TraversalPtrList &,
int
threads);
119
120
void
traverseInParallel(
SgNode
*basenode);
121
122
private
:
123
size_t
numberOfThreads;
124
size_t
synchronizationWindowSize;
125
};
106
class
AstSharedMemoryParallelPrePostProcessing
{
…
};
126
127
#endif
AstCombinedPrePostProcessing
Definition
AstCombinedSimpleProcessing.h:48
AstCombinedSimpleProcessing
Definition
AstCombinedSimpleProcessing.h:14
AstPrePostProcessing
Definition
AstSimpleProcessing.h:22
AstSharedMemoryParallelPrePostProcessing
Definition
AstSharedMemoryParallelSimpleProcessing.h:108
AstSharedMemoryParallelProcessingSynchronizationBase
Definition
AstSharedMemoryParallelProcessing.h:59
AstSharedMemoryParallelSimpleProcessing
Definition
AstSharedMemoryParallelSimpleProcessing.h:51
AstSharedMemoryParallelizablePrePostProcessing
Definition
AstSharedMemoryParallelSimpleProcessing.h:78
AstSharedMemoryParallelizablePrePostProcessing::preOrderVisit
virtual void preOrderVisit(SgNode *astNode)
these methods are called at every traversed node.
AstSharedMemoryParallelizableSimpleProcessing
Definition
AstSharedMemoryParallelSimpleProcessing.h:21
AstSharedMemoryParallelizableSimpleProcessing::visit
virtual void visit(SgNode *astNode)
this method is called at every traversed node.
AstSimpleProcessing
Class for traversing the AST.
Definition
AstSimpleProcessing.h:61
SgNode
This class represents the base class for all IR nodes within Sage III.
Definition
Cxx_Grammar.h:124
AstSharedMemoryParallelProcessingSynchronizationInfo
Definition
AstSharedMemoryParallelProcessing.h:17
Generated on Sun May 18 2025 21:55:19 for ROSE by
1.9.8