Java Reference
In-Depth Information
/
Called from Marker
102
/
procedure
rename
(
V
)
stack
←
new
stack()
108
version
←
0
109
call
rename
H
elper
(
Start
,
V
)
end
procedure
rename
H
elper
(
X
,
V
)
foreach
use
∈
X
.
getOrdinaryUses(
V
)
do
call
use
.
replaceName(
stack
.
getTOS( ) )
110
if
X
.
containsDef(
V
)
then
def
←
X
.
getDef(
V
)
call
def
.
replaceName(
version
)
version
←
version
+
111
1
call
stack
.
push(
def
)
foreach
(
X
,
Y
)
∈E
cf
do
if
Y
.
containsPhi(
V
)
then
phiUse
←
Y
.
getPhiUse(
V
,
X
)
call
phiUse
.
replaceName(
stack
.
getTOS( ) )
112
foreach
C
∈
X
.
getDomChildren()
do
call
113
rename
H
elper
(
C
,
V
)
if
X
.
containsDef(
V
)
then call
stack
.
pop()
end
114
Figure 14.67: Algorithm to rename variables.