Regis Xu (JIRA) wrote:
[ https://issues.apache.org/jira/browse/HARMONY-6257?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]Regis Xu updated HARMONY-6257: ------------------------------ Attachment: HARMONY-6257.diff[classlib][luni] - Optimize OSMemory.get/setByteArray ----------------------------------------------------- Key: HARMONY-6257 URL: https://issues.apache.org/jira/browse/HARMONY-6257 Project: Harmony Issue Type: Improvement Components: Classlib Affects Versions: 5.0M10 Reporter: Regis Xu Attachments: HARMONY-6257.diff in getByteArray, use SetByteArrayRegion to avoid memory copy from java to native in setByteArray, Get/ReleasePrimitiveArrayCritical instead of GetByteArrayElements/ReleaseByteArrayElements to avoid memory copy.
I just found in OSMemory.c, get/setByteArray do some unnecessary memory copies between Java and native.
In getByteArray, GetByteArrayElements copy data from java to native, and then ReleaseByteArrayElements do the reverse, I think using SetByteArrayRegion is enough.
In setByteArray, I found JNI calls GetPrimitiveArrayCritical/ReleasePrimitiveArrayCritical could get a pointer to the primitive array without any copy, but seems they has some side effects (on GC?), I don't have much confidence that they can apply here. I hope some one can give some advices about this patch. Thanks.
-- Best Regards, Regis.
