Tail call elimination and data representation for functional languages on the Java virtual machine

Author(s):  
Magnus Madsen ◽  
Ramin Zarifi ◽  
Ondřej Lhoták
2014 ◽  
Vol 24 (6) ◽  
pp. 612-612
Author(s):  
Michael Sperber ◽  
Lennart Augustsson

Compiling functional languages to the existing variety of platforms calls for sophisticated implementations of run-time systems. This special issue focuses on this often-neglected aspect. We volunteered to compile this special issue in 2012 and immediately started soliciting papers. The original call for papers covered native-code platforms as well as run-time systems originally designed for non-functional languages such as the Java Virtual Machine or the .NET Common Language Runtime.


2014 ◽  
Vol 11 (1) ◽  
pp. 47-68 ◽  
Author(s):  
Patricia Conde ◽  
Francisco Ortin

Java 7 has included the new invokedynamic opcode in the Java virtual machine. This new instruction allows the user to define method linkage at runtime. Once the link is established, the virtual machine performs its common optimizations, providing better runtime performance than reflection. However, this feature has not been offered at the abstraction level of the Java programming language. Since the functionality of the new opcode is not provided as a library, the existing languages in the Java platform can only use it at the assembly level. For this reason, we have developed the JINDY library that offers invokedynamic to any programming language in the Java platform. JINDY supports three modes of use, establishing a trade-off between runtime performance and flexibility. A runtime performance and memory consumption evaluation is presented. We analyze the efficiency of JINDY compared to reflection, the MethodHandle class in Java 7 and the Dynalink library. The memory and performance costs compared to the invokedynamic opcode are also measured.


Sign in / Sign up

Export Citation Format

Share Document