Improve JNI tracing even further.

This adds return values and general support for the primitive types.

For example:

  JNI: libcore.io.Posix.writeBytes -> GetIntField((JNIEnv*)0x9ebf9a8, 0x3e00005, java.io.FileDescriptor.descriptor)
  JNI:                             <- GetIntField returned 13

Although we still decode jclass, when a jclass is a return value we also
include the pointer. This makes it easier to follow call sequences like
this:

  JNI: dalvik.system.NativeStart.main -> FindClass((JNIEnv*)0x9e3e458, "java/text/Bidi$Run")
  JNI:                                <- FindClass returned java.lang.Class<java.text.Bidi$Run> (0x100001)
  JNI: dalvik.system.NativeStart.main -> NewGlobalRef((JNIEnv*)0x9e3e458, 0x100001)
  JNI:                                <- NewGlobalRef returned 0x100002

Here, the argument to NewGlobalRef is clearly the jclass local reference.

(Cherry-pick of 047cab15c4cb967568b25b616f02ed0f9a169430 from dalvik-dev.)

Change-Id: Ie8997b11a9cc9a0bc8f11ab3fc43f4892921316b
1 file changed