RFR: 8161265: [JVMCI] EnableJVMCI should only be required when its not implied by other flags
doug.simon at oracle.com
Thu Jul 14 23:12:44 UTC 2016
> On 15 Jul 2016, at 00:46, Christian Thalinger <cthalinger at twitter.com> wrote:
>> On Jul 14, 2016, at 12:03 PM, Doug Simon <doug.simon at oracle.com> wrote:
>>> On 14 Jul 2016, at 21:12, Tom Rodriguez <tom.rodriguez at oracle.com> wrote:
>>>> Compared to the logic that was there, it’s a huge step forward! There’s so few flags and they’re very unlikely to change that I think the trade off is worth it.
>>>> If there was some easy way to get the number of flags created by JVMCI_FLAGS, we could add an assert in JVMCIGlobals::check_jvmci_flags_are_consistent against an EXPECTED_JVMCI_FLAGS constant. That would be sufficient as removal of a flag will cause a compilation error, and addition of a flag (without adjusting EXPECTED_JVMCI_FLAGS) will cause a guarantee failure. The only problem is that I don’t see how to get the number of flags created by JVMCI_FLAGS.
>>> You can do anything with macros. A macro using JVMCI_FLAGS could easily count them.
>> Yes, but then I have to define the secondary macros as parameters for application of JVMCI_FLAGS and I wanted to avoid that.
>>> Why not have a macro that generates local bools for each JVMCI flag that checks whether it has been sanity checked. Your new macros would set the appropriate flags and and a final call to JVMCI_FLAGS would assert that they’ve all been sanity checked.
>> Ok, I’ve implemented that here:
> This is super painful; even more for you than me :-)
The only thing that makes it painful is that openjdk is still on 20 year old code reviewing technology.
> With your changes what happens if you do:
> -XX:+UseJVMCICompiler -XX:-EnableJVMCI
At the moment, it ignores the latter which is probably going to surprise someone. This fixes it:
More information about the hotspot-compiler-dev