This paper describes a new compilation technique called semantic inlining. Unlike traditional lexical inlining, which only incorporates a lexical representation of a method into the calling context, semantic inlining incorporates into the calling context semantic information about the method and its class. This is accomplished by treating selected classes and methods, which are crucial to performance, as primitive data types and primitive operations on those data types. We show that, in our numerical benchmarks which use complex numbers and multidimensional arrays, semantic inlining yields speedups of between 35 and 81, delivering performance between 65% to 90% of Fortran. The speed and effectiveness of semantic inlining make it practical for both static and dynamic compilers, and make it an effective technique for extending the primitive data types and operations of the Java programming language without altering the Java Virtual Machine specification.
By: Peng Wu, Sam Midkiff, José Moreira, Manish Gupta
Published in: RC21313 in 1998
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.
Questions about this service can be mailed to firstname.lastname@example.org .