RFR(XS): 8015437: SPARC cbcond offset value out of range
Vladimir Kozlov
vladimir.kozlov at oracle.com
Thu Jun 6 21:35:35 PDT 2013
Morris,
Why you used br(always, false, pt, slow_case) instead of ba(slow_case)?
Which is the same but simpler and it was specially added to avoid
messing with parameters of br() instruction.
Thanks,
Vladimir
On 6/6/13 9:22 PM, Morris Meyer 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