@requires semantics for VM flags

Jonathan Gibbons jonathan.gibbons at oracle.com
Fri Nov 9 00:56:15 UTC 2018


Regrettably, your naive intuition is incorrect.

The current semantics are that if a name is undefined or if the name is 
set to a value that is not "true" or "false", then it is not a boolean 
value, and so you will get an error.

Although I'm not an expert on VM flags, as I understand it, there is no 
easy way to tell if a flag should be a boolean value, which makes it 
problematic to default unset values to false.

-- Jon


On 11/8/18 2:41 PM, David Holmes wrote:
> Ping!
>
> Thanks,
> David
>
> On 7/11/2018 7:01 PM, David Holmes wrote:
>> Hi,
>>
>> Can you clarify the intended semantics for @requires when referencing 
>> a VM flag. It seems the current behaviour is:
>>
>> @requires foo -> foo must exist and == true
>> @requires !foo -> foo must exist and == false
>> @requires foo == true -> IF foo exists then it == true
>> @requires foo == false -> IF foo exists then it == false
>>
>> I would have naively expected:
>>
>> @requires foo
>>
>> and
>>
>> @requires foo == true
>>
>> to be semantically identical?
>>
>> Follow up question: if there are multiple @requires are they 
>> evaluated using short-circuit logic ie:
>>
>> @requires vm.bits == 64
>> @requires VMFlagOnlyFor64Bits
>>
>> will not look for the flag if running on a 32-bit system?
>>
>> Thanks,
>> David



More information about the jtreg-use mailing list