~ubuntu-branches/debian/squeeze/erlang/squeeze

« back to all changes in this revision

Viewing changes to lib/hipe/TODO

  • Committer: Bazaar Package Importer
  • Author(s): Erlang Packagers, Sergei Golovan
  • Date: 2006-12-03 17:07:44 UTC
  • mfrom: (2.1.11 feisty)
  • Revision ID: james.westby@ubuntu.com-20061203170744-rghjwupacqlzs6kv
Tags: 1:11.b.2-4
[ Sergei Golovan ]
Fixed erlang-base and erlang-base-hipe prerm scripts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
Bugfix
2
2
======
3
 
 Find elusive bug2.
4
 
 "Correct" error messages
5
3
 P->current (Fix observable behaviour?)
6
 
 New callingconvention for guardbifs (Recognize at load time).
 
4
 New calling convention for guard bifs (Recognize at load time).
7
5
 Long branches:
8
6
   timer:tc(hipe,c,[megaco_text_parser,[{timeout,infinity}]]).
9
7
   {4801210531,
10
8
     {error,[{problem,too_long_branch},{address,3381732},{length,-828622}]}}
11
9
 
12
 
 
13
 
 
14
10
Performance
15
11
===========
16
12
 
17
 
 Core Erlang -> Icode
18
13
 Better handling of multimove in regalloc.
19
14
 Faster closure creation. (Can static fields be preallocated?)
20
 
 FP - arithmetic.
21
 
 Inline BS-instructions.
22
 
 Type info in Icode.
23
15
 Expand pseudo-ops before scheduler (SPARC)
24
16
 Stack maps for SPARC + Make frames in Sparc not in RTL.
25
17
 Coalesce spill locations.
27
19
Feature
28
20
=======
29
21
 
30
 
 module_info() -> beam/native. 
31
22
 Stack traces from stack maps.
32
23
 
33
24
Cleanup
34
25
=======
35
26
 
36
27
 Speedup renaming and other bottlenecks in the compiler.
37
 
 Only calls with fail lable should end basic blocks.
 
28
 Only calls with fail label should end basic blocks.
38
29
 Remove fail-entry-points from RTL (sparc/x86). 
39
 
 Cleanup hipe_*_reigsters.erl and interface/rules with regalloc.
 
30
 Cleanup hipe_*_registers.erl and interface/rules with regalloc.
40
31
 HiPE in bootstrap.
41
32
 Cleanup and merge loaders. (Better handling of data.)  
42
 
 Reexamine switching code.
 
33
 Re-examine switching code.
43
34
 
44
35
Extensions
45
36
==========
51
42
 Incremental GC.
52
43
 
53
44
 
54
 
Other
55
 
=====
56
 
 
57
 
 Unified heap paper.
58
 
 BMs from Telia promotor, AXD301.
59
 
 KT2 projects.
60
 
 Release party HiPE 1.0
61
 
 DVP 4th-year project in Erlang.
 
45
Old list compiled by Thomas Lindgren (needs cleaning up)
 
46
========================================================
 
47
 
 
48
<h1>Experimental implementations</h1>
 
49
<h2>RTL</h2>
 
50
<UL>
 
51
  <LI> Algebraiska f�renklingar av uttryck (ex. reducera integer multiply,
 
52
      ta bort addition med 0, etc)
 
53
  <LI> Partial redundancy elimination 
 
54
</UL>
 
55
 
 
56
<h1>Unimplemented optimizations</h1>
 
57
 
 
58
<H2>Erlang/Core source-level-optimizations</H2>
 
59
<UL>
 
60
  <LI> "Context compilation"
 
61
  <LI> CDR-kodning
 
62
  <LI> List reuse
 
63
  <LI> Compilation by transformation
 
64
</UL>
 
65
 
 
66
<H2>Icode-optimizations</H2>
 
67
<UL>
 
68
  <LI> Convertion to loops from recursive programs
 
69
  <LI> Dominatorer
 
70
      (<a href="./thomasl/icode/dominators.erl">l�ngsamma</a>, snabba)
 
71
</UL>
 
72
 
 
73
<H2>RTL-optimizations</H2>
 
74
<UL>
 
75
  <LI> Common subexpression elimination
 
76
  <LI> Ta bort redundanta tester globalt (ex. upprepade typtester)
 
77
  <LI> Ordna om hopp (ex. byt ordning p� nil/cons-tester)
 
78
  <LI> Goto eliminering (= expandera uncond. jumps m. k�nd m�ltavla)
 
79
  <LI> Save/restore-placering: datafl�desanalys, interaktion m. catch-frames
 
80
  <LI> Loop optimeringar
 
81
      <UL>
 
82
        <LI> Dominatorer (se dominatorer f�r icode)
 
83
        <LI> Unrolling
 
84
        <LI> Invariant expression removal
 
85
      </UL>
 
86
  <LI> Partial redundancy elimination by lazy code motion
 
87
  <LI> Partially dead code
 
88
</UL>
 
89
 
 
90
<H2>Sparc-optimizations</H2>
 
91
<UL>
 
92
  <LI> Global register allocation
 
93
      <UL>
 
94
        <LI> <a href="./thomasl/regalloc/regalloc.erl">
 
95
            Pessimistisk f�rgning</a>
 
96
        <LI> Optimistisk f�rgning (kan sl�s p� i samma fil som pessimistisk
 
97
            f�rgning ovan).
 
98
        <LI> B�ttre ber�kning av spillkostnader
 
99
        <LI> Renaming
 
100
        <LI> Callee-saves register
 
101
        <LI> Live-range splitting
 
102
      </UL>
 
103
  <LI> Instruktionsschedulering
 
104
      <UL>
 
105
        <LI> Branch delay slot scheduling
 
106
        <LI> Load delay slot scheduling
 
107
        <LI> Spekulativa loads med lduwa
 
108
        <LI> Kollapsa serier av tester med bpr
 
109
        <LI> Begr�nsad predicated execution med movcc
 
110
      </UL>
 
111
  <LI> Kodlayout: statiska f�ruts�gelser om riktning av hopp,
 
112
      layout, s�tta branch prediction bits i hopp, etc.
 
113
  <LI> Prefetching av kod med SparcV9:s bpn.
 
114
</UL>
 
115
 
 
116
<H2>Other optimizations</H2>
 
117
 
 
118
Profile driven optimizations.
 
119
<UL>
 
120
  <LI> Utplacering av r�knare i CFG:er (per block, per b�ge)
 
121
  <LI> Statiska metoder att uppskatta exekveringstid (inom och mellan proc.)
 
122
  <LI> Feedback till program, annotering av CFG:er med profileringsinfo.
 
123
  <LI> Kodlayout med profileringsinfo.
 
124
  <LI> Skapa superblock
 
125
  <LI> Skapa hyperblock
 
126
  <LI> Plocka fram heta block, skapa en 'het' sub-CFG som hoppar
 
127
      till den kalla huvud-CFG:n vid behov.
 
128
  <LI> Optimering av het CFG, kodf�rflyttning fr�n het till kall CFG.
 
129
  <LI> Spawn-time specialization
 
130
</UL>