CGO 2026
Sat 31 January - Wed 4 February 2026 Sydney, Australia
co-located with HPCA/CGO/PPoPP/CC 2026
Mon 2 Feb 2026 11:30 - 11:50 at Bronte - Abstractions Chair(s): Antonino Tumeo

Partial evaluation allows specializing programs by substituting some of their inputs with static values and evaluating the resulting static expressions. When applied to a language interpreter, it specializes the interpreter to a fixed source program, resulting in a specialized interpreter that existing compilers can optimize and generate efficient machine code for. Although this approach achieves good peak performance in just-in-time compilers, partial evaluation is costly with respect to compilation time. In the case of bytecode interpreters, partial evaluation must process and transform each bytecode instruction. Since instructions with the same opcodes share common functionality, partial evaluation applies the same transformations repeatedly. Consequently, partial evaluation significantly increases the compilation time of just-in-time compilation.

We propose partial-evaluation templates, i.e., reusable collections of ahead-of-time-compiled graphs that are generated by a hand-written cogen approach. The templates are parametric in their static inputs, and cover common functionality in a bytecode interpreter implementation. At compile time, templates specialize themselves by substituting their static inputs, reducing themselves to a single pre-compiled graph that the compiler inlines and optimizes. This reduces the size of the intermediate representation and speeds up partial evaluation, as well as optimizations.

We integrated our approach into GraalVM, a state-of-the-art high-performance polyglot virtual machine, and GraalWasm, a bytecode-interpreter-based WebAssembly runtime. We extended the existing GraalVM compiler with a binding-time analysis that generates the templates and introduced a specializer for the templates into the existing partial evaluator. We enabled template generation for nearly all opcodes in GraalWasm, which reduced partial-evaluation time by up to 36% and warmup time by up to 17% without impacting peak performance.

Mon 2 Feb

Displayed time zone: Hobart change

11:30 - 12:50
AbstractionsMain Conference at Bronte
Chair(s): Antonino Tumeo Pacific Northwest National Laboratory
11:30
20m
Talk
Partial-Evaluation Templates: Accelerating Partial Evaluation with Pre-compiled Templates
Main Conference
Florian Huemer JKU Linz, Aleksandar Prokopec Oracle Labs, David Leopoldseder Oracle Labs, Raphael Mosaner Oracle Labs, Hanspeter Mössenböck JKU Linz
Pre-print
11:50
20m
Talk
Pyls: Enabling Python Hardware Synthesis with Dynamic Polymorphism via LCRS Encoding
Main Conference
Bolei Tong Wuhan University, Yongyan Fang Wuhan University, Wang Chaorui Wuhan University, Qingan Li Wuhan University, China, Jingling Xue UNSW Sydney, YUAN Mengting School of Computer Science, Wuhan University, Wuhan, China
Pre-print
12:10
20m
Talk
SkeleShare: Algorithmic Skeletons and Equality Saturation for Hardware Resource Sharing
Main Conference
Jonathan Van der Cruysse McGill University, Tzung-Han Juang McGill University, Shakiba Bolbolian Khah McGill University, Christophe Dubach McGill University
Pre-print Media Attached
12:30
20m
Talk
Ember: A Compiler for Embedding Operations on Decoupled Access-Execute Architectures
Main Conference
Marco Siracusa Barcelona Supercomputing Center; Universitat Politècnica de Catalunya, Olivia Hsu Stanford University, Víctor Soria-Pardos Barcelona Supercomputing Center, Joshua Randall Arm, Arnaud Grasset Arm, Eric Biscondi Arm, Douglas J. Joseph Arm, Randy Allen Barcelona Supercomputing Center, Fredrik Kjolstad Stanford University, Miquel Moreto Technical Univeristy of Catalonia, Adrià Armejach Sanosa Barcelona Supercomputing Center & Universitat Politècnica de Catalunya
Pre-print Media Attached