On Thu, 6 Feb 2025 14:31:28 GMT, Coleen Phillimore <cole...@openjdk.org> wrote:
>> The Class.getModifiers() method is implemented as a native method in >> java.lang.Class to access a field that we've calculated when creating the >> mirror. The field is final after that point. The VM doesn't need it >> anymore, so there's no real need for the jdk code to call into the VM to get >> it. This moves the field to Java and removes the intrinsic code. I >> promoted the compute_modifiers() functions to return int since that's how >> java.lang.Class uses the value. It should really be an unsigned short >> though. >> >> There's a couple of JMH benchmarks added with this change. One does show >> that for array classes for non-bootstrap class loader, this results in one >> extra load which in a long loop of just that, is observable. I don't think >> this is real life code. The other benchmarks added show no regression. >> >> Tested with tier1-8. > > Coleen Phillimore has updated the pull request incrementally with one > additional commit since the last revision: > > Make compute_modifiers return u2. Looks good. (Except a left-over `???` in a comment.) I very much like this cleanup. Migrating from Klass to Class simplifies compiler logic since there's no need to care about primitives at runtime anymore. Speaking of missing optimization opportunities (demonstrated by one microbenchmark), it looks like a corner case and can be addressed later. ------------- Marked as reviewed by vlivanov (Reviewer). PR Review: https://git.openjdk.org/jdk/pull/22652#pullrequestreview-2599983789