13 |
Description: |
Description: |
14 |
|
|
15 |
---------------------------------------------------------------------- |
---------------------------------------------------------------------- |
16 |
|
Name: Lal George |
17 |
|
Date: 2002/03/11 11 22:38:53 EST |
18 |
|
Tag: george-20020311-jump-chain-elim |
19 |
|
Description: |
20 |
|
|
21 |
|
Tested the jump chain elimination on all architectures (except the |
22 |
|
hppa). This is on by default right now and is profitable for the |
23 |
|
alpha and x86, however, it may not be profitable for the sparc and ppc |
24 |
|
when compiling the compiler. |
25 |
|
|
26 |
|
The gc test will typically jump to a label at the end of the cluster, |
27 |
|
where there is another jump to an external cluster containing the actual |
28 |
|
code to invoke gc. This is to allow factoring of common gc invocation |
29 |
|
sequences. That is to say, we generate: |
30 |
|
|
31 |
|
f: |
32 |
|
testgc |
33 |
|
ja L1 % jump if above to L1 |
34 |
|
|
35 |
|
L1: |
36 |
|
jmp L2 |
37 |
|
|
38 |
|
|
39 |
|
After jump chain elimination the 'ja L1' instructions is converted to |
40 |
|
'ja L2'. On the sparc and ppc, many of the 'ja L2' instructions may end |
41 |
|
up being implemented in their long form (if L2 is far away) using: |
42 |
|
|
43 |
|
jbe L3 % jump if below or equal to L3 |
44 |
|
jmp L2 |
45 |
|
L3: |
46 |
|
... |
47 |
|
|
48 |
|
|
49 |
|
For large compilation units L2 may be far away. |
50 |
|
|
51 |
|
|
52 |
|
---------------------------------------------------------------------- |
53 |
Name: Matthias Blume |
Name: Matthias Blume |
54 |
Date: 2002/03/11 13:30:00 EST |
Date: 2002/03/11 13:30:00 EST |
55 |
Tag: blume-20020311-mltreeeval |
Tag: blume-20020311-mltreeeval |