Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java 2010
DOI: 10.1145/1852761.1852763
|View full text |Cite
|
Sign up to set email alerts
|

Optimizing invokedynamic

Abstract: In order to support the needs of non-Java languages, the JSR 292 Expert Group has designed a new bytecode "invokedynamic" which allows JVM bytecodes to contain call sites with pluggable, user-defined behavior. The bytecode is accompanied by a new data type called a "method handle" that reifies the pluggable behavior, in the form of a functional value. The authors have been building the JSR 292 Reference Implementation on top of Oracle's HotSpot JVM. This paper describes their implementation tactics. Interestin… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
8
0
2

Year Published

2011
2011
2016
2016

Publication Types

Select...
4
2
1

Relationship

0
7

Authors

Journals

citations
Cited by 17 publications
(10 citation statements)
references
References 4 publications
(2 reference statements)
0
8
0
2
Order By: Relevance
“…Golo is a simple dynamically-typed programming language for the Java Virtual Machine (JVM) that has been designed to leverage the capabilities of the Java 7 invokedynamic bytecode instruction and java.lang.invoke API (JSR 292) (Ponge, Le Mouël, and Stouls 2013) (Thalinger and Rose 2010). Coupled with a minimal runtime that directly uses the Java SE API, Golo is an interesting language for rapid prototyping, polyglot application embedding, research (e.g., runtime extensions, language prototyping) and teaching (e.g., programming, dynamic language runtime implementation) (Maingret et al 2015) .…”
Section: Discussionmentioning
confidence: 99%
“…Golo is a simple dynamically-typed programming language for the Java Virtual Machine (JVM) that has been designed to leverage the capabilities of the Java 7 invokedynamic bytecode instruction and java.lang.invoke API (JSR 292) (Ponge, Le Mouël, and Stouls 2013) (Thalinger and Rose 2010). Coupled with a minimal runtime that directly uses the Java SE API, Golo is an interesting language for rapid prototyping, polyglot application embedding, research (e.g., runtime extensions, language prototyping) and teaching (e.g., programming, dynamic language runtime implementation) (Maingret et al 2015) .…”
Section: Discussionmentioning
confidence: 99%
“…While memory protection is relevant for field accesses, the overhead of customized semantics of method invocation mechanisms is also significant. This could be solved with the INVOKEDYNAMIC infrastructure [26] included in current JVMs. Furthermore, tracing compilers [6] are known to enable the elimination of expensive guarding checks to ensure semantics effectively.…”
Section: Discussion and Performance Perspectivesmentioning
confidence: 99%
“…The situation changed with the JSR 292 and the release of Java 7, introducing a new opcode called invokedynamic and a support API [17,18].…”
Section: Related Workmentioning
confidence: 99%
“…The JVM itself provides a proven adaptive, managed and efficient runtime environment for a wide range of programming languages. While the JVM had an initial bias that favored statically-compiled languages, the interest in dynamically-typed languages prompted developments as part of JSR 292 to better support such languages starting from Java 7 [17,18]. The runtime of existing dynamic languages are evolving to take advantage of this, leading to both better performance and simplification of runtime implementation [3, 4, 6].…”
Section: Introductionmentioning
confidence: 99%