Collect timestamps directly from the JITed code

JIT code was calling out to C++ code to collect timestamps at method
entry / exit when precise profiling is enabled. Calling out to C++ would
involve setting up a frame and spilling registers which can be
expensive. This CL generates code to collect timestamps and update the
per-thread buffer so we can collect timestamps directly from JITed code.

This also updates the test to check timestamps are monotonic.

Bug: 259258187
Test: art/test.py

Change-Id: I07148d4e2605bbb0e75062e0f4642a7f7847bebb
16 files changed