Rewrite JVMTI method tracing to use trampolines

Now that we have working instrumentation trampolines we can rewrite
the MethodEntry and MethodExit events to use these instead of the
interpreter. This will improve performance of code being traced in
this way by allowing the actual code to still use optimized jit code.

Test: ./test/testrunner/testrunner.py --host --runtime-option=-Xjitthreshold:0 --jit
Test: ./test/testrunner/testrunner.py --host --jit --debug --runtime-option=-Xplugin:libtracefast-trampolined.so
Test: ./test/testrunner/testrunner.py --host --jit --debug --runtime-option=-Xjitthreshold:0 --runtime-option=-Xplugin:libtracefast-trampolined.so
Test: ./test/testrunner/testrunner.py --host --debuggable --run-test-option='--with-agent libtifast.so=MethodEntry,MethodExit'
Test: ./test/testrunner/testrunner.py --host --debuggable --jit --runtime-option=-Xjitthreshold:0 --run-test-option='--with-agent libtifast.so=MethodEntry,MethodExit'
Test: adb shell am start-activity -S --attach-agent /data/local/tmp/libtifast.so=MethodEntry,MethodExit <some app>

Change-Id: I37c2ece14b1b12a79390da7d668ebbefa2966f87
6 files changed