From: <cap...@us...> - 2007-08-07 23:32:13
|
Revision: 13238 http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=13238&view=rev Author: captain5050 Date: 2007-08-07 16:32:12 -0700 (Tue, 07 Aug 2007) Log Message: ----------- Avoid generating bounds check exceptions in IA32 VM_Assembler Modified Paths: -------------- rvmroot/trunk/rvm/src-generated/ia32-assembler/VM_Assembler.in Modified: rvmroot/trunk/rvm/src-generated/ia32-assembler/VM_Assembler.in =================================================================== --- rvmroot/trunk/rvm/src-generated/ia32-assembler/VM_Assembler.in 2007-08-07 23:28:43 UTC (rev 13237) +++ rvmroot/trunk/rvm/src-generated/ia32-assembler/VM_Assembler.in 2007-08-07 23:32:12 UTC (rev 13238) @@ -272,22 +272,12 @@ * @param index the byte offset into which to write * @param data the byte data value to write */ + @NoNullCheck + @NoBoundsCheck protected final void setMachineCodes(int index, byte data) { - /* - * The two code fragments below should produce the same result. Mutating the - * allocation sequence in the commented-out version throws OOB exceptions. - * I'll try to add a test case, but I suspect the planned compiler cleanups - * will oviate the need. TODO make this code sane again. RJG - * As at r12043. - */ -// if(index >= machineCodes.length) { -// growMachineCodes(index, data); -// } else { -// machineCodes[index] = data; -// } - try { + if(index < machineCodes.length) { machineCodes[index] = data; - } catch (ArrayIndexOutOfBoundsException e) { + } else { growMachineCodes(index, data); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |