17c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee%default { "reg":"rINST", "store":"movl", "shift":"4", "data_offset":"MIRROR_INT_ARRAY_DATA_OFFSET" } 27c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee/* 37c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee * Array put, 32 bits or less. vBB[vCC] <- vAA. 47c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee * 57c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee * for: aput, aput-boolean, aput-byte, aput-char, aput-short 67c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee * 77c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee */ 87c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee /* op vAA, vBB, vCC */ 97c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee movzbl 2(rPC), %eax # eax <- BB 107c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee movzbl 3(rPC), %ecx # ecx <- CC 1105dfaaa8d1783bcf8fe603dd8ed260a939e846c0Serguei Katkov GET_VREG %eax, %eax # eax <- vBB (array object) 1205dfaaa8d1783bcf8fe603dd8ed260a939e846c0Serguei Katkov GET_VREG %ecx, %ecx # ecx <- vCC (requested index) 137c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee testl %eax, %eax # null array object? 147c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee je common_errNullObject # bail if so 157c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee cmpl MIRROR_ARRAY_LENGTH_OFFSET(%eax), %ecx 167c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee jae common_errArrayIndex # index >= length, bail. 177c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee leal $data_offset(%eax,%ecx,$shift), %eax 1805dfaaa8d1783bcf8fe603dd8ed260a939e846c0Serguei Katkov GET_VREG rINST, rINST 197c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee $store $reg, (%eax) 207c58bd41046bb9f87642caa0c2b094dc98be29caBill Buzbee ADVANCE_PC_FETCH_AND_GOTO_NEXT 2 21