1a5069fb7eb2da846ff1fc2c903ebd8ce9fa3647fAndy McFadden%verify "executed" 2a5069fb7eb2da846ff1fc2c903ebd8ce9fa3647fAndy McFadden /* 3a5069fb7eb2da846ff1fc2c903ebd8ce9fa3647fAndy McFadden * Return the length of an array. 4a5069fb7eb2da846ff1fc2c903ebd8ce9fa3647fAndy McFadden */ 5a5069fb7eb2da846ff1fc2c903ebd8ce9fa3647fAndy McFadden mov r1, rINST, lsr #12 @ r1<- B 6a5069fb7eb2da846ff1fc2c903ebd8ce9fa3647fAndy McFadden ubfx r2, rINST, #8, #4 @ r2<- A 7a5069fb7eb2da846ff1fc2c903ebd8ce9fa3647fAndy McFadden GET_VREG(r0, r1) @ r0<- vB (object ref) 8a5069fb7eb2da846ff1fc2c903ebd8ce9fa3647fAndy McFadden cmp r0, #0 @ is object null? 9a5069fb7eb2da846ff1fc2c903ebd8ce9fa3647fAndy McFadden beq common_errNullObject @ yup, fail 10a5069fb7eb2da846ff1fc2c903ebd8ce9fa3647fAndy McFadden FETCH_ADVANCE_INST(1) @ advance rPC, load rINST 11a5069fb7eb2da846ff1fc2c903ebd8ce9fa3647fAndy McFadden ldr r3, [r0, #offArrayObject_length] @ r3<- array length 12a5069fb7eb2da846ff1fc2c903ebd8ce9fa3647fAndy McFadden GET_INST_OPCODE(ip) @ extract opcode from rINST 13a5069fb7eb2da846ff1fc2c903ebd8ce9fa3647fAndy McFadden SET_VREG(r3, r2) @ vB<- length 14a5069fb7eb2da846ff1fc2c903ebd8ce9fa3647fAndy McFadden GOTO_OPCODE(ip) @ jump to next instruction 15