Efficient support for complex numbers in Java
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Adaptive optimization in the Jalapeño JVM
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Platform independent dynamic Java virtual machine analysis: the Java Grande Forum Benchmark suite
Proceedings of the 2001 joint ACM-ISCOPE conference on Java Grande
Java Virtual Machine Specification
Java Virtual Machine Specification
Java Language Specification, Second Edition: The Java Series
Java Language Specification, Second Edition: The Java Series
Bigram analysis of Java bytecode sequences
PPPJ '02/IRE '02 Proceedings of the inaugural conference on the Principles and Practice of programming, 2002 and Proceedings of the second workshop on Intermediate representation engineering for virtual machines, 2002
Object-Oriented Multi-Methods in Cecil
ECOOP '92 Proceedings of the European Conference on Object-Oriented Programming
Parameterized Types and Java
Analysis of the Java Class File Format
Analysis of the Java Class File Format
Multicodes: optimizing virtual machines using bytecode sequences
OOPSLA '03 Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Overview of the IBM Java just-in-time compiler
IBM Systems Journal
A quantitative analysis of Java bytecode sequences
Proceedings of the 3rd international symposium on Principles and practice of programming in Java
Multi-dispatch in the Java virtual machine: design and implementation
COOTS'01 Proceedings of the 6th conference on USENIX Conference on Object-Oriented Technologies and Systems - Volume 6
Advancements in multicode optimization
OOPSLA '04 Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
An evaluation of secialized Java bytecodes
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Hi-index | 0.00 |
Java is implemented by 201 bytecodes that serve the same purpose as assembler instructions while providing object-file platform independence. A collection of core bytecodes provide critical and independent functionality while a collection of specialized bytecodes is meant to improve on the performance of some of the core bytecodes. This study identifies 67 specialized bytecodes and shows the impact of their removal by despecializing them into semantically equivalent core bytecodes. A detailed analysis of the effects of despecialization on execution efficiency and class-file size was performed. The effects on the SPEC JVM98 Benchmark Suite were analyzed for various subsets of the despecialized bytecodes using three distinct Java virtual machines. When all 67 bytecodes were despecialized, the average slow down across all benchmarks and virtual machines was 2.1 percent, while the single largest performance loss for any one benchmark was 12.7 percent. In some cases, a speedup was observed. An analysis of the impact of despecialization on class file size was also conducted. It was found that the average class file size increased by approximately 6 percent when 67 specialized bytecodes were removed. This study shows that many of the specialized bytecodes currently in use offer little benefit to either execution efficiency or class file size. Thus, they can be considered as candidates for removal to make room for new bytecodes that will allow for the efficient implementation of new language features, offer significant performance gains or meaningfully reduce class file sizes. Furthermore, these results should be considered by designers who are developing new instruction sets for both virtual machines and hardware processors.