Request for reviews (S): 7192965: assert(is_aligned_sets(size)) failed: mask is not aligned, adjacent sets
Vladimir Kozlov
vladimir.kozlov at oracle.com
Wed Aug 22 20:29:02 PDT 2012
http://cr.openjdk.java.net/~kvn/7192965/webrev.01
I looked and the same code for coloring is used for stack. Offset by chunks are
used to map to stack instead of real registers: CHUNK_SIZE = RM_SIZE*_WordBits.
We have a little dangerous place when the RA result is stored into _node_regs[]
array used by following code generation. And it is array of registers pairs. It
is fine for asm generation since only first register is used for encoding. But
for ScheduleAndBundle code use both registers from pairs to detect dependences
in blocks. And it is also fine since scheduling is done only on SPARC which have
only 64bit vectors (pairs) but I added an assert anyway.
And I did additional small cleanup to replace _node_regs[i].set_pair(hi, lo)
with set_pair(i, hi, lo) to avoid direct reference of _node_regs[].
Thanks,
Vladimir
Vladimir Kozlov wrote:
> Thank you, John
>
> John Rose wrote:
>> On Aug 22, 2012, at 3:20 PM, Vladimir Kozlov wrote:
>>
>>> http://cr.openjdk.java.net/~kvn/7192965/webrev
>>>
>>
>> Suggestion: Make the new function static, to encourage inlining and
>> keep the global name space tidier.
>
> Yes, I forgot to add "static" keyword. Fixed.
>
>> I suppose this logic applies to stack slot coloring. If so, will
>> there be similar problems with overlapping allocations of spill
>> slots? For example, stack[20..21] might be allocated for a double
>> spill, while stack[20..23] is allocated for a quad spill. I hope we
>> detect interference between those allocations by setting all four bits
>> 20..23 when building interference bit-masks.
>
> We do mark all bits for vectors and do clear to sets. But I will check
> it anyway.
>
> Thanks,
> Vladimir
>
>>
>> — John
More information about the hotspot-compiler-dev
mailing list