Don't perform subroutine calls in ForceEarlyReturn targets

The ForceEarlyReturn tests use a subroutine call to
synchronizer.sendMessage to tell the debugger that the thread is going
to loop waiting for the frame to be returned. The problem is that the
debugger will suspend and ForceEarlyReturn the target thread blindly
and if the debugger is fast enough/the debuggee is slow enough it
might suspend and try to return the debuggee before the debuggee has
returned from the sendMessage function. This causes the test to fail
due to the test functions never returning.

To solve this problem we changed the debuggee to instead use a
volatile write to tell another thread (in the same process) that it is
ready for the debugger to ForceEarlyReturn it. This other thread then
notifies the debugger. In this way regardless of how long the debuggee
is delayed the debugger will always attempt to return the correct
frame.

Test: ./art/tools/run-jdwp-tests.sh --mode=jvm
Test: ./art/tools/run-libjdwp-tests.sh --mode=host
Bug: 130028055
Change-Id: I429c0188e6cc1b4986dd9a8d50e89f8e00caf3b3
1 file changed