We apply speculative multithreading to sequential Java programs in software to achieve speedup on existing multiprocessors. A common speculation library supports both Java bytecode interpreter and JIT compiler implementations. Initial profiling results indicate three main optimizations: adaptive return value prediction, online fork heuristics, and in-order nested method level speculation. Categories and Subject Descriptors D.4.1 [Operating Systems]: Process Management—Concurrency; Threads; D.2.8 [Software Engineering]: Metrics—Complexity measures; Performance measures; D.2.13 [Software Engineering]: Reusable Software—Reusable libraries; D.3.2 [Programming Languages]: Language Classifications—Objectoriented languages; D.3.3 [Programming Languages]: Language Constructs and Features—Procedures, functions, and subroutines; D.3.4 [Programming Languages]: Processors—Code generation; Compilers; Interpreters; Optimization; Run-time environments General Terms Design, Experimentat...
Christopher J. F. Pickett