blob: 9133d60ed8d2d68b1872f29d1ef0bf75805cf36f [file] [log] [blame]
Douglas Leung200f0402016-02-25 20:05:47 -08001%default { "handler":"artSet32InstanceFromMterp" }
2 /*
3 * General 32-bit instance field put.
4 *
5 * for: iput, iput-boolean, iput-byte, iput-char, iput-short
6 */
Alexey Frunze84603bf2016-10-21 19:54:43 -07007 /* op vA, vB, field@CCCC */
Douglas Leung200f0402016-02-25 20:05:47 -08008 .extern $handler
9 EXPORT_PC()
10 FETCH(a0, 1) # a0 <- field ref CCCC
11 GET_OPB(a1) # a1 <- B
12 GET_VREG(a1, a1) # a1 <- fp[B], the object pointer
13 GET_OPA4(a2) # a2 <- A+
14 GET_VREG(a2, a2) # a2 <- fp[A]
15 lw a3, OFF_FP_METHOD(rFP) # a3 <- referrer
16 PREFETCH_INST(2) # load rINST
17 JAL($handler)
18 bnez v0, MterpPossibleException # bail out
19 ADVANCE(2) # advance rPC
20 GET_INST_OPCODE(t0) # extract opcode from rINST
21 GOTO_OPCODE(t0) # jump to next instruction