RFR (12) JDK-8218025: disable pop_frame and force_early_return caps for Graal
Igor Ignatyev
igor.ignatyev at oracle.com
Thu Jan 31 19:09:04 UTC 2019
Hi Alex,
sure I understand that, but let's say we decide to add these capabilities to ZERO or remove all ZERO-specific code. I am *not* saying we are going to do that, just speculating. In such cases, your code[1] will require more effort to figure that should be changed comparing to the almost identical code[2]. but as I said I'm fine w/ your current code.
Thanks,
-- Igor
[1]
> #ifndef ZERO
> jc.can_pop_frame = 1;
> jc.can_force_early_return = 1;
> + // Workaround for 8195635:
> + // disable pop_frame and force_early_return capabilities with Graal
> +#if INCLUDE_JVMCI
> + if (UseJVMCICompiler) {
> + jc.can_pop_frame = 0;
> + jc.can_force_early_return = 0;
> + }
> +#endif // INCLUDE_JVMCI
> #endif // !ZERO
[2]
> #ifndef ZERO
> jc.can_pop_frame = 1;
> jc.can_force_early_return = 1;
> #endif // !ZERO
> + // Workaround for 8195635:
> + // disable pop_frame and force_early_return capabilities with Graal
> +#if INCLUDE_JVMCI
> + if (UseJVMCICompiler) {
> + jc.can_pop_frame = 0;
> + jc.can_force_early_return = 0;
> + }
> +#endif // INCLUDE_JVMCI
> On Jan 31, 2019, at 10:59 AM, Alex Menkov <alexey.menkov at oracle.com> wrote:
>
>
>
> On 01/31/2019 10:52, Igor Ignatyev wrote:
>> Hi Alex,
>> you have 'if INCLUDE_JVMCI' inside 'ifndef ZERO', although we currently don't have zero builds w/ JVMCI (and I don't think such builds would make much sense), it's better not to rely on that. not a blocker from my point of view though.
>
> can_pop_frame & can_force_early_return are set only if ZERO is not defined (for zero builds the capabilities are not supported), so I added disabling logic in the same block.
>
> --alex
>
>> Thanks,
>> -- Igor
>>> On Jan 31, 2019, at 10:38 AM, Alex Menkov <alexey.menkov at oracle.com> wrote:
>>>
>>> Hi guys,
>>>
>>> thank you for the feedback.
>>>
>>> updated webrev (used the way suggested by David & Igor):
>>> http://cr.openjdk.java.net/~amenkov/tck_red_disable_caps/webrev.02/
>>>
>>> --alex
>>>
>>> On 01/30/2019 21:31, serguei.spitsyn at oracle.com wrote:
>>>> On 1/30/19 21:24, David Holmes wrote:
>>>>> On 31/01/2019 3:18 pm, dean.long at oracle.com wrote:
>>>>>> On 1/30/19 8:59 PM, serguei.spitsyn at oracle.com wrote:
>>>>>>> So, the fix needs to be more like this:
>>>>>>> + // Workaround for 8195635:
>>>>>>> + // disable pop_frame and force_early_return capabilities with Graal
>>>>>>> + #if INCLUDE_JVMCI
>>>>>>> + if (!(EnableJVMCI && UseJVMCICompiler)) {
>>>>>>> jc.can_pop_frame = 1;
>>>>>>> jc.can_force_early_return = 1;
>>>>>>> + } + #endif Not sure, if the check for EnableJVMCI can be removed above.
>>>>>>
>>>>>> We still need it to work when INCLUDE_JVMCI is not defined.
>>>>>> How about
>>>>>>
>>>>>> JVMCI_ONLY(if (UseJVMCICompiler)) {
>>>>>> ...
>>>>>> }
>>>>>>
>>>>>> or
>>>>>>
>>>>>> if (JVMCI_ONLY(UseJVMCICompiler) NOT_JVMCI(true)) {
>>>>>> ...
>>>>>> }
>>>>>
>>>>> Or just turn them on unconditionally first and turn off explicitly for JVMCI:
>>>>>
>>>>> jc.can_pop_frame = 1;
>>>>> jc.can_force_early_return = 1;
>>>>> + #if INCLUDE_JVMCI
>>>>> + // Workaround for 8195635:
>>>>> + // disable pop_frame and force_early_return capabilities with Graal
>>>>> + if (EnableJVMCI && UseJVMCICompiler) {
>>>>> + jc.can_pop_frame = 0;
>>>>> + jc.can_force_early_return = 0;
>>>>> + }
>>>>> + #endif
>>>>>
>>>> Oh, Dean is right.
>>>> We need these caps initialized even if the macro INCLUDE_JVMCI is undefined.
>>>> Then I like variant from David above.
>>>> Thanks,
>>>> Serguei
>>>>> David
>>>>>
>>>>>> dl
>>>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20190131/c15dd24d/attachment.html>
More information about the serviceability-dev
mailing list