Home | History | Annotate | Download | only in arm64
      1 %default { "is_object":"0", "helper":"MterpGet32Static", "extend":"" }
      2     /*
      3      * General SGET handler wrapper.
      4      *
      5      * for: sget, sget-object, sget-boolean, sget-byte, sget-char, sget-short
      6      */
      7     /* op vAA, field//BBBB */
      8 
      9     .extern $helper
     10     EXPORT_PC
     11     FETCH w0, 1                         // w0<- field ref BBBB
     12     ldr   x1, [xFP, #OFF_FP_METHOD]
     13     mov   x2, xSELF
     14     bl    $helper
     15     ldr   x3, [xSELF, #THREAD_EXCEPTION_OFFSET]
     16     lsr   w2, wINST, #8                 // w2<- AA
     17     $extend
     18     PREFETCH_INST 2
     19     cbnz  x3, MterpException            // bail out
     20 .if $is_object
     21     SET_VREG_OBJECT w0, w2              // fp[AA]<- w0
     22 .else
     23     SET_VREG w0, w2                     // fp[AA]<- w0
     24 .endif
     25     ADVANCE 2
     26     GET_INST_OPCODE ip                  // extract opcode from rINST
     27     GOTO_OPCODE ip
     28