diff options
author | Erlang/OTP <[email protected]> | 2009-11-20 14:54:40 +0000 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2009-11-20 14:54:40 +0000 |
commit | 84adefa331c4159d432d22840663c38f155cd4c1 (patch) | |
tree | bff9a9c66adda4df2106dfd0e5c053ab182a12bd /lib/hipe/TODO | |
download | otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.gz otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.bz2 otp-84adefa331c4159d432d22840663c38f155cd4c1.zip |
The R13B03 release.OTP_R13B03
Diffstat (limited to 'lib/hipe/TODO')
-rw-r--r-- | lib/hipe/TODO | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/lib/hipe/TODO b/lib/hipe/TODO new file mode 100644 index 0000000000..f166472df6 --- /dev/null +++ b/lib/hipe/TODO @@ -0,0 +1,130 @@ +Bugfix +====== + P->current (Fix observable behaviour?) + New calling convention for guard bifs (Recognize at load time). + Long branches: + timer:tc(hipe,c,[megaco_text_parser,[{timeout,infinity}]]). + {4801210531, + {error,[{problem,too_long_branch},{address,3381732},{length,-828622}]}} + +Performance +=========== + + Better handling of multimove in regalloc. + Faster closure creation. (Can static fields be preallocated?) + Expand pseudo-ops before scheduler (SPARC) + Stack maps for SPARC + Make frames in Sparc not in RTL. + Coalesce spill locations. + +Feature +======= + + Stack traces from stack maps. + +Cleanup +======= + + Speedup renaming and other bottlenecks in the compiler. + Only calls with fail label should end basic blocks. + Remove fail-entry-points from RTL (sparc/x86). + Cleanup hipe_*_registers.erl and interface/rules with regalloc. + HiPE in bootstrap. + Cleanup and merge loaders. (Better handling of data.) + Re-examine switching code. + +Extensions +========== + + Design strategy for finding all processes holding a certain closure. + Design strategy for native code unloading. + mbufs: In guards -> throw away, in bifs -> trigger special GC. (fix for native.) + Unified heap + process optimization (+ PE). + Incremental GC. + + +Old list compiled by Thomas Lindgren (needs cleaning up) +======================================================== + +<h1>Experimental implementations</h1> +<h2>RTL</h2> +<UL> + <LI> Algebraiska f�renklingar av uttryck (ex. reducera integer multiply, + ta bort addition med 0, etc) + <LI> Partial redundancy elimination +</UL> + +<h1>Unimplemented optimizations</h1> + +<H2>Erlang/Core source-level-optimizations</H2> +<UL> + <LI> "Context compilation" + <LI> CDR-kodning + <LI> List reuse + <LI> Compilation by transformation +</UL> + +<H2>Icode-optimizations</H2> +<UL> + <LI> Convertion to loops from recursive programs + <LI> Dominatorer + (<a href="./thomasl/icode/dominators.erl">l�ngsamma</a>, snabba) +</UL> + +<H2>RTL-optimizations</H2> +<UL> + <LI> Common subexpression elimination + <LI> Ta bort redundanta tester globalt (ex. upprepade typtester) + <LI> Ordna om hopp (ex. byt ordning p� nil/cons-tester) + <LI> Goto eliminering (= expandera uncond. jumps m. k�nd m�ltavla) + <LI> Save/restore-placering: datafl�desanalys, interaktion m. catch-frames + <LI> Loop optimeringar + <UL> + <LI> Dominatorer (se dominatorer f�r icode) + <LI> Unrolling + <LI> Invariant expression removal + </UL> + <LI> Partial redundancy elimination by lazy code motion + <LI> Partially dead code +</UL> + +<H2>Sparc-optimizations</H2> +<UL> + <LI> Global register allocation + <UL> + <LI> <a href="./thomasl/regalloc/regalloc.erl"> + Pessimistisk f�rgning</a> + <LI> Optimistisk f�rgning (kan sl�s p� i samma fil som pessimistisk + f�rgning ovan). + <LI> B�ttre ber�kning av spillkostnader + <LI> Renaming + <LI> Callee-saves register + <LI> Live-range splitting + </UL> + <LI> Instruktionsschedulering + <UL> + <LI> Branch delay slot scheduling + <LI> Load delay slot scheduling + <LI> Spekulativa loads med lduwa + <LI> Kollapsa serier av tester med bpr + <LI> Begr�nsad predicated execution med movcc + </UL> + <LI> Kodlayout: statiska f�ruts�gelser om riktning av hopp, + layout, s�tta branch prediction bits i hopp, etc. + <LI> Prefetching av kod med SparcV9:s bpn. +</UL> + +<H2>Other optimizations</H2> + +Profile driven optimizations. +<UL> + <LI> Utplacering av r�knare i CFG:er (per block, per b�ge) + <LI> Statiska metoder att uppskatta exekveringstid (inom och mellan proc.) + <LI> Feedback till program, annotering av CFG:er med profileringsinfo. + <LI> Kodlayout med profileringsinfo. + <LI> Skapa superblock + <LI> Skapa hyperblock + <LI> Plocka fram heta block, skapa en 'het' sub-CFG som hoppar + till den kalla huvud-CFG:n vid behov. + <LI> Optimering av het CFG, kodf�rflyttning fr�n het till kall CFG. + <LI> Spawn-time specialization +</UL> |