RFR(XS): 8015437: SPARC cbcond offset value out of range

Vladimir Kozlov vladimir.kozlov at oracle.com
Thu Jun 6 22:24:35 PDT 2013


Morris, added such functionality ("4,000 lines of changes ...") but I 
asked to do it as separate changes.

Vladimir

On 6/6/13 9:40 PM, Christian Thalinger wrote:
> Looks good but we should think about some machinery that helps us finding the next one.  Because there will be one.
>
> -- Chris
>
> On Jun 6, 2013, at 9:22 PM, Morris Meyer <morris.meyer at oracle.com> wrote:
>
>> Folks,
>>
>> Could I get a review for this issue?  The problem exists that we optimistically assign forward branch labels and re-patch later. When we emit a cbcond instruction - we check if the Label out of bounds.  If it is already bound the check is fine - if not bound a zero offset is emitted and the label is patched later
>>
>> With Vladimir Kozlov's urgings I put about 4,000 lines of changes to add __FILE__ and __LINE__ parameters to every assembler.bind() call and checked the return of every patched branch to find out the line and location of the offending bind.  The bind distance from NewInstanceStub::emit_code() in c1_CodeStubs_sparc.cpp was to far from __ allocate_object macro assembler call in LIRGenerator::new_instance which uses the short branch in MacroAssembler::eden_allocate()
>>
>> This change has been through JPRT.
>>
>>         --morris
>>
>> WEBREV - http://cr.openjdk.java.net/~morris/JDK-8015437.01
>> JBS - https://jbs.oracle.com/bugs/browse/JDK-8015437
>>
>>
>


More information about the hotspot-compiler-dev mailing list