This paper presents Vacuum Packing, a new approach to
profile-based program optimization. Instead of using traditional
aggregate or summarized execution profile weights, this approach uses
a transparent hardware profiler to automatically detect execution
phases and record branch profile information for each new phase. The
code extraction algorithm then produces code packages that are
specially formed for their corresponding phases. The algorithm
compensates for the incomplete and often incoherent branch profile
information that arises due to the nature of hardware profilers. The
technique avoids unnecessary code replication by focusing on hot code,
making efficient connections between the original code and the new
code, linking code packages at select points to facilitate phase
transitions, and providing a platform for efficient optimization. We
demonstrate that using a concise set of profile information from a
hardware profiler, we can generate code packages, specialized for each
phase of execution, that capture more than 80% of the average total
program execution. We further show that the approach is very
effective in extracting code regions that capture the phasing behavior
of programs, that the code size increase is moderate, and that the
code regions benefit from sample optimizations.