Request for reviews (S): 7192965: assert(is_aligned_sets(size)) failed: mask is not aligned, adjacent sets
John Rose
john.r.rose at oracle.com
Wed Aug 22 23:05:54 PDT 2012
Yes; that's better. — John
On Aug 22, 2012, at 8:29 PM, Vladimir Kozlov wrote:
> 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