-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Improving JFR support #3720
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Improving JFR support #3720
Conversation
Hello jovanstevanovic, thanks for contributing a PR to our project! We use the Oracle Contributor Agreement to make the copyright of contributions clear. We don't have a record of you having signed this yet, based on your email address jovan -(dot)- stevanovic1 -(at)- outlook -(dot)- com. You can sign it at that link. If you think you've already signed it, please comment below and we'll check. |
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrTypeRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrStackTraceRepository.java
Outdated
Show resolved
Hide resolved
/signed |
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/UninterruptibleUtils.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrEvents.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrManager.java
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/events/ThreadStart.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/JfrStackTraceElement.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrMethodRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrMethodRepository.java
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrNativeEventWriter.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/JavaLangSubstitutions.java
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrEvents.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrEvents.java
Outdated
Show resolved
Hide resolved
LGTM, but I think @christianhaeubl would be a better choice to review here. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks to run fine now. Thanks Jovan! I think a review + approval from @christianhaeubl is also appropriate.
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadStateSerializer.java
Outdated
Show resolved
Hide resolved
jovanstevanovic has signed the Oracle Contributor Agreement (based on email address jovan -(dot)- stevanovic1 -(at)- outlook -(dot)- com) so can contribute to this repository. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for working on that. However, the current approach won't work for the following reasons:
- It is not always safe to access the heap allocated
Thread
object (see one of my comments in the source code). - At the moment, you are storing Java heap objects into native memory. This will cause crashes.
substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/JavaLangSubstitutions.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrManager.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrStackTraceRepository.java
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadLocal.java
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadLocal.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/events/ThreadStart.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/events/ThreadEnd.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/SubstrateJVM.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/JavaLangSubstitutions.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrNativeEventWriter.java
Show resolved
Hide resolved
...src/com.oracle.svm.core/src/com/oracle/svm/core/thread/JavaLangThreadGroupSubstitutions.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/JavaLangSubstitutions.java
Outdated
Show resolved
Hide resolved
.../src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/UninterruptibleThreadSafeHashtable.java
Outdated
Show resolved
Hide resolved
.../src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/UninterruptibleThreadSafeHashtable.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/UninterruptibleUtils.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/UninterruptibleUtils.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrThreadRepository.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.core/src/com/oracle/svm/core/jdk/UninterruptibleHashtable.java
Outdated
Show resolved
Hide resolved
...tratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/events/InitialEnvironmentVariable.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrNativeEventWriterData.java
Outdated
Show resolved
Hide resolved
substratevm/src/com.oracle.svm.jfr/src/com/oracle/svm/jfr/JfrNativeEventWriter.java
Outdated
Show resolved
Hide resolved
@jovanstevanovic: just to let you know, I am currently doing a few final cleanups and then I will merge the changes of this PR to master. |
Great! Thanks a lot! 💯 |
@jovanstevanovic : could you add a few test cases for this feature? I also fixed a couple bugs as part of my cleanup, so you probably want to wait until the final version is merged. |
No problem, I can add a few test cases. |
This PR tries to solve multiple problems in current JFR support.
First, it introduces support for
Thread
andThreadGroup
repositories.Before:
After:
Second, it is trying to solve a problem with a bad event signature. For example:
This is a signature of
OSInformation
on SVM. In order to make this event work, it should have the same signature as the event on JVM (below).