Workshop on New Horizons in Compilers
December 21, 2005 -- Goa, India

Program Chairs: Uday Khedker and Rahul Simha
General Chairs: R. Govindarajan and Bhagi Narahari

Research Contributions

Trick - A Framework for Tracking and ReusIng Compiler's Knowledge, S.M. Sandya, S. Doval, S. Hariharan, and N.D. Das, Hewlett Packard India Software, Bangalore, India. (NHC05-Sandya.pdf)

Comprehensive Analysis of Objects for Efficient Handling of Java Objects , P.K. Kalle, IBM India Software Labs., Bangalore, India. (NHC05-Kalle.pdf)

Informal Discussion: What is the Next Big Challenge in Compiling?

Invited Contributions


Dynamic Program Analysis, Invited Talk, Sudheendra Hangal, Magic Lamp Software, India.

Compilers here! Compilers there! I see them everywhere!,  Invited Talk, Santosh Pande, Georgia Institute of Technology, Atlanta, GA.

Static Analysis for Identifying and Allocating Clusters of Immortal Objects, Invited Talk, Y.N. Srikant, Indian Institute of Science, Bangalore, India.




Informal Discussion

 

What is the Next Big Challenge in Compiling ?


The objective of this informal discussion session (for 30 - 45 minutes) is to have interesting discussion on

We do not have any specific format in mind for the discussion. We expect all participants to contribute to the discussion. Participants can use 1 or 2  slides or standup-and-speak!

 

 


Abstracts of Invited Contributions

 Dynamic Program Analysis: Applications and Challenges
                                                                                                                                                            
Abstract:

In this talk we will survey techniques and problems related to dynamic program analysis. The availability of cheap computing power makes dynamic analysis feasible for many programs, something which was not possible just a few years ago. We will describe some of the existing and promising work in this area which can be targetted for many different applications.

 Biography:                                                                                              

Sudheendra Hangal  (sudheendra@cs.stanford.edu)  is a co-founder of Magic Lamp Software. Prior to
Magic Lamp, he was at Sun Microsystems for 9 years in the U.S. and in India, where his work dealt with microprocessor and multiprocessor architecture, verification, Java processors and virtual machines.
In 2004, his work was awarded the Sun Chairman's award for Innovation, Sun's highest recognition. He has a master's degree with distinction in research from Stanford University and a bachelor's degree from IIT Delhi, both in computer science.
.


Compilers here! Compilers there! I see them everywhere!!!
                                                                                                                                                          
Abstract:                                     

Compilers had tremendous impact -- automation provided by compilers propelled the technological leap of computing. After the invention of Turing Machine in 1937 by Alan Turing, bounds of computability became clear but computing mostly remained in its infancy until early 60s when compilers provided a major boost. The techniques devised by
John Backus and his team for FORTRAN I compiler are considered one of the major inventions in the history of computing and are so foundational that most modern compiler use them. Compilers had tremendous side impact on architectures as well as evidenced by RISC machines.
                                                                                                
As we stand at the crossroads of tremendous technological advancements in processor speeds, resources, and software engineering, the big question that remains on the minds of compiler researchers is the impactwill have going forward. To answer this question, we take a look at what technology artifacts compilers bring on the table. Automation is only one of the artifacts provided by compilers; analysis, transformation and optimizations being other attributes. While the problem of automation might be nearly solved, newer problems in the areas of emerging systems tremendously benefit from other artifacts compilers offer. Compilers can now live up to the challenge of performing system wide optimizations, security and vulnerability analysis, power management on handhelds and penetrate and better manage systems layers including dynamic runtime management and adaptations. We provide concrete examples of such emerging horizons through case studies involving a variety of domains from security to performance scaling, from large scale systems to multicores. We look also examine the industrial landscape and provide an evidence of bottomline improvements due to the adaptation of such a technology.
                                                                                                
Biography:
                                                                                                
Santosh Pande (santosh@cc.gatech.edu) works on both static and dynamic sides of compiler optimizations. His interests mainly lie in embedded computing, security and multi-core platforms. He is leading the compiler research at Georgia Tech and has had key papers on these topics in LCTES, CASES, CGO, PLDI, ASPLOS and TOPLAS. He served as IEEE Distinguished Visitor from 1996-2000 and serves on the editorial board of Journal of Embedded Systems. He is on the steering committee of ACM SIGPLAN CONFERENCE ON LANGUAGES COMPILERS AND TOOLS FOR EMBEDDED SYSTEMS and is one of the founders of this conference. He is funded by NSF, DARPA and industries such as Intel and Infineon.

                                                                                                
                                                            
 Static Analysis for Identifying and Allocating Clusters of Immortal Objects
                                                                                                
                                                            
Abstract:                

As applications grow more complex, modern programming languages feature Dynamic Storage Allocation that allows the programmer to allocate and deallocate objects whose lifetimes are not bound by lexical scope. Managing application memory manually is highly error prone since it is not an easy task to determine the exact points in the program at which an object is no longer needed. The solution to this problem is to absolve the
programmer from the responsibility of managing memory and have a separate module: The Automatic Memory Manager whose function is to allocate objects and give it to the program and conduct Garbage Collection, that is a process of detecting unused memory and recycling it back for use by the program.

However Garbage Collection has its own cost and hence it becomes essential to keep this cost at a minimum. One way of achieving this is to reclaim the maximum amount of unused memory or garbage with the least number of effective collections. Several previous works have indicated that an effective collector needs to take into account certain vital object properties like lifetimes, connectivity and types apart from traceability.  This talk concentrates on one such object property - Object Clustering. The goal of effective collections is realized by identifying long living clusters of objects and allocating them in a separate Mature Object Space that is not subject to garbage collection. The idea is to avoid tracing objects that are going to live till the end. Segregating objects this way leaves the heap for objects with shorter lifetimes and now a typical collection can find more garbage than before, making collections more effective.

We describe a compile-time cluster detection algorithm that recognizes allocation sites
that contribute objects exhibiting clustering behavior in a program. The clustering
optimization has been evaluated using a concurrent generational garbage collector which  is developed for Rotor, Microsoft's Shared Source Implementation of the .NET framework.

                                                                                                

Biography:
                                                                                                

Y.N. Srikant (srikant@csa.iisc.ernet.in) received his B.E in Electronics from Bangalore University, and M.E and Ph.D in Computer Science from the Computer Science and Automation department of the Indian Institute of Science. He was the recipient of Young Scientist medal of the Indian National Science Academy in 1988. His areas of interest are compiler design and software components. He is the editor of a handbook on advanced compiler design published by CRC Press in 2002. His most recent research includes code generation for clustered architectures, compiler optimizations for power reduction in embedded systems, JIT compilation and garbage collection, efficient profiling and runtime performance improvement of programs. His major industry collaborators have been Microsoft Research, Motorola, DAE, and Satyam Computers(P) Ltd.

Srikant is currently a Professor in the Department of Computer Science and Automation at the Indian Institute of Science in Bangalore.