ACM Home Page
Please provide us with feedback. Feedback
Inlining java native calls at runtime
Full text PdfPdf (416 KB)
Source ACM/Usenix International Conference On Virtual Execution Environments archive
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments table of contents
Chicago, IL, USA
SESSION: Dynamic compilation techniques table of contents
Pages: 121 - 131  
Year of Publication: 2005
ISBN:1-59593-047-7
Authors
Levon Stepanian  University of Toronto, Toronto, ON, Canada
Angela Demke Brown  University of Toronto, Toronto, ON, Canada
Allan Kielstra  IBM Toronto Software Lab, Toronto, ON, Canada
Gita Koblents  IBM Toronto Software Lab, Toronto, ON, Canada
Kevin Stoodley  IBM Toronto Software Lab, Toronto, ON, Canada
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
SIGOPS: ACM Special Interest Group on Operating Systems
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 13,   Downloads (12 Months): 87,   Citation Count: 4
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1064979.1064997
What is a DOI?

ABSTRACT

We introduce a strategy for inlining native functions into Java™ applications using a JIT compiler. We perform further optimizations to transform inlined callbacks into semantically equivalent lightweight operations. We show that this strategy can substantially reduce the overhead of performing JNI calls, while preserving the key safety and portability properties of the JNI. Our work leverages the ability to store statically-generated IL alongside native binaries, to facilitate native inlining at Java callsites at JIT compilation time. Preliminary results with our prototype implementation show speedups of up to 93X when inlining and callback transformation are combined.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
Jack Andrews. Interfacing Java with native code: Performance limits. ITtoolbox for Java Technologies Knowledge Base web site, Peer Publishing section. http://java.ittoolbox.com/documents/document.asp?i=780#, 2000. Also available at http://www.str.com.au/jnibench.
2
 
3
David F. Bacon. JaLA: A Java package for linear algebra. Presented at the Computer Science Division, University of California, Berkeley, 1998. IBM T.J. Watson Research Center.
 
4
Mark Baker, Bryan Carpenter, Geoffrey Fox, Sung Hoon Ko, and Xinying Li.m mpiJava: A Java interface to MPI. In Proceedings of the First UK Workshop, Java for High Performance Network Computing at EuroPar, Southampton, UK, September 1998.
 
5
 
6
Aart J. C. Bik and Dennis Gannon. A Note on Native Level 1 BLAS in Java. Concurrency: Practice and Experience, 9(11):1091--1099, 1997.
7
 
8
Per Bothner. Java/C++ integration - writing native Java methods in natural C++. http://gcc.gnu.org/java/papers/native++.html, November 1997.
9
 
10
Michal Cierniak, Marsha Eng, Neal Glew, Brian Lewis, and James Stichnoth. The Open Runtime Platform: A Flexible High-Performance Managed Runtime Environment. Intel Technology Journal, 7(1), February 2003.
 
11
 
12
Robert Fitzgerald, Todd B. Knoblock, Erik Ruf, Bjarne Steensgard, and David Tarditi. Marmot: An optimizing compiler for Java. Technical Report MSN-TR-99-33, Microsoft Inc., June 16 1999.
13
 
14
Vladimira Getov, Susan Flynn Hummel, and Sava Mintchev. High-performance parallel programming in Java: exploiting native libraries. Concurrency: Practice and Experience, 10(11--13):863--872, 1998.
15
 
16
 
17
Bjørn-Ove Heimsund. Native Numerical Interface (NNI). http://www.math.uib.no/~bjornoh/mtj/nni/, November 2004.
 
18
 
19
IBM Corporation. IBM rewrites the book on Java performance. http://www.developer.ibm.com/java/j2/j2perfpaper.html.
 
20
IBM Corporation. XL FORTRAN: Eight ways to boost performance. White Paper, 2000.
 
21
 
22
 
23
Microsoft Inc. Com: Component object model technologies. http://www.microsoft.com/com/default.mspx.
 
24
Michael Lazar Milvich. JavaCAVE: A 3D immersive environment in Java. Master's thesis, Montana State University, July 13 2004.
 
25
 
26
NewMonics Inc. Best practices for native code integration with perc. http://www.newmonics.com/perceval/native_whitepaper.shtml, February 26 2003.
 
27
Steve Northover. SWT: The Standard Widget Toolkit, Part 1: Implementation Strategy for Java™ Natives. http://www.eclipse.org/articles/Article-SWT-Design-1/SWT-Design-1.html, March 2001.
 
28
 
29
Vladimir Roubtsov. Profiling cpu usage from within a Java application. http://www.javaworld.com/javaworld/javaqa/2002-11/01-qa-1108-cpu.html, November 2002.
 
30
Todd Scallan. a corba primer. http://www.omg.org/news/whitepapers/seguecorba.pdf, June 3 2002.
 
31
Davanum Srinivas. Java tip 86: Support native rendering in jdk 1.3. http://www.javaworld.com/javaworld/javatips/jw-javatip86.html.
 
32
Standard Performance Evaluation Corporation. SPEC CPU2000 V1.2. http://www.spec.org/cpu2000.
 
33
Vaidy Sunderam and Dawid Kurzyniec. Efficient cooperation between Java and native codes -- JNI performance benchmark. In Proceedings of the 2001 International Conference on Parallel and Distributed Processing Techniques and Applications, Las Vegas, Nevada, June 25--28 2001.
 
34
Ronald Veldema. Jcc, a native Java compiler. Master's thesis, Vrije Universiteit, Amsterdam, August 1998.
 
35
Matt Welsh and David Culler. Jaguar: Enabling efficient communication and I/O in Java. Concurrency: Practice and Experience, 12(7):519--538, May 2000.
 
36
37


Collaborative Colleagues:
Levon Stepanian: colleagues
Angela Demke Brown: colleagues
Allan Kielstra: colleagues
Gita Koblents: colleagues
Kevin Stoodley: colleagues