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

Morris Meyer morris.meyer at oracle.com
Thu Jun 6 21:22:57 PDT 2013


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