summaryrefslogtreecommitdiff
path: root/ext/B/ramblings/reg.alloc
blob: 7fd69f2ebe53449c880dc2522202aa28e718908d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
while ($i--) {
    foo();
}
exit

    PP code			if i an int register	if i an int but not a
				(i.e. can't be		register (i.e. can be
				implicitly invalidated)	implicitly invalidated)
    nextstate
    enterloop

							
  loop:
    gvsv  GV (0xe6078) *i	validates i		validates i
    postdec			invalidates $i		invalidates $i
    and if_false goto out;
				i valid; $i invalid	i valid; $i invalid

				i valid; $i invalid	i valid; $i invalid
    nextstate
    pushmark
    gv  GV (0xe600c) *foo
    entersub						validates $i; invals i

    unstack
    goto loop:

				i valid; $i invalid
  out:
    leaveloop
    nextstate
    exit