21 lines
900 B
ArmAsm
21 lines
900 B
ArmAsm
%default { "is_object":"0", "handler":"artSet32InstanceFromMterp" }
|
|
/*
|
|
* General 32-bit instance field put.
|
|
*
|
|
* for: iput, iput-object, iput-boolean, iput-byte, iput-char, iput-short
|
|
*/
|
|
/* op vA, vB, field//CCCC */
|
|
.extern $handler
|
|
EXPORT_PC
|
|
FETCH w0, 1 // w0<- field ref CCCC
|
|
lsr w1, wINST, #12 // w1<- B
|
|
GET_VREG w1, w1 // w1<- fp[B], the object pointer
|
|
ubfx w2, wINST, #8, #4 // w2<- A
|
|
GET_VREG w2, w2 // w2<- fp[A]
|
|
ldr x3, [xFP, #OFF_FP_METHOD] // w3<- referrer
|
|
PREFETCH_INST 2
|
|
bl $handler
|
|
cbnz w0, MterpPossibleException
|
|
ADVANCE 2 // advance rPC
|
|
GET_INST_OPCODE ip // extract opcode from rINST
|
|
GOTO_OPCODE ip // jump to next instruction
|