******************************************************************************** ******************************************************************************** ******************************************************************************** To: spin-comp-archive@cs Subject: Why Apps Fail Date: Wed, 13 May 1998 12:05:23 PDT From: Brian Grant This discussion group is to record why DyC cannot by applied to particular applications. We're particularly interested when the reason is some functionality that is lacking in the system. ******************************************************************************** ******************************************************************************** ******************************************************************************** To: spin-comp-archive@cs Subject: decompress Date: Wed, 13 May 1998 12:08:16 PDT From: Brian Grant Pardo's decompression optimization relied on a custom dispatch mechanism that we cannot easily duplicate in DyC. In the table of compression codes, he stored the address of the specialized code to handle each compression code. The best we could do is to develop a custom hashless dispatch that just jumped through a directly indexed table. That would work precisely in the case of a single checked promoted value of either 8 or 16 bits. --Brian ******************************************************************************** ******************************************************************************** ******************************************************************************** To: eggers@thistle.cs.washington.edu cc: spin-comp-archive@cs Subject: Robot Date: Fri, 17 Jul 1998 13:40:36 PDT From: Brian Grant Robot isn't an attractive candidate for dynamic compilation. We can't eliminate the expensive operations (float multiplies and trig. functions). Also, the program is already written in a fairly special-purpose way, just poorly. It doesn't need dynamic compilation. It does need the following static optimizations: 1) interprocedural loop-invariant code hoisting 2) interprocedural data specialization 3) full loop unrolling for simple loops with small iteration counts (like 10) In this case, #1 and #2 could easily be done by hand. #3 would probably done by the compiler if the constant loop bounds were changed from global variables to macros. Our system could do #3, but not really the other two. --Brian