In this patch, the following changes are done
- Enable emission of VP data in ValueProfData format using common API (now made available through InstrProfData.inc)
- Removed the update of TotalValueDataSize
- this reduced the number of atomtic operations (slow with high latency) executed during profile update
- allows MIPS arch to enable value profiling -- which lacks the syn fetch-add support
- Using TotalValueDataSize also has a fundamental problem that it always penalize the last function that gets profile collected -- if new values were added after buffer is created, last function's existing vp data (can be hot) may get dropped.
- With the new approach in the patch, only the new values for any function are dropped (if any).
- Added an extensive value profiling mock test. The test declares > 100 dummy caller functions and synthesize up to 128 value profile sites for each caller. Up to 8 values are added to each value site using profiler runtime VP interfaces.