Skip to content

[Agent] Allow applying advices to the native methods #716

Description

@bsideup

Unlike in Open J9, Hotspot was allowing to instrument native methods (including the JVM's) by renaming + marking private/final until Java 13.

Here is an example ASM code in BlockHound:
https://github.com/reactor/BlockHound/blob/312fc5f30370640f69b3c1d6659f1e9eabf32738/agent/src/main/java/reactor/blockhound/NativeWrappingClassFileTransformer.java#L96

We run it before ByteBuddy, so that ByteBuddy sees the methods as non-native and applies advices to them. It also forces us to customize the DescriptionStrategy (see #713) which isn't great for performance.

It would be nice tho if this functionality is added directly to ByteBuddy, so that we can avoid running ASM code before BB.

I understand that it does not work on Open J9, plus requires -XX:+AllowRedefinitionToAddDeleteMethods flag on Hotspot 13+, so it can be an optional mode. Yet, given that the majority of Java versions are distributed between 6-8, this mode will remain helpful for at least a few years :)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions