Profile guided optimizations can improve application performance significantly by collecting relevant runtime data and exploiting it to generate highly optimized code. However, gathering accurate runtime execution profiling information is typically a very expensive operation. In this talk, we will discuss the design choices we made for the value profiling mechanism newly implemented in the Eclipse OpenJ9 runtime profiling infrastructure. In a nutshell, the Eclipse OpenJ9 value profiler aims to efficiently collect the most frequently observed values at specific program points in the compiled code as well as the frequency of execution of those program points. Implemented entirely in the compiler's intermediate representation, this platform independent infrastructure serves as a light weight profiler that can collect data from a running application with minimal impact on performance. Furthermore, it can be patched to enable or disable data collection which extends its usability to large number of compiled methods.