RFR: 8269592: [JVMCI] Optimize c2v_iterateFrames
Tom Rodriguez
never at openjdk.java.net
Thu Jul 8 19:18:49 UTC 2021
On Tue, 29 Jun 2021 17:26:58 GMT, Andreas Woess <aw at openjdk.org> wrote:
> Several smaller optimizations and cleanups to JVMCI's iterateFrames:
> * Restructure the iterateFrames method for better readability and maintenance, with some parts extracted to helper functions.
> * Use vframeStream as the iterator for faster iteration in case not every vframe matches the method filter, so we can avoid creating javaVFrames for skipped vframes. We use vframeStream::asJavaVFrame() to get the current javaVFrame.
> * Extended vframeStream::asJavaVFrame() to also work with native frames, so that it works with all java frames returned by vframeStream. This way, native compiledVFrames will just work and do not need extra handling.
> Test coverage is provided via a newly added iterateFrames jtreg test that includes a JNI call on the stack.
> * Added two trivial getters to vframeStream: vframe_id() and decode_offset().
> These are used together with compiledVFrame::at_scope() to avoid going through vframeStream::asJavaVFrame() and recreating the scope objects for every matched inlined vframe of a compiled frame which would be more expensive than using javaVFrame::sender() (that shares the scope object pool).
> * Only resolve the callback interface method once per iterateFrames call.
> * Only resolve the Method* of the ResolvedJavaMethods to be matched once per iterateFrames call.
> * Only allocate localIsVirtual array if at least one local is virtual (the Java part already expects this).
> * Use matched ResolvedJavaMethod instances instead of going through JVMCIEnv::get_jvmci_method, if possible.
Looks good.
-------------
Marked as reviewed by never (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/4625
More information about the hotspot-dev
mailing list