Fast Online Pointer Analysis

Many optimizations need information about points-to relationships to be effective. Pointer analysis infers such information from program code. Unfortunately, some common programming language features, such as dynamic linking, reflection, and foreign function interfaces, make pointer analyses difficult. For example, prior pointer analyses for the Java language either ignore these features or are overly conservative. To deal with dynamic linking, pointer analysis must run online, as the program is executing.

This paper presents the first non-trivial online pointer analysis. This paper identifies all problems in performing Andersen's pointer analysis for the full Java language, presents solutions to those problems, and uses a full implementation of the solutions in Jikes RVM for validation and performance evaluation. Our analysis is fast: on average over our benchmark suite, if the analysis recomputes points-to results upon each program change, most analysis pauses take under 0.1 seconds.

By: Martin Hirzel; Daniel von Dincklage; Amer Diwan; Michael Hind

Published in: RC23638 in 2005

LIMITED DISTRIBUTION NOTICE:

This Research Report is available. This report has been submitted for publication outside of IBM and will probably be copyrighted if accepted for publication. It has been issued as a Research Report for early dissemination of its contents. In view of the transfer of copyright to the outside publisher, its distribution outside of IBM prior to publication should be limited to peer communications and specific requests. After outside publication, requests should be filled only by reprints or legally obtained copies of the article (e.g., payment of royalties). I have read and understand this notice and am a member of the scientific community outside or inside of IBM seeking a single copy only.

rc23638.pdf

Questions about this service can be mailed to reports@us.ibm.com .