Thank you for these fixes, Mark, I've integrated them into http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot and they'll bubble up to the other repos (hotspot/hotspot and jdk7/hotspot) soon.

Please refer to CR 6893483 to track these fixes.

--
- Keith

Mark Wielaard wrote:
Hi,

In jni.cpp the DEFINE_NEWSCALARARRAY macro uses DT_RETURN_MARK_DECL_FOR
instead of the normal DT_RETURN_MARK_DECL. The DT_RETURN_MARK_DECL_FOR
macro should only be used for mark probes that could return a primitive
jfloat or jdouble. But DEFINE_NEWSCALARARRAY creates the functions for
New<Type>Array which return primitiveTypeArrays. This means that for
NewFloatArray and NewDoubleArray you cannot get the return value in the
return mark probe.

According to hotspot_jni.d the intention is to return these values in
those cases:

  probe NewDoubleArray__entry(void*, uintptr_t);
  probe NewDoubleArray__return(void*);
  probe NewFloatArray__entry(void*, uintptr_t);
  probe NewFloatArray__return(void*);

The attached trivial patch fixes it and makes the actual return value in
those cases available.

Tested against Systemtap, but the same should work for DTrace also.
I don't have access to a system with solaris/dtrace on it, so it would
be nice of someone who does could double check the above on such a
system.

Please let me know if I should create a bug also on
https://bugs.openjdk.java.net/ and/or if I should report/post this patch
on some other mailing-list.

Thanks,

Mark


Reply via email to