|
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
|
Andrew Ayers , Stuart de Jong , John Peyton , Richard Schooler, Scalable cross-module optimization, Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation, p.301-312, June 17-19, 1998, Montreal, Quebec, Canada
|
| |
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
|
Hirotaka Ogawa , Kouya Shimura , Satoshi Matsuoka , Fuyuhiko Maruyama , Yukihiko Sohda , Yasunori Kimura, OpenJIT: An Open-Ended, Reflective JIT Compiler Framework for Java, Proceedings of the 14th European Conference on Object-Oriented Programming, p.362-387, June 12-16, 2000
|
| |
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
|
Seth White , Cattell , Fisher , Hamilton, JDBC API Tutorial and Reference, Second Edition: Universal Data Access for the Java 2 Platform, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 1999
|
 |
37
|
Peng Wu , Sam Midkiff , José Moreira , Manish Gupta, Efficient support for complex numbers in Java, Proceedings of the ACM 1999 conference on Java Grande, p.109-118, June 12-14, 1999, San Francisco, California, United States
[doi> 10.1145/304065.304109]
|
CITED BY 4
|
|
|
|
|
|
|
|
Daniel Frampton , Stephen M. Blackburn , Perry Cheng , Robin J. Garner , David Grove , J. Eliot B. Moss , Sergey I. Salishev, Demystifying magic: high-level low-level programming, Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, March 11-13, 2009, Washington, DC, USA
|
|
|
Chenchen Xi , Bruno Harbulot , John R. Gurd, Aspect-oriented support for synchronization in parallel computing, Proceedings of the 1st workshop on Linking aspect technology and evolution, p.1-5, March 03-03, 2009, Charlottesville, Virginia, USA
|
|