Request for review (#4) 7174978: NPG: Fix bactrace builder for class redefinition

Coleen Phillimore coleen.phillimore at oracle.com
Thu Jan 17 06:06:15 PST 2013


On 01/17/2013 06:27 AM, David Holmes wrote:
> On 17/01/2013 6:48 AM, Coleen Phillimore wrote:
>> On 1/16/2013 2:19 AM, David Holmes wrote:
>>>>> src/share/vm/oops/constantPool.hpp
>>>>>
>>>>> ! void add_version(int version) {
>>>>> ! if (version == -1) {
>>>>> ! _saved._version = version; // keep overflow
>>>>> ! } else {
>>>>> ! int new_version = version++;
>>>>> ! _saved._version = version == INT_MAX ? -1 : version;
>>>>> ! }
>>>>> ! }
>>>>>
>>>>> new_version is unused here but I think you meant to do
>>>>>
>>>>> _saved._version = new_version == INT_MAX ? -1 : version;
>>>>>
>>>>
>>>> This was a pre-code-review cleanup... I didn't mean to assign 
>>>> version++
>>>> into new_version. The second line stays the same. I retested this fix.
>>>
>>> I'm unclear what the final form of this code now looks like.
>>
>> void add_version(int version) {
>> if (version == -1) {
>> _saved._version = version; // keep overflow
>> } else {
>> version++;
>> _saved._version = (version == INT_MAX) ? -1 : version;
>> }
>> }
>
> But now you "overflow" too early - version==INT_MAX is not an 
> overflow. If you check the preincrement value against INT_MAX then you 
> have an overflow on the increment - hence I assume you intended
>
>  int new_version = version++;
>  _saved._version = new_version == INT_MAX ? -1 : version;

Actually, I want to save version++ in saved_version.  I want to add one 
to the version passed in.    The version of the constant pool passed in 
is from the old version of the constant pool.

Should I rename this function increment_version(version)?  That would 
probably be more clear. Maybe I should check for overflow by letting it 
go negative, like we do in the symbol.hpp _refcount.

void increment_and_save_version(int version) {
   _saved._version = (version >=0) ? version++ : version;  // keep 
overflowed value
}

Thanks,
Coleen
>
> Thanks,
> David



More information about the hotspot-runtime-dev mailing list