• Corpus ID: 14736683

Runtime Code Generation with JVM and CLR

  title={Runtime Code Generation with JVM and CLR},
  author={Peter Sestoft},
Modern bytecode execution environments with optimizing just-in-time compilers, such as Sun’s Hotspot Java Virtual Machine, IBM’s Java Virtual Machine, and Microsoft’s Common Language Runtime, provide an infrastructure for generating fast code at runtime. Such runtime code generation can be used for efficient implementation of parametrized algorithms. More generally, with runtime code generation one can introduce an additional binding-time without performance loss. This permits improved… 

Figures from this paper

Jumbo: run-time code generation for Java and its applications

Jumbo is a tool for easily creating run-time code generators for Java, a compiler for a two-level version of Java, where programs can contain quoted code fragments that allow the code fragments to be combined at run- time and then executed.

On expressing different concurrency paradigms on virtual execution systems.

This PhD work wants to investigate general approaches to bridge the gap between computational paradigms, by provid-ing suitable programming abstractions not affecting the general structure of the virtualmachine, but consent control over the particular underlying architecture.

CodeBricks: code fragments as building blocks

We present a framework for code generation that allows programs to manipulate and generate code at the source level while the joining and splicing of executable code is carried out automatically at

Multi-stage Programming for Mainstream Languages

A new approach to combining MSP with imperative features that occupies a “sweet spot” in the design space in terms of expressiveness of useful MSP programs and being intuitive and easy for programmers to understand is proposed.

Common Language Runtime : a new virtual machine

An overview of current approaches precedes an insight into Microsoft CLR (Common Language Runtime), comparing it to Sun JVM (Java Virtual Machine) and to a native execution environment (IA 32).

Multi-stage and Meta-programming Support in Strongly Typed Execution Engines

This thesis develops a technique suitable to express staged computations, targeted to modern execution environments, such as the JVM and the CLR, and shows that the staging operators of MetaML can be expressed in term of the mechanism.

On Expressing Different Concurrency Paradigms on Virtual Execution Systems

  • Cristian Dittamo
  • Computer Science
    2009 33rd Annual IEEE International Computer Software and Applications Conference
  • 2009
This research introduces a set of types and meta-data to represent different parallel computations, so that programmers are freed from the task of specifying parallelism, communication, synchronization, etc.

On expressing different concurrency paradigms on virtual execution environment

This thesis studies the problem of exposing non-Von Neumann computing resources within the Virtual Machine without need for a redesign of the whole execution infrastructure and expresses parallel computations relying on extensible meta-data and reflection to encode information.

Multistage programming support in CLI

A possible CLR extension based on CodeBricks - a framework for run-time code generation which allows expressing homogenous transformations of intermediate language as a composition of methods to provide support for multi-stage languages is presented.

Mint: Java multi-stage programming using weak separability

A new approach to combining MSP with imperative features that occupies a "sweet spot" in the design space in terms of how well useful MSP applications can be expressed and how easy it is for programmers to understand is proposed.



A case for runtime code generation

This paper argues for the return of runtime code generation, compares static-code and RTCG implementations of several applications and shows that R TCG leads to performance improvements.

VCODE: a retargetable, extensible, very fast dynamic code generation system

VCODE dynamically generates code at an approximate cost of six to ten instructions per generated instruction, making it over an order of magnitude faster than the most efficient general-purpose code generation system in the literature.

C: a language for high-level, efficient, and machine-independent dynamic code generation

'C (Tick C), a superset of ANSI C that allows flexible, high-level, efficient, and machine-independent specification of dynamically generated code, is described.

Optimizing ML with run-time code generation

This work describes the design and implementation of a compiler that automatically translates ordinary programs written in a subset of ML into code that generates native code at run time, and demonstrates how compile-time specialization can reduce the cost of run-time code generation by an order of magnitude.

Implementing dynamic language features in Java using dynamic code generation

  • T. Breuel
  • Computer Science
    Proceedings 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems. TOOLS 39
  • 2001
Way in which structural conformance, automatic delegation and dynamic mix-ins can be provided efficiently and automatically in terms of Java's platform-independent binary format and dynamic loading mechanisms is described.

Fast, effective dynamic compilation

This work targets general- purpose, imperative programming languages, initially C, and strives for both fast dynamic compilation and high-quality dynamically-compiled code.

Run-time code generation and modal-ML

An overview of the language, called ML', is presented, with several examples of programs that illustrate key concepts and programming techniques, and the results of some experiments are shown, to demonstrate the benefits of this style of run-time code generation for some applications.

DynJava: Type Safe Dynamic Code Generation in Java

This work presents a Java-based strongly-typed language that gives precise types to dynamic code fragments, to guarantee the type-safety of dynamically-composed codes.

A Bytecode-Compiled, Type-safe, Multi-Stage Language

MetaOCaml is presented, a type-safe, multi-stage language, built as an extension to OCaml's byteode ompiler, and used to measure performan e for a set of small staged programs, showing that multi- stage languages are well-suited for building staged interpreters, even when the runtime ompilation times are taken into a ount.

Compiling Embedded Programs to Byte Code

This article provides a library of OCamlb yte-code combinators that is reminiscent of quasi-quotation in Lisp and of 'C and that enables just-in-time compilation of embedded programs.