Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Garbage collection in an uncooperative environment
Software—Practice & Experience
Garbage collection: algorithms for automatic dynamic memory management
Garbage collection: algorithms for automatic dynamic memory management
Marmot: an optimizing compiler for Java
Software—Practice & Experience
Quicksilver: a quasi-static compiler for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Comparison of Compacting Algorithms for Garbage Collection
ACM Transactions on Programming Languages and Systems (TOPLAS)
A LISP garbage-collector for virtual-memory computer systems
Communications of the ACM
Java Virtual Machine Specification
Java Virtual Machine Specification
The Java Language Specification
The Java Language Specification
Overview of excelsior JET, a high performance alternative to java virtual machines
WOSP '02 Proceedings of the 3rd international workshop on Software and performance
Harissa: A Hybrid Approach to Java Execution
IEEE Software
TurboJ, a Java Bytecode-to-Native Compiler
LCTES '98 Proceedings of the ACM SIGPLAN Workshop on Languages, Compilers, and Tools for Embedded Systems
A brief history of just-in-time
ACM Computing Surveys (CSUR)
Java-through-C Compilation: An Enabling Technology for Java in Embedded Systems
Proceedings of the conference on Design, automation and test in Europe - Volume 3
Toba: java for applications a way ahead of time (WAT) compiler
COOTS'97 Proceedings of the 3rd conference on USENIX Conference on Object-Oriented Technologies (COOTS) - Volume 3
Precise garbage collection for C
Proceedings of the 2009 international symposium on Memory management
Support of Android lab modules for embedded system curriculum
WESE '10 Proceedings of the 2010 Workshop on Embedded Systems Education
Hybrid compilation and optimization for java-based digital TV platforms
ACM Transactions on Embedded Computing Systems (TECS) - Special Section ESFH'12, ESTIMedia'11 and Regular Papers
Hi-index | 0.00 |
A Java bytecode-to-C ahead-of-time compiler (AOTC) can improve the performance of a Java virtual machine (JVM) by translating bytecode into C code, which is then compiled into machine code via an existing C compiler. Although AOTC is effective in embedded Java systems, a bytecode-to-C AOTC could not easily employ precise garbage collection (GC) due to a difficulty in making a GC map, which keeps information on where each root live object is located when GC occurs. This is one of the reasons why all previous JVMs using a bytecode-to-C AOTC employed conservative GC, which can lead to poorer GC performance with more frequent memory shortage, especially in embedded systems where memory is tight.In this paper, we propose a way of allowing precise GC in a bytecode-to-C AOTC by generating additional C code which collects GC map-equivalent information at runtime. In order to reduce this runtime overhead, we also propose two optimization techniques which remove unnecessary C code. Our experimental results on Sun's CVM indicate that we can support precise GC for bytecode-to-C AOTC with a relatively low overhead.