As instruction-level parallelism with a single thread of control approaches its performance limits, designers must find other architectural improvements to speed up program execution. The Jrpm system takes advantage of recent developments to enable a new approach to automatic parallelization. Jrpm can exploit thread-level parallelism with minimal programmer effort.