ComputingComputer EngineeringComputer ScienceCompilersProgramming LanguagesSystems ProgrammingCode GenerationCompiler ConstructionControl-flow AnalysisIntermediate RepresentationRuntime SystemsSystem CallsBytecode RepresentationBytecode Virtual MachinesCall SemanticsCompiler DesignCompiler SupportMachine Code GenerationMachine Code OptimizationSystem Call Semantics
The Java Virtual Machine (JVM) has been widely adopted in part because of its classfile format, which is portable, compact, modular, verifiable, and reasonably easy to work with. However, it was designed for just one language---Java---and so when it is used to express programs in other source languages, there are often which retard both development and execution. The most salient pain points show up at a familiar place, the method call site.To generalize method calls on the JVM, the JSR 292 Expert Group has designed a new invokedynamic instruction that provides user-defined call site semantics. In the chosen design, invokedynamic serves as a hinge-point between two coexisting kinds of intermediate language: bytecode containing dynamic call sites, and combinator graphs specifying call targets. A dynamic compiler can traverse both representations simultaneously, producing optimized machine code which is the seamless union of both kinds of input. As a final twist, the user-defined linkage of a call site may change, allowing the code to adapt as the application evolves over time. The result is a system balancing the conciseness of bytecode with the dynamic flexibility of function pointers.
11
The art of the metaobject protocol
Choice Reviews Online · 1992 · 1K citations
Efficient implementation of the smalltalk-80 system
L. Peter Deutsch, Allan M. Schiffman · 1984 · 589 citations
An Overview of the Scala Programming Language
Martin Odersky, Philippe Altherr, Vincent Cremet et al. · Infoscience (Ecole Polytechnique Fédérale de Lausanne) · 2004 · 511 citations · Full text
Suriya Subramanian, Michael Hicks, Kathryn S. McKinley · 2009 · 172 citations
Technical Overview of the Common Language Runtime
Erik Meijer, John Gough · 2001 · 98 citations