From: SourceForge.net <no...@so...> - 2006-05-25 08:17:31
|
Bugs item #1494784, was opened at 2006-05-25 09:17 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=712768&aid=1494784&group_id=128805 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: optimizing compiler Group: new Status: Open Resolution: None Priority: 5 Submitted By: Ian Rogers (captain5050) Assigned to: Nobody/Anonymous (nobody) Summary: Intermitent build failure: Intel when patching short branchs Initial Comment: I've been noticing intermintent build failures on Intel for a while. It normally forces me to just restart the compilation. The problem seems to come when compiling method header code - the fact it is intermitent is a mystery to me. Anyway, below is a stack trace of the error: java.lang.RuntimeException: vm internal error at: at com.ibm.JikesRVM.VM._assertionFailure(VM.java:577) at com.ibm.JikesRVM.VM._assert(VM.java:556) at com.ibm.JikesRVM.VM._assert(VM.java:536) at com.ibm.JikesRVM.VM_Assembler.patchShortBranch(VM_Assembler.java:977) at com.ibm.JikesRVM.VM_ForwardReference$ShortBranch.resolve(VM_ForwardReference.java:131) at com.ibm.JikesRVM.VM_ForwardReference.resolveMatching(VM_ForwardReference.java:90) at com.ibm.JikesRVM.VM_Assembler.resolveForwardReferences(VM_Assembler.java:900) at com.ibm.JikesRVM.opt.OPT_Assembler.doInst(OPT_Assembler.java:10567) at com.ibm.JikesRVM.opt.OPT_AssemblerBase.generateCode(OPT_AssemblerBase.java:702) at com.ibm.JikesRVM.opt.OPT_ConvertMIRtoMC$AssemblerDriver.perform(OPT_ConvertMIRtoMC.java:97) at com.ibm.JikesRVM.opt.OPT_CompilerPhase.performPhase(OPT_CompilerPhase.java:129) at com.ibm.JikesRVM.opt.OPT_OptimizationPlanAtomicElement.perform(OPT_OptimizationPlanAtomicElement.java:80) at com.ibm.JikesRVM.opt.OPT_OptimizationPlanCompositeElement.perform(OPT_OptimizationPlanCompositeElement.java:141) at com.ibm.JikesRVM.opt.OPT_CompilationPlan.execute(OPT_CompilationPlan.java:105) at com.ibm.JikesRVM.opt.OPT_Compiler.compile(OPT_Compiler.java:222) at com.ibm.JikesRVM.VM_BootImageCompiler.compile(VM_BootImageCompiler.java:94) at com.ibm.JikesRVM.classloader.VM_NormalMethod.genCode(VM_NormalMethod.java:174) at com.ibm.JikesRVM.classloader.VM_Method.compile(VM_Method.java:408) at com.ibm.JikesRVM.classloader.VM_Method.getCurrentEntryCodeArray(VM_Method.java:390) at com.ibm.JikesRVM.classloader.VM_Class.instantiate(VM_Class.java:1346) at BootImageWriter.createBootImageObjects(BootImageWriter.java:953) at BootImageWriter.main(BootImageWriter.java:516) com.ibm.JikesRVM.opt.OPT_OptimizingCompilerException: ERROR produced in module:OPT_Compiler failure during compilation of org.mmtk.vm.ScanThread.printMethodHeader ()V at com.ibm.JikesRVM.opt.OPT_Compiler.fail(OPT_Compiler.java:310) at com.ibm.JikesRVM.opt.OPT_Compiler.compile(OPT_Compiler.java:235) at com.ibm.JikesRVM.VM_BootImageCompiler.compile(VM_BootImageCompiler.java:94) at com.ibm.JikesRVM.classloader.VM_NormalMethod.genCode(VM_NormalMethod.java:174) at com.ibm.JikesRVM.classloader.VM_Method.compile(VM_Method.java:408) at com.ibm.JikesRVM.classloader.VM_Method.getCurrentEntryCodeArray(VM_Method.java:390) at com.ibm.JikesRVM.classloader.VM_Class.instantiate(VM_Class.java:1346) at BootImageWriter.createBootImageObjects(BootImageWriter.java:953) at BootImageWriter.main(BootImageWriter.java:516) the method that's causing the build problem is org.mmtk.vm.ScanThread.printMethodHeader()V and I've attached its final IR (2708 lines long!). Ian ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=712768&aid=1494784&group_id=128805 |
From: Eliot M. <mo...@cs...> - 2006-05-26 03:42:20
|
It would appear that somewhere the compiler is producing a short branch to a location that is sometimes too far away. You need to determine which brnach it is and where that branch is generated ... and probably change it to use a longer form. -- EM |
From: David P G. <gr...@us...> - 2006-05-28 01:19:35
|
My guess is that we have an estimation bug in the IA32 opt assembler. We try to use short forward branches by estimating how many bytes each instruction is going to take and using the short form if we think it's going to fit. If we were a little bit off (perhaps due to a constant that is just on the edge of 1 byte vs 4 bytes whose value changes from build to build depending on how the bootimage is written out) that might explain it. Using the short form when possible is an important optimization, so we don't want to completely disable it, we'll need to get some more information when the asset trips: which branch we are at, what the target is, and what the estimates are for all the instructions between. We should then be able to see which instruction is over its estimate and fix the estimation code. --dave jik...@li... wrote on 05/25/2006 11:02:54 PM: > It would appear that somewhere the compiler is producing a short branch to > a location that is sometimes too far away. You need to determine which > brnach it is and where that branch is generated ... and probably change it > to use a longer form. > > -- EM > > > ------------------------------------------------------- > All the advantages of Linux Managed Hosting--Without the Cost and Risk! > Fully trained technicians. The highest number of Red Hat certifications in > the hosting industry. Fanatical Support. Click to learn more > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642 > _______________________________________________ > Jikesrvm-core mailing list > Jik...@li... > https://lists.sourceforge.net/lists/listinfo/jikesrvm-core |