A Abstract Interpretation Wikipedia see also: Symbolic Execution
Abstract Syntax Tree (AST)
Wikipedia Accumulator-based Architecture Wikipedia see also: Accumulator Machine
Accumulator Machine see also: Accumulator-based Architecture
Adaptive Compilation presentation:
Dynamic Compilation and Adaptive Optimization in Virtual Machines (2006)
Matthew Arnold,Stephen Fink, David Grove, Michael Hind
Ahead-of-time Compilation (AOT Compilation)
Alias Analysis Wikipedia Automatic Memory Management see also: Memory Management, Garbage Collection
Automaton Wikipedia B Back-edge Basic Block (BB)
Wikipedia Biased-locking paper:
Eliminating Synchronization-Related Atomic Operation with Biased Locking and Bulk Rebiasing (2006)
Ken Russell, Dave Detlefs
Bimorphic Bootstrapping Wikipedia Bottom Type Bottom-up Parsing Bottom-up Rewrite System (BURS)
Wikipedia Branch Target Buffer (BTB)
Wikipedia Bytecode documentation:
Specification of the GNU Smalltalk virtual machine The Strongtalk VM bytecode format C Card Table see also: Remember Set, Garbage Collection
paper:
Remembered sets can also play cards (1993)
Antony L. Hosking, Richard L. Hudson
Central Processing Unit (CPU)
Wikipedia Class Hierarchy Analysis (CHA)
article:
Class Hierarchy Graphs, Function Devirtualization, & RTTI (2005-04-01)
Dibyendu Das
paper:
Optimization of Object-Oriented Programs using Static Class Hierarchy Analysis (1995)
Jeffrey Dean, David Grove, Craig Chambers
Code Motion Common Intermediate Language (CIL)
Wikipedia Common Language Infrastructure (CLI)
Wikipedia documentation:
ECMA-335 Common Language Infrastructure (CLI) ISO/IEC 23271:2006 Common Language Runtime (CLR)
Compare-and-swap (CAS)
see also: Load-Linked / Store-Conditional
blog:
Unsafe & CompareAndSwap (2010-07-24)
Cliff Click, Jr.
Compilation Wikipedia Component-Dependency Graph (CDG)
Constant Folding Wikipedia see also: Constant Propagation
Constant Propagation Wikipedia see also: Constant Folding
Constrained Execution Region (CER)
documentation:
Constrained Execution Regions Context-free Grammar (CFG)
Wikipedia Continuation Wikipedia Continuation-passing Style (CPS)
Wikipedia Contravariance Control Flow Wikipedia Control-flow Graph (CFG)
Wikipedia Control-flow Normalization Copy-on-write (CoW)
Wikipedia Copy Propagation Wikipedia Coroutine Wikipedia documentation:
Da Vinci Machine Project Wiki: Coroutines (2010)
Lukas Stadler
Covariance D Deferred Reference Counting (DRC)
see also: Reference Counting
Directed Acyclic Graph (DAG)
Wikipedia Dominator Wikipedia Dominator Tree Duck Typing Wikipedia Dynamic Language Runtime (DLR)
Wikipedia Dynamic Recompilation (dynarec)
Wikipedia blog post:
Introduction to Dynamic Recompilation Dynamic Typing E Eliminating Array-Bounds Checks on Demand (ABCD)
paper:
ABCD: Eliminating Array-Bounds Checks on Demand (2000)
Rastislav Bodik, Rajiv Gupta, Vivek Sarkar
Ephemeral Escape Analysis (EA)
Wikipedia presentation:
Fast Bytecodes for Funny Languages (2008)
Cliff Click, Jr.
blog post:
Escape Analysis in PyPy's JIT (2010-09-13)
The JSR292 endgame (2009)
Fredrik Öhrström
paper:
在开放世界中实现逃逸分析 (2008)
史晓华, 吴甘沙, 金茂忠, LUEH Guei-Yuan, 刘超, 王雷
Evaluating the Impact of Thread Escape Analysis on a Memory Consistency Model-aware Compiler (2005)
Chi-Leung Wong, Zehra Sura, Xing Fang, Kyungwoo Lee, Samuel P. Midki, Jaejin Lee, David Padua
Escape Analysis for Java (1999)
Jong-Deok Choi, Manish Gupta, Mauricio Serrano, Vugranam C. Sreedhar, Sam Midkiff
Evaluation Stack see also: Expression Stack, Operand Stack
Exeception Execution Engine (EE)
Execution Environment (EE)
Expression Stack see also: Evaluation Stack, Operand Stack
F Feedback-directed Optimization (FDO)
Finite Automaton (FA)
see also: Finite-state Machine
Finite-state Machine (FSM)
Wikipedia see also: Finite Automaton
Foreign Function Interface (FFI)
Wikipedia Forth Wikipedia G Garbage Collection (GC)
Wikipedia book:
ガベージコレクションのアルゴリズムと実装 (2010)
中村 成洋, 相川 光, 竹内 郁雄
ISBN-10: 4798025623
Garbage Collection: Algorithms for Automatic Dynamic Memory Management (1996)
Richard Jones, Rafael D. Lins
ISBN-10: 0471941484
Generics Wikipedia Global Value Numbering (GVN)
Wikipedia Grammar Graph-coloring Register Allocation H Handle Wikipedia Heap Wikipedia Hidden Class presentation:
First-Class Hidden Types (2006)
Joe Hallett, Eric Allen, Victor Luchangco, Sukyoung Ryu, Sam Tobin-Hochstadt
paper:
Organizing Programs Without Classes (1991)
David Ungar, Craig Chambers, Bay-Wei Chang, and Urs Hölzle
High-frequency Heap book:
Shared Source CLI Essentials, page 222
Hotpath VM see also: Trace-based Compilation
I Inheritance Wikipedia Inner Interpreter see also: Forth
Instruction Instruction-level Parallelism (ILP)
Wikipedia Instruction Set Wikipedia see also: Instruction Set Architecture
Instruction Set Architecture (ISA)
see also: Instruction Set
Instrumentation Wikipedia Interface Method Table (IMT, itable, itbl)
see also: Interface Virtual Table
paper:
Efficient Dispatch of Java Interface Methods (2001)
Bowen Alpern, Anthony Cocchi, David Grove, Derek Lieber
Efficient Implementation of Java Interfaces: Invokeinterface Considered Harmless (2001)
Bowen Alpern, Anthony Cocchi, Stephen Fink, David Grove, Derek Lieber
Interface Virtual Table (IVT, itable, itbl)
see also: Interface Method Table
paper:
SableVM: A Research Framework for the Efficient Execution of Java Bytecode (2001)
Etienne M. Gagnon, Laurie J. Hendren
Intermediate Language (IL)
see also: Intermediate Representation
Intermediate Representation (IR)
Wikipedia see also: Intermediate Language
paper:
Improving Compiler-Runtime Separation with XIR (2010)
Ben L. Titzer, Thomas Würthinger, Doug Simon, Marcelo Cintra
Interpretation Wikipedia Interprocedural Analysis (IPA)
Wikipedia Intrinsics Wikipedia J Jalapeño see also: Jikes RVM
Java Bytecode see also: Bytecode
documentation:
The JavaTM Virtual Machine Specification, Second Edition, Chapter 6 The Java Virtual Machine Instruction Set Tim Lindholm, Frank Yellin
paper:
Java intermediate bytecodes (1995)
James Gosling
Jikes RVM Wikipedia see also: Jalapeño
Just-in-time Compilation (JIT Compilation)
Wikipedia paper:
Design and Evaluation of Dynamic Optimizations for a Java Just-In-Time Compiler (2007), Toshio Suganuma
K L Large-object Heap (LOH)
book:
Shared Source CLI Essentials, page 232-234
Lexer see also: Scanner, Tokenizer
Linear-scan Register Allocation (LSRA)
paper:
Linear Scan Register Allocation for the Java HotSpot™ Client Compiler (2004)
Christian Wimmer
Linking Load-Linked / Store-Conditional (LL/SC)
Wikipedia Load-store Architecture Local Value Numbering (LVN)
Loop Loop-header Loop-invariant Code Motion (LICM)
Wikipedia Loop Nest Optimization (LNO)
Wikipedia Low-frequency Heap book:
Shared Source CLI Essentials, page 222
M Managed Runtime Environment (MRE, MRTE)
workshop:
3rd Workshop on Managed Runtime Environments, MRE'05 (2005)
Megamorphic Memory Barrier (membar)
Wikipedia see also: Memory Fence
Memory Fence see also: Memory Barrier
Memory Management Wikipedia website:
The Memory Management Reference Memory Management Unit (MMU)
Wikipedia Memory Model Metacircular Evaluator (metacircular interpreter, metacircular virtual machine)
Wikipedia 用高级语言实现时,有两种思路:
1、用高级语言的受限子集来编写,将其翻译为较低级语言后再编译生成最终的目标代码
(例:
Squeak (Smalltalk ->
Slang),
Squawk (Java -> Java),
PyPy (Python ->
RPython))
2、直接用高级语言自身来编写整个运行时环境,依赖compiler intrinsics来提供语言扩展以实现底层操作
(例:
Jikes RVM (Java),
MRP (Java),
Klein (Smalltalk),
Maxine (Java))
Metacircular Research Platform (MRP)
see also: Jikes RVM
Metaobject Protocol (MOP)
Wikipedia book:
The Art of the Metaobject Protocol (1991)
Gregor Kiczales, Jim des Rivieres, Daniel G. Bobrow
ISBN-10: 0262610744
Method Handle Method Inlining paper:
An Empirical Study of Method Inlining for a Java Just-In-Time Compiler (2002)
Toshio Suganuma, Toshiaki Yasue, Toshio Nakatani
Monomorphic Inline Cache (MIC)
Multiple Inheritance Wikipedia N Nominal Typing Wikipedia Non-local Control Flow Non-Uniform Memory Architecture (NUMA, Non-Uniform Memory Access)
Wikipedia O Object Churn presentation:
Jolt: Removing Object Churn Object Fusing see also: Object Layout
paper:
Automatic Feedback-Directed Object Fusing (2010)
Christian Wimmer, Hanspeter Mössenböck
Object Layout book:
Rubyソースコード完全解説,
第2章 オブジェクト (2002)
青木 峰郎, まつもと ゆきひろ
ISBN-10: 4844317210
paper:
Vertical Object Layout and Compression for Fixed Heaps (2007)
Ben L. Titzer, Jens Palsberg
Custom Object Layout for Garbage-Collected Languages (2006)
Gene Novark, Trevor Strohman, Emery D. Berger
Object-oriented Programming (OOP)
On-stack Replacement (OSR)
technical article:
The Java HotSpot Performance Engine: On-Stack Replacement Example (2000)
Sun Microsystems
paper:
Efficient and General On-Stack Replacement for Aggressive Program Specialization (2006)
Sunil Soman, Chandra Krintz
Opcode Operand Stack see also: Expression Stack, Evaluation Stack
Operating System Operator Operator-precedence Parsing Wikipedia Ordinary Object Pointer (Object Oriented Pointer, OOP)
see also: Tagged Pointer
documentation:
Compressed oops in the Hotspot JVM John Rose
VM Types used to map Smalltalk objects into C++ objects P Packrat Parsing Parser · Error Recovery paper:
Natural and Flexible Error Recovery for Generated Parsers (2009)
Maartje de Jonge, Emma Nilsson-Nyman, Lennart C. L. Kats, Eelco Visser
Parse Tree Parsing Expression Grammar (PEG)
Wikipedia paper:
Parsing Expression Grammars: A Recognition-Based Syntactic Foundation (2004)
Bryan Ford
Phi (Φ)
see also: Single Static Assignment Form
Pinning Wikipedia Profiling Wikipedia Pointer Point-to Analysis (pointer analysis)
Wikipedia presentation:
SSA Form w.r.t. Pointer Analysis Precision Markus Schordan
Pointer Analysis in the Presence of Dynamic Class Loading (2004)
Martin Hirzel, Amer Diwan, Michael Hind
Polymorphic Inline Cache (PIC)
Wikipedia paper:
Optimizing Dynamically-Typed Object-Oriented Programming Languages with Polymorphic Inline Caches (1991)
Urs Hölzle, Craig Chambers, and David Ungar
Polymorphism Preprocessing Wikipedia PyPy Wikipedia blog:
PyPy Status Blog Q R Random Number Generation (RNG)
Wikipedia Read Barrier Read-eval-print loop (REPL)
Wikipedia Reference Counting Wikipedia Region-based Compilation (RBC)
paper:
A region-based compilation technique for dynamic compilers (2006)
Toshio Suganuma, Toshiaki Yasue Toshio, Nakatani
A Region-Based Compilation Technique for a Java Just-In-Time Compiler (2003)
Toshio Suganuma, Toshiaki Yasue Toshio, Nakatani
Register Allocation Wikipedia Register-based Architecture see also: Stack-based Architecture
paper:
Virtual Machine Showdown: Stack Versus Registers (2005)
Yunhe Shi, David Gregg, Andrew Beatty, M. Anton Ertl
Regular Expression book:
Mastering Regular Expressions, 3rd Edition (2006)
Jeffrey E.F. Friedl
ISBN-10: 0596528124
Regular Grammar Reification Remember Set see also: Garbage Collection
paper:
Combining Card Marking with Remembered Sets: How to Save Scanning Time (1998)
Alain Azagury, Elliot K. Kolodner, Erez Petrank, Zvi Yehudai
Reverse Polish Notation (RPN)
Wikipedia Roll-forward Root Set see also: Garbage Collection
Root Set Enumeration see also: Root Set, Garbage Collection
paper:
Finding References in Java™ Stacks (1997)
Ole Agesen, David Detlefs
S Safepoint see also: Garbage Collection
documentation:
HotSpot Glossary of Terms blog post:
GC safe-point (or safepoint) and safe-region (2008-01-26)
Xiao-Feng Li
paper:
Optimization of Java Virtual Machine with Safe-Point Garbage Collection (2006)
Sergey V. Rogov, Viacheslav A. Kirillin, Victor V. Sidelnikov
GC Points in a Threaded Environment (1998)
Ole Agesen
Sampling Snapshot-at-the-beginning (SATB)
glossary: SATB Scanner see also: Lexer, Tokenizer
SECD Machine Wikipedia paper:
The tail-recursive SECD machine (1999)
John D. Ramsdell
The Mechanical Evaluation of Expressions (1964)
Peter J. Landin
Self-modifying Code Wikipedia Semaphor Shadow Stack paper:
Accurate Garbage Collection in an Uncooperative Environment (2002)
Fergus Henderson
Shared Source Common Language Infrastructure (SSCLI, Shared Source CLI)
Wikipedia book:
SSCLI 2.0 Essentials (2009)
Joel Pobar, Ted Neward, David Stutz, Geoff Shilling
Distributed Virtual Machines: Inside the Rotor CLI (2004)
Gary Nutt
ISBN-10: 0321159837
Shared Source CLI Essentials (2001)
David Stutz, Ted Neward, Geoff Shilling
ISBN-10: 059600351X
Single Inheritance Single Instruction, Multiple Data (SIMD)
Wikipedia Spinlock Squawk Wikipedia Stack Banging blog post:
Stacks with split personalities (2010-08-26)
Doug Simon
Stack-based Architecture see also: Stack Machine, Register-based Architecture
paper:
Virtual Machine Showdown: Stack Versus Registers (2005)
Yunhe Shi, David Gregg, Andrew Beatty, M. Anton Ertl
Stack Frame Stack Machine see also: Stack-based Architecture
Stack Overflow Wikipedia Stack Walker State Machine Static Single Assignment Form (SSA Form)
Wikipedia seminar:
Static Single-Assignment Form Seminar (2009)
presentation:
In and Out of SSA: A Denotational Specification Sebastian Pop
SSA Form in the Java HotSpot Client Compiler (2010)
Christian Wimmer
paper:
Constructing SSA the Easy Way (2009)
Michael Bebenita
Java Bytecode Verification via Static Single Assignment Form (2008)
Andreas Gal, Michael Franz, Christian W. Probst
Design of the Java HotSpot™ Client Compiler for Java 6 (2006)
Thomas Kotzmann, Christian Wimmer, Hanspeter Mössenböck, Thomas Rodriguez, Kenneth Russell, David Cox
Static Typing Strength reduction Wikipedia Strongly Connected Component (SCC)
Wikipedia see also: Graph Theory
Structural Typing Wikipedia Subtype Checking paper:
Fast Subtype Checking in the HotSpot JVM (2002)
Cliff Click, John Rose
Dynamic Type Checking in Jalapeño (2001)
Bowen Alpern, Anthony Cocchi, David Grove
Subtyping Symbolic Execution Wikipedia see also: Abstract Interpretation
T Tagged Pointer Wikipedia Tail Call Wikipedia Tail Call Optimization (TCO)
Wikipedia paper:
Tail Call Optimization in the Java HotSpot(TM) VM (2009)
Arnold Schwaighofer
Thread Threaded Code Wikipedia website:
Threaded Code, M. Anton Ertl
paper:
Threaded Code Variations and Optimizations (Extended Version) (2002)
M. Anton Ertl
Thread-local Allocation Buffer (TLAB)
blog post:
The Real Thing (2006-08-15)
Jon Masamitsu / Ross K.
Thunk Wikipedia Tokenizer see also: Lexer, Scanner
Top-down Parsing Top-of-stack Caching (TOS caching, stack caching, TOSCA)
paper:
Stack Caching for Interpreters (1995)
M. Anton Ertl
Trace-based Compilation video:
Inside SPUR - A Trace-Based JIT Compiler for CIL (2010)
paper:
Trace Based Compilation in Interpreter-less Execution Environments (2010)
Michael Bebenita, Mason Chang, Karthik Manivannan, Gregor Wagner, Marcelo Cintra, Bernd Mathiske, Andreas Gal, Christian Wimmer, Michael Franz
SPUR - A Trace-Based JIT Compiler for CIL (2010)
Michael Bebenita, Florian Brandner, Manuel Fahndrich, Francesco Logozzo, Wolfram Schulte, Nikolai Tillmann, Herman Venter
Trace-based Just-in-Time Type Specialization for Dynamic Languages (2009)
Andreas Gal, Brendan Eich, Mike Shaver, David Anderson, David Mandelin, Mohammad R. Haghighat, Blake Kaplan, Graydon Hoare, Boris Zbarsky, Jason Orendorff, Jesse Ruderman, Edwin Smith, Rick Reitmaier, Michael Bebenita+, Mason Chang, Michael Franz
Tracing the Meta-Level: PyPy's Tracing JIT Compiler (2009)
Carl Friedrich Bolz, Antonio Cuni
HotpathVM: An Effective JIT Compiler for Resource-constrained Devices (2006)
Andreas Gal, Christian W. Probst, Michael Franz
Trace-tree Wikipedia paper:
Incremental Dynamic Code Generation with Trace Trees (2006)
Andreas Gal, Michael Franz
Trampoline Translation Lookaside Buffer (TLB)
Wikipedia Type Checking paper:
Dynamic Type Checking in Jalapeño (2001)
Bowen Alpern, Anthony Cocchi, David Grove
Type Feedback paper:
Type Feedback for Bytecode Interpreters (2007)
Michael Haupt, Robert Hirschfeld, Marcus Denker
Type Inference Type System U Unification V Virtual Execution Engine (VEE)
Virtual Machine (VM)
Wikipedia book:
Oracle JRockit: The Definitive Guide (2010)
Marcus Hirt, Marcus Lagergren
ISBN-10: 1847198066
Virtual Machines: Versatile Platforms for Systems and Processes (2005)
Jim Smith, Ravi Nair
ISBN-10: 1558609105
Virtual Machines (2005)
Iain D. Craig
ISBN-10: 1852339691
Virtual Machine Design and Implementation C/C++ (2002)
Bill Blunden
ISBN-10: 1556229038
Virtual Memory (VM)
Wikipedia Virtual Method Dispatch (virtual function dispatch)
paper:
The Direct Cost of Virtual Function Calls in C++ (1996)
Karel Driesen, Urs Hölzle
Virtual Method Table (VMT, vtable, vtbl, virtual function table, VFT, vftable, vftbl)
Wikipedia W Write Barrier paper:
A Comparative Performance Evaluation of Write Barrier Implementations (1992)
Antony Hosking Eliot, Antony L. Hosking, J. Eliot, B. Moss, Darko Stefanović
X Y Z