Request for review: 8000968: NPG UseCompressedKlassPointers asserts withObjectAlignmentInBytes for > 32G Compressed Oops

harold seigel harold.seigel at oracle.com
Tue Jan 22 14:38:47 PST 2013


Hi Vladimir,

Can you explain why the HeapBaseMinAddress check is needed, if the heap 
is going to be based at (KlassEncodingMetaspaceMax - 
Universe::class_metaspace_size()) ?

Is it because the CDS region is based at HeapBaseMinAddress?

Thanks, Harold

On 1/22/2013 3:04 PM, Vladimir Kozlov wrote:
> Harold,
>
> New condition is not accurate since it does not take into account 
> HeapBaseMinAddress. You need additional condition:
>
> +     } else if (UseCompressedKlassPointers && (mode != 
> HeapBasedNarrowOop) &&
> +         (Universe::class_metaspace_size() + HeapBaseMinAddress <= 
> KlassEncodingMetaspaceMax) &&
> +         (KlassEncodingMetaspaceMax + heap_size - 
> Universe::class_metaspace_size() <= OopEncodingHeapMax)) {
>
> Vladimir
>
> On 1/22/13 10:22 AM, harold seigel wrote:
>> HI Roland,
>>
>> Thanks again for your comments.  I incorporated them in this new webrev:
>> http://cr.openjdk.java.net/~hseigel/bug_8000968_4/
>> <http://cr.openjdk.java.net/%7Ehseigel/bug_8000968_4/>
>>
>> The only changes from the previous webrev are to module universe.cpp.
>>
>> Could you take another look when you have a chance?
>>
>> Thanks, Harold
>>
>> On 1/18/2013 6:44 AM, Roland Westrelin wrote:
>>> Hi Harold,
>>>
>>>> I updated the webrev at
>>>> http://cr.openjdk.java.net/~hseigel/bug_8000968_3/<http://cr.openjdk.java.net/%7Ehseigel/bug_8000968_3/> 
>>>>
>>>> with this change.
>>>   696     } else if ((total_size<= OopEncodingHeapMax)&&  (mode !=
>>> HeapBasedNarrowOop)&&
>>>   697         (!UseCompressedKlassPointers ||
>>>   698           (((OopEncodingHeapMax - heap_size) +
>>> Universe::class_metaspace_size())<= KlassEncodingMetaspaceMax))) {
>>>
>>> heap_size<  OopEncodingHeapMax - KlassEncodingMetaspaceMax is
>>> possible, right? Then compressed klass pointers are off with this
>>> code. So wouldn't you also want to check for:
>>>
>>> KlassEncodingMetaspaceMax + heap_size -
>>> Universe::class_metaspace_size()<= OopEncodingHeapMax
>>>
>>> ?
>>>
>>> and then use KlassEncodingMetaspaceMax -
>>> Universe::class_metaspace_size() as base.
>>>
>>> Roland.


More information about the hotspot-runtime-dev mailing list