11452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee /* 21452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee * Return the length of an array. 31452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee */ 41452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee mov r1, rINST, lsr #12 @ r1<- B 51452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee ubfx r2, rINST, #8, #4 @ r2<- A 61452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee GET_VREG r0, r1 @ r0<- vB (object ref) 71452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee cmp r0, #0 @ is object null? 81452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee beq common_errNullObject @ yup, fail 91452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee FETCH_ADVANCE_INST 1 @ advance rPC, load rINST 101452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee ldr r3, [r0, #MIRROR_ARRAY_LENGTH_OFFSET] @ r3<- array length 111452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee GET_INST_OPCODE ip @ extract opcode from rINST 121452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee SET_VREG r3, r2 @ vB<- length 131452bee8f06b9f76a333ddf4760e4beaa82f8099buzbee GOTO_OPCODE ip @ jump to next instruction 14