Add specialized handler for non-quickened opcodes in mterp.

The generic handler did access checks but this is unnecessary since
mterp should only be used in cases where we don't need access check.
I believe that this is just simple oversight that was never spotted.

Non-quickened code is currently 1.9x slower than quickened code.
This reduces it to 1.45x - essentially halving of the overhead.
(golem benchmarks on arm64 with quickening manually disabled)

Test: test-art-host-gtest
Change-Id: Icd29aeff3bf25baaae9a9a07072ddd3448e4d92c
diff --git a/runtime/interpreter/mterp/arm/op_iget.S b/runtime/interpreter/mterp/arm/op_iget.S
index c7f777b..c45880b 100644
--- a/runtime/interpreter/mterp/arm/op_iget.S
+++ b/runtime/interpreter/mterp/arm/op_iget.S
@@ -1,4 +1,4 @@
-%default { "is_object":"0", "helper":"artGet32InstanceFromCode"}
+%default { "is_object":"0", "helper":"artGet32InstanceFromMterp"}
     /*
      * General instance field get.
      *
diff --git a/runtime/interpreter/mterp/arm/op_iget_boolean.S b/runtime/interpreter/mterp/arm/op_iget_boolean.S
index 628f40a..9da6c8a 100644
--- a/runtime/interpreter/mterp/arm/op_iget_boolean.S
+++ b/runtime/interpreter/mterp/arm/op_iget_boolean.S
@@ -1 +1 @@
-%include "arm/op_iget.S" { "helper":"artGetBooleanInstanceFromCode" }
+%include "arm/op_iget.S" { "helper":"artGetBooleanInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/arm/op_iget_byte.S b/runtime/interpreter/mterp/arm/op_iget_byte.S
index c4e08e2..3d1f52d 100644
--- a/runtime/interpreter/mterp/arm/op_iget_byte.S
+++ b/runtime/interpreter/mterp/arm/op_iget_byte.S
@@ -1 +1 @@
-%include "arm/op_iget.S" { "helper":"artGetByteInstanceFromCode" }
+%include "arm/op_iget.S" { "helper":"artGetByteInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/arm/op_iget_char.S b/runtime/interpreter/mterp/arm/op_iget_char.S
index 5e8da66..6b7154d 100644
--- a/runtime/interpreter/mterp/arm/op_iget_char.S
+++ b/runtime/interpreter/mterp/arm/op_iget_char.S
@@ -1 +1 @@
-%include "arm/op_iget.S" { "helper":"artGetCharInstanceFromCode" }
+%include "arm/op_iget.S" { "helper":"artGetCharInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/arm/op_iget_object.S b/runtime/interpreter/mterp/arm/op_iget_object.S
index 1cf2e3c..a35b1c8 100644
--- a/runtime/interpreter/mterp/arm/op_iget_object.S
+++ b/runtime/interpreter/mterp/arm/op_iget_object.S
@@ -1 +1 @@
-%include "arm/op_iget.S" { "is_object":"1", "helper":"artGetObjInstanceFromCode" }
+%include "arm/op_iget.S" { "is_object":"1", "helper":"artGetObjInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/arm/op_iget_short.S b/runtime/interpreter/mterp/arm/op_iget_short.S
index 460f045..3254c07 100644
--- a/runtime/interpreter/mterp/arm/op_iget_short.S
+++ b/runtime/interpreter/mterp/arm/op_iget_short.S
@@ -1 +1 @@
-%include "arm/op_iget.S" { "helper":"artGetShortInstanceFromCode" }
+%include "arm/op_iget.S" { "helper":"artGetShortInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/arm/op_iget_wide.S b/runtime/interpreter/mterp/arm/op_iget_wide.S
index e287d51..30405bd 100644
--- a/runtime/interpreter/mterp/arm/op_iget_wide.S
+++ b/runtime/interpreter/mterp/arm/op_iget_wide.S
@@ -9,7 +9,7 @@
     GET_VREG r1, r1                        @ r1<- fp[B], the object pointer
     ldr      r2, [rFP, #OFF_FP_METHOD]     @ r2<- referrer
     mov      r3, rSELF                     @ r3<- self
-    bl       artGet64InstanceFromCode
+    bl       artGet64InstanceFromMterp
     ldr      r3, [rSELF, #THREAD_EXCEPTION_OFFSET]
     ubfx     r2, rINST, #8, #4             @ r2<- A
     PREFETCH_INST 2
diff --git a/runtime/interpreter/mterp/arm64/op_iget.S b/runtime/interpreter/mterp/arm64/op_iget.S
index 88533bd..d9feac7 100644
--- a/runtime/interpreter/mterp/arm64/op_iget.S
+++ b/runtime/interpreter/mterp/arm64/op_iget.S
@@ -1,4 +1,4 @@
-%default { "extend":"", "is_object":"0", "helper":"artGet32InstanceFromCode"}
+%default { "extend":"", "is_object":"0", "helper":"artGet32InstanceFromMterp"}
     /*
      * General instance field get.
      *
diff --git a/runtime/interpreter/mterp/arm64/op_iget_boolean.S b/runtime/interpreter/mterp/arm64/op_iget_boolean.S
index 36a9b6b..f6ea4dd 100644
--- a/runtime/interpreter/mterp/arm64/op_iget_boolean.S
+++ b/runtime/interpreter/mterp/arm64/op_iget_boolean.S
@@ -1 +1 @@
-%include "arm64/op_iget.S" { "helper":"artGetBooleanInstanceFromCode", "extend":"uxtb w0, w0" }
+%include "arm64/op_iget.S" { "helper":"artGetBooleanInstanceFromMterp", "extend":"uxtb w0, w0" }
diff --git a/runtime/interpreter/mterp/arm64/op_iget_byte.S b/runtime/interpreter/mterp/arm64/op_iget_byte.S
index fd3f164..497e2bf 100644
--- a/runtime/interpreter/mterp/arm64/op_iget_byte.S
+++ b/runtime/interpreter/mterp/arm64/op_iget_byte.S
@@ -1 +1 @@
-%include "arm64/op_iget.S" { "helper":"artGetByteInstanceFromCode", "extend":"sxtb w0, w0" }
+%include "arm64/op_iget.S" { "helper":"artGetByteInstanceFromMterp", "extend":"sxtb w0, w0" }
diff --git a/runtime/interpreter/mterp/arm64/op_iget_char.S b/runtime/interpreter/mterp/arm64/op_iget_char.S
index ea23275..4669859 100644
--- a/runtime/interpreter/mterp/arm64/op_iget_char.S
+++ b/runtime/interpreter/mterp/arm64/op_iget_char.S
@@ -1 +1 @@
-%include "arm64/op_iget.S" { "helper":"artGetCharInstanceFromCode", "extend":"uxth w0, w0" }
+%include "arm64/op_iget.S" { "helper":"artGetCharInstanceFromMterp", "extend":"uxth w0, w0" }
diff --git a/runtime/interpreter/mterp/arm64/op_iget_object.S b/runtime/interpreter/mterp/arm64/op_iget_object.S
index 03be78d..eb7bdea 100644
--- a/runtime/interpreter/mterp/arm64/op_iget_object.S
+++ b/runtime/interpreter/mterp/arm64/op_iget_object.S
@@ -1 +1 @@
-%include "arm64/op_iget.S" { "is_object":"1", "helper":"artGetObjInstanceFromCode" }
+%include "arm64/op_iget.S" { "is_object":"1", "helper":"artGetObjInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/arm64/op_iget_short.S b/runtime/interpreter/mterp/arm64/op_iget_short.S
index c347542..6f0a505 100644
--- a/runtime/interpreter/mterp/arm64/op_iget_short.S
+++ b/runtime/interpreter/mterp/arm64/op_iget_short.S
@@ -1 +1 @@
-%include "arm64/op_iget.S" { "helper":"artGetShortInstanceFromCode", "extend":"sxth w0, w0" }
+%include "arm64/op_iget.S" { "helper":"artGetShortInstanceFromMterp", "extend":"sxth w0, w0" }
diff --git a/runtime/interpreter/mterp/arm64/op_iget_wide.S b/runtime/interpreter/mterp/arm64/op_iget_wide.S
index 9718390..02ef0a7 100644
--- a/runtime/interpreter/mterp/arm64/op_iget_wide.S
+++ b/runtime/interpreter/mterp/arm64/op_iget_wide.S
@@ -9,7 +9,7 @@
     GET_VREG w1, w1                        // w1<- fp[B], the object pointer
     ldr      x2, [xFP, #OFF_FP_METHOD]     // w2<- referrer
     mov      x3, xSELF                     // w3<- self
-    bl       artGet64InstanceFromCode
+    bl       artGet64InstanceFromMterp
     ldr      x3, [xSELF, #THREAD_EXCEPTION_OFFSET]
     ubfx     w2, wINST, #8, #4             // w2<- A
     PREFETCH_INST 2
diff --git a/runtime/interpreter/mterp/mips/op_iget.S b/runtime/interpreter/mterp/mips/op_iget.S
index 01f42d9..0785ac5 100644
--- a/runtime/interpreter/mterp/mips/op_iget.S
+++ b/runtime/interpreter/mterp/mips/op_iget.S
@@ -1,4 +1,4 @@
-%default { "is_object":"0", "helper":"artGet32InstanceFromCode"}
+%default { "is_object":"0", "helper":"artGet32InstanceFromMterp"}
     /*
      * General instance field get.
      *
diff --git a/runtime/interpreter/mterp/mips/op_iget_boolean.S b/runtime/interpreter/mterp/mips/op_iget_boolean.S
index e03364e..a932c37 100644
--- a/runtime/interpreter/mterp/mips/op_iget_boolean.S
+++ b/runtime/interpreter/mterp/mips/op_iget_boolean.S
@@ -1 +1 @@
-%include "mips/op_iget.S" { "helper":"artGetBooleanInstanceFromCode" }
+%include "mips/op_iget.S" { "helper":"artGetBooleanInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/mips/op_iget_byte.S b/runtime/interpreter/mterp/mips/op_iget_byte.S
index dc87cfe..e498a8c 100644
--- a/runtime/interpreter/mterp/mips/op_iget_byte.S
+++ b/runtime/interpreter/mterp/mips/op_iget_byte.S
@@ -1 +1 @@
-%include "mips/op_iget.S" { "helper":"artGetByteInstanceFromCode" }
+%include "mips/op_iget.S" { "helper":"artGetByteInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/mips/op_iget_char.S b/runtime/interpreter/mterp/mips/op_iget_char.S
index 55f8a93..efd5b99 100644
--- a/runtime/interpreter/mterp/mips/op_iget_char.S
+++ b/runtime/interpreter/mterp/mips/op_iget_char.S
@@ -1 +1 @@
-%include "mips/op_iget.S" { "helper":"artGetCharInstanceFromCode" }
+%include "mips/op_iget.S" { "helper":"artGetCharInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/mips/op_iget_object.S b/runtime/interpreter/mterp/mips/op_iget_object.S
index 11d93a4..8fa9652 100644
--- a/runtime/interpreter/mterp/mips/op_iget_object.S
+++ b/runtime/interpreter/mterp/mips/op_iget_object.S
@@ -1 +1 @@
-%include "mips/op_iget.S" { "is_object":"1", "helper":"artGetObjInstanceFromCode" }
+%include "mips/op_iget.S" { "is_object":"1", "helper":"artGetObjInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/mips/op_iget_short.S b/runtime/interpreter/mterp/mips/op_iget_short.S
index 9086246..efc5de4 100644
--- a/runtime/interpreter/mterp/mips/op_iget_short.S
+++ b/runtime/interpreter/mterp/mips/op_iget_short.S
@@ -1 +1 @@
-%include "mips/op_iget.S" { "helper":"artGetShortInstanceFromCode" }
+%include "mips/op_iget.S" { "helper":"artGetShortInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/mips/op_iget_wide.S b/runtime/interpreter/mterp/mips/op_iget_wide.S
index cf5019e..e1d83a4 100644
--- a/runtime/interpreter/mterp/mips/op_iget_wide.S
+++ b/runtime/interpreter/mterp/mips/op_iget_wide.S
@@ -10,7 +10,7 @@
     GET_VREG(a1, a1)                       # a1 <- fp[B], the object pointer
     lw    a2, OFF_FP_METHOD(rFP)           # a2 <- referrer
     move  a3, rSELF                        # a3 <- self
-    JAL(artGet64InstanceFromCode)
+    JAL(artGet64InstanceFromMterp)
     lw   a3, THREAD_EXCEPTION_OFFSET(rSELF)
     GET_OPA4(a2)                           # a2<- A+
     PREFETCH_INST(2)                       # load rINST
diff --git a/runtime/interpreter/mterp/mips64/op_iget.S b/runtime/interpreter/mterp/mips64/op_iget.S
index ade4b31..4158603 100644
--- a/runtime/interpreter/mterp/mips64/op_iget.S
+++ b/runtime/interpreter/mterp/mips64/op_iget.S
@@ -1,4 +1,4 @@
-%default { "is_object":"0", "helper":"artGet32InstanceFromCode"}
+%default { "is_object":"0", "helper":"artGet32InstanceFromMterp"}
     /*
      * General instance field get.
      *
diff --git a/runtime/interpreter/mterp/mips64/op_iget_boolean.S b/runtime/interpreter/mterp/mips64/op_iget_boolean.S
index cb2c8be..e64b798 100644
--- a/runtime/interpreter/mterp/mips64/op_iget_boolean.S
+++ b/runtime/interpreter/mterp/mips64/op_iget_boolean.S
@@ -1 +1 @@
-%include "mips64/op_iget.S" { "helper":"artGetBooleanInstanceFromCode" }
+%include "mips64/op_iget.S" { "helper":"artGetBooleanInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/mips64/op_iget_byte.S b/runtime/interpreter/mterp/mips64/op_iget_byte.S
index 099d8d0..fefe53f 100644
--- a/runtime/interpreter/mterp/mips64/op_iget_byte.S
+++ b/runtime/interpreter/mterp/mips64/op_iget_byte.S
@@ -1 +1 @@
-%include "mips64/op_iget.S" { "helper":"artGetByteInstanceFromCode" }
+%include "mips64/op_iget.S" { "helper":"artGetByteInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/mips64/op_iget_char.S b/runtime/interpreter/mterp/mips64/op_iget_char.S
index 927b7af..9caf40e 100644
--- a/runtime/interpreter/mterp/mips64/op_iget_char.S
+++ b/runtime/interpreter/mterp/mips64/op_iget_char.S
@@ -1 +1 @@
-%include "mips64/op_iget.S" { "helper":"artGetCharInstanceFromCode" }
+%include "mips64/op_iget.S" { "helper":"artGetCharInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/mips64/op_iget_object.S b/runtime/interpreter/mterp/mips64/op_iget_object.S
index c658556..ce3421a 100644
--- a/runtime/interpreter/mterp/mips64/op_iget_object.S
+++ b/runtime/interpreter/mterp/mips64/op_iget_object.S
@@ -1 +1 @@
-%include "mips64/op_iget.S" { "is_object":"1", "helper":"artGetObjInstanceFromCode" }
+%include "mips64/op_iget.S" { "is_object":"1", "helper":"artGetObjInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/mips64/op_iget_short.S b/runtime/interpreter/mterp/mips64/op_iget_short.S
index 28b5093..e2d122d 100644
--- a/runtime/interpreter/mterp/mips64/op_iget_short.S
+++ b/runtime/interpreter/mterp/mips64/op_iget_short.S
@@ -1 +1 @@
-%include "mips64/op_iget.S" { "helper":"artGetShortInstanceFromCode" }
+%include "mips64/op_iget.S" { "helper":"artGetShortInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/mips64/op_iget_wide.S b/runtime/interpreter/mterp/mips64/op_iget_wide.S
index 85cf670..ca793e0 100644
--- a/runtime/interpreter/mterp/mips64/op_iget_wide.S
+++ b/runtime/interpreter/mterp/mips64/op_iget_wide.S
@@ -3,14 +3,14 @@
      *
      * for: iget-wide
      */
-    .extern artGet64InstanceFromCode
+    .extern artGet64InstanceFromMterp
     EXPORT_PC
     lhu      a0, 2(rPC)                 # a0 <- field ref CCCC
     srl      a1, rINST, 12              # a1 <- B
     GET_VREG_U a1, a1                   # a1 <- fp[B], the object pointer
     ld       a2, OFF_FP_METHOD(rFP)     # a2 <- referrer
     move     a3, rSELF                  # a3 <- self
-    jal      artGet64InstanceFromCode
+    jal      artGet64InstanceFromMterp
     ld       a3, THREAD_EXCEPTION_OFFSET(rSELF)
     ext      a2, rINST, 8, 4            # a2 <- A
     PREFETCH_INST 2
diff --git a/runtime/interpreter/mterp/mterp.cc b/runtime/interpreter/mterp/mterp.cc
index e4cc6d3..4c06e12 100644
--- a/runtime/interpreter/mterp/mterp.cc
+++ b/runtime/interpreter/mterp/mterp.cc
@@ -681,6 +681,60 @@
   return MterpShouldSwitchInterpreters();
 }
 
+// Helper function to do a null check after trying to resolve the field. Not for statics since obj
+// does not exist there. There is a suspend check, object is a double pointer to update the value
+// in the caller in case it moves.
+template<FindFieldType type, bool kAccessCheck>
+ALWAYS_INLINE static inline ArtField* FindInstanceField(uint32_t field_idx,
+                                                        ArtMethod* referrer,
+                                                        Thread* self,
+                                                        size_t size,
+                                                        mirror::Object** obj)
+    REQUIRES(!Roles::uninterruptible_)
+    REQUIRES_SHARED(Locks::mutator_lock_) {
+  StackHandleScope<1> hs(self);
+  HandleWrapper<mirror::Object> h(hs.NewHandleWrapper(obj));
+  ArtField* field = FindFieldFromCode<type, kAccessCheck>(field_idx, referrer, self, size);
+  if (LIKELY(field != nullptr) && UNLIKELY(h == nullptr)) {
+    ThrowNullPointerExceptionForFieldAccess(field, /*is_read*/true);
+    return nullptr;
+  }
+  return field;
+}
+
+#define ART_GET_FIELD_FROM_MTERP(Kind, PrimitiveType, RetType, SetType,                           \
+                                 PrimitiveOrObject, IsObject, Ptr)                                \
+extern "C" RetType artGet ## Kind ## InstanceFromMterp(uint32_t field_idx,                        \
+                                                       mirror::Object* obj,                       \
+                                                       ArtMethod* referrer,                       \
+                                                       Thread* self)                              \
+      REQUIRES_SHARED(Locks::mutator_lock_) {                                                     \
+    constexpr FindFieldType kType = Instance ## PrimitiveOrObject ## Read;                        \
+    constexpr size_t kSize = sizeof(PrimitiveType);                                               \
+    mirror::DexCache* dex_cache = referrer->GetDexCache();                                        \
+    ArtField* field = dex_cache->GetResolvedField(field_idx, kRuntimePointerSize);                \
+    if (LIKELY(field != nullptr && obj != nullptr)) {                                             \
+      return field->Get ## Kind (obj)Ptr;  /* NOLINT */                                           \
+    }                                                                                             \
+    field = FindInstanceField<kType, true>(field_idx, referrer, self, kSize, &obj);               \
+    if (LIKELY(field != nullptr)) {                                                               \
+      return field->Get ## Kind (obj)Ptr;  /* NOLINT */                                           \
+    }                                                                                             \
+    /* Will throw exception by checking with Thread::Current. */                                  \
+    return 0;                                                                                     \
+}                                                                                                 \
+
+ART_GET_FIELD_FROM_MTERP(Byte, int8_t, ssize_t, uint32_t, Primitive, false, )
+ART_GET_FIELD_FROM_MTERP(Boolean, int8_t, size_t, uint32_t, Primitive, false, )
+ART_GET_FIELD_FROM_MTERP(Short, int16_t, ssize_t, uint16_t, Primitive, false, )
+ART_GET_FIELD_FROM_MTERP(Char, int16_t, size_t, uint16_t, Primitive, false, )
+ART_GET_FIELD_FROM_MTERP(32, int32_t, size_t, uint32_t, Primitive, false, )
+ART_GET_FIELD_FROM_MTERP(64, int64_t, uint64_t, uint64_t, Primitive, false, )
+ART_GET_FIELD_FROM_MTERP(Obj, mirror::HeapReference<mirror::Object>, mirror::Object*,
+                         mirror::Object*, Object, true, .Ptr())
+
+#undef ART_GET_FIELD_FROM_MTERP
+
 extern "C" ssize_t artSet8InstanceFromMterp(uint32_t field_idx,
                                             mirror::Object* obj,
                                             uint8_t new_value,
diff --git a/runtime/interpreter/mterp/out/mterp_arm.S b/runtime/interpreter/mterp/out/mterp_arm.S
index 73b957f..fd5d647 100644
--- a/runtime/interpreter/mterp/out/mterp_arm.S
+++ b/runtime/interpreter/mterp/out/mterp_arm.S
@@ -2255,7 +2255,7 @@
     GET_VREG r1, r1                        @ r1<- fp[B], the object pointer
     ldr      r2, [rFP, #OFF_FP_METHOD]     @ r2<- referrer
     mov      r3, rSELF                     @ r3<- self
-    bl       artGet32InstanceFromCode
+    bl       artGet32InstanceFromMterp
     ldr      r3, [rSELF, #THREAD_EXCEPTION_OFFSET]
     ubfx     r2, rINST, #8, #4             @ r2<- A
     PREFETCH_INST 2
@@ -2285,7 +2285,7 @@
     GET_VREG r1, r1                        @ r1<- fp[B], the object pointer
     ldr      r2, [rFP, #OFF_FP_METHOD]     @ r2<- referrer
     mov      r3, rSELF                     @ r3<- self
-    bl       artGet64InstanceFromCode
+    bl       artGet64InstanceFromMterp
     ldr      r3, [rSELF, #THREAD_EXCEPTION_OFFSET]
     ubfx     r2, rINST, #8, #4             @ r2<- A
     PREFETCH_INST 2
@@ -2314,7 +2314,7 @@
     GET_VREG r1, r1                        @ r1<- fp[B], the object pointer
     ldr      r2, [rFP, #OFF_FP_METHOD]     @ r2<- referrer
     mov      r3, rSELF                     @ r3<- self
-    bl       artGetObjInstanceFromCode
+    bl       artGetObjInstanceFromMterp
     ldr      r3, [rSELF, #THREAD_EXCEPTION_OFFSET]
     ubfx     r2, rINST, #8, #4             @ r2<- A
     PREFETCH_INST 2
@@ -2346,7 +2346,7 @@
     GET_VREG r1, r1                        @ r1<- fp[B], the object pointer
     ldr      r2, [rFP, #OFF_FP_METHOD]     @ r2<- referrer
     mov      r3, rSELF                     @ r3<- self
-    bl       artGetBooleanInstanceFromCode
+    bl       artGetBooleanInstanceFromMterp
     ldr      r3, [rSELF, #THREAD_EXCEPTION_OFFSET]
     ubfx     r2, rINST, #8, #4             @ r2<- A
     PREFETCH_INST 2
@@ -2378,7 +2378,7 @@
     GET_VREG r1, r1                        @ r1<- fp[B], the object pointer
     ldr      r2, [rFP, #OFF_FP_METHOD]     @ r2<- referrer
     mov      r3, rSELF                     @ r3<- self
-    bl       artGetByteInstanceFromCode
+    bl       artGetByteInstanceFromMterp
     ldr      r3, [rSELF, #THREAD_EXCEPTION_OFFSET]
     ubfx     r2, rINST, #8, #4             @ r2<- A
     PREFETCH_INST 2
@@ -2410,7 +2410,7 @@
     GET_VREG r1, r1                        @ r1<- fp[B], the object pointer
     ldr      r2, [rFP, #OFF_FP_METHOD]     @ r2<- referrer
     mov      r3, rSELF                     @ r3<- self
-    bl       artGetCharInstanceFromCode
+    bl       artGetCharInstanceFromMterp
     ldr      r3, [rSELF, #THREAD_EXCEPTION_OFFSET]
     ubfx     r2, rINST, #8, #4             @ r2<- A
     PREFETCH_INST 2
@@ -2442,7 +2442,7 @@
     GET_VREG r1, r1                        @ r1<- fp[B], the object pointer
     ldr      r2, [rFP, #OFF_FP_METHOD]     @ r2<- referrer
     mov      r3, rSELF                     @ r3<- self
-    bl       artGetShortInstanceFromCode
+    bl       artGetShortInstanceFromMterp
     ldr      r3, [rSELF, #THREAD_EXCEPTION_OFFSET]
     ubfx     r2, rINST, #8, #4             @ r2<- A
     PREFETCH_INST 2
diff --git a/runtime/interpreter/mterp/out/mterp_arm64.S b/runtime/interpreter/mterp/out/mterp_arm64.S
index 2a0c4df..213f7ff 100644
--- a/runtime/interpreter/mterp/out/mterp_arm64.S
+++ b/runtime/interpreter/mterp/out/mterp_arm64.S
@@ -2192,7 +2192,7 @@
     GET_VREG w1, w1                        // w1<- fp[B], the object pointer
     ldr      x2, [xFP, #OFF_FP_METHOD]     // w2<- referrer
     mov      x3, xSELF                     // w3<- self
-    bl       artGet32InstanceFromCode
+    bl       artGet32InstanceFromMterp
     ldr      x3, [xSELF, #THREAD_EXCEPTION_OFFSET]
     
     ubfx     w2, wINST, #8, #4             // w2<- A
@@ -2222,7 +2222,7 @@
     GET_VREG w1, w1                        // w1<- fp[B], the object pointer
     ldr      x2, [xFP, #OFF_FP_METHOD]     // w2<- referrer
     mov      x3, xSELF                     // w3<- self
-    bl       artGet64InstanceFromCode
+    bl       artGet64InstanceFromMterp
     ldr      x3, [xSELF, #THREAD_EXCEPTION_OFFSET]
     ubfx     w2, wINST, #8, #4             // w2<- A
     PREFETCH_INST 2
@@ -2249,7 +2249,7 @@
     GET_VREG w1, w1                        // w1<- fp[B], the object pointer
     ldr      x2, [xFP, #OFF_FP_METHOD]     // w2<- referrer
     mov      x3, xSELF                     // w3<- self
-    bl       artGetObjInstanceFromCode
+    bl       artGetObjInstanceFromMterp
     ldr      x3, [xSELF, #THREAD_EXCEPTION_OFFSET]
     
     ubfx     w2, wINST, #8, #4             // w2<- A
@@ -2281,7 +2281,7 @@
     GET_VREG w1, w1                        // w1<- fp[B], the object pointer
     ldr      x2, [xFP, #OFF_FP_METHOD]     // w2<- referrer
     mov      x3, xSELF                     // w3<- self
-    bl       artGetBooleanInstanceFromCode
+    bl       artGetBooleanInstanceFromMterp
     ldr      x3, [xSELF, #THREAD_EXCEPTION_OFFSET]
     uxtb w0, w0
     ubfx     w2, wINST, #8, #4             // w2<- A
@@ -2313,7 +2313,7 @@
     GET_VREG w1, w1                        // w1<- fp[B], the object pointer
     ldr      x2, [xFP, #OFF_FP_METHOD]     // w2<- referrer
     mov      x3, xSELF                     // w3<- self
-    bl       artGetByteInstanceFromCode
+    bl       artGetByteInstanceFromMterp
     ldr      x3, [xSELF, #THREAD_EXCEPTION_OFFSET]
     sxtb w0, w0
     ubfx     w2, wINST, #8, #4             // w2<- A
@@ -2345,7 +2345,7 @@
     GET_VREG w1, w1                        // w1<- fp[B], the object pointer
     ldr      x2, [xFP, #OFF_FP_METHOD]     // w2<- referrer
     mov      x3, xSELF                     // w3<- self
-    bl       artGetCharInstanceFromCode
+    bl       artGetCharInstanceFromMterp
     ldr      x3, [xSELF, #THREAD_EXCEPTION_OFFSET]
     uxth w0, w0
     ubfx     w2, wINST, #8, #4             // w2<- A
@@ -2377,7 +2377,7 @@
     GET_VREG w1, w1                        // w1<- fp[B], the object pointer
     ldr      x2, [xFP, #OFF_FP_METHOD]     // w2<- referrer
     mov      x3, xSELF                     // w3<- self
-    bl       artGetShortInstanceFromCode
+    bl       artGetShortInstanceFromMterp
     ldr      x3, [xSELF, #THREAD_EXCEPTION_OFFSET]
     sxth w0, w0
     ubfx     w2, wINST, #8, #4             // w2<- A
diff --git a/runtime/interpreter/mterp/out/mterp_mips.S b/runtime/interpreter/mterp/out/mterp_mips.S
index 3b86279..c749057 100644
--- a/runtime/interpreter/mterp/out/mterp_mips.S
+++ b/runtime/interpreter/mterp/out/mterp_mips.S
@@ -2677,7 +2677,7 @@
     GET_VREG(a1, a1)                       # a1 <- fp[B], the object pointer
     lw    a2, OFF_FP_METHOD(rFP)           # a2 <- referrer
     move  a3, rSELF                        # a3 <- self
-    JAL(artGet32InstanceFromCode)
+    JAL(artGet32InstanceFromMterp)
     lw   a3, THREAD_EXCEPTION_OFFSET(rSELF)
     GET_OPA4(a2)                           # a2<- A+
     PREFETCH_INST(2)                       # load rINST
@@ -2706,7 +2706,7 @@
     GET_VREG(a1, a1)                       # a1 <- fp[B], the object pointer
     lw    a2, OFF_FP_METHOD(rFP)           # a2 <- referrer
     move  a3, rSELF                        # a3 <- self
-    JAL(artGet64InstanceFromCode)
+    JAL(artGet64InstanceFromMterp)
     lw   a3, THREAD_EXCEPTION_OFFSET(rSELF)
     GET_OPA4(a2)                           # a2<- A+
     PREFETCH_INST(2)                       # load rINST
@@ -2732,7 +2732,7 @@
     GET_VREG(a1, a1)                       # a1 <- fp[B], the object pointer
     lw    a2, OFF_FP_METHOD(rFP)           # a2 <- referrer
     move  a3, rSELF                        # a3 <- self
-    JAL(artGetObjInstanceFromCode)
+    JAL(artGetObjInstanceFromMterp)
     lw   a3, THREAD_EXCEPTION_OFFSET(rSELF)
     GET_OPA4(a2)                           # a2<- A+
     PREFETCH_INST(2)                       # load rINST
@@ -2763,7 +2763,7 @@
     GET_VREG(a1, a1)                       # a1 <- fp[B], the object pointer
     lw    a2, OFF_FP_METHOD(rFP)           # a2 <- referrer
     move  a3, rSELF                        # a3 <- self
-    JAL(artGetBooleanInstanceFromCode)
+    JAL(artGetBooleanInstanceFromMterp)
     lw   a3, THREAD_EXCEPTION_OFFSET(rSELF)
     GET_OPA4(a2)                           # a2<- A+
     PREFETCH_INST(2)                       # load rINST
@@ -2794,7 +2794,7 @@
     GET_VREG(a1, a1)                       # a1 <- fp[B], the object pointer
     lw    a2, OFF_FP_METHOD(rFP)           # a2 <- referrer
     move  a3, rSELF                        # a3 <- self
-    JAL(artGetByteInstanceFromCode)
+    JAL(artGetByteInstanceFromMterp)
     lw   a3, THREAD_EXCEPTION_OFFSET(rSELF)
     GET_OPA4(a2)                           # a2<- A+
     PREFETCH_INST(2)                       # load rINST
@@ -2825,7 +2825,7 @@
     GET_VREG(a1, a1)                       # a1 <- fp[B], the object pointer
     lw    a2, OFF_FP_METHOD(rFP)           # a2 <- referrer
     move  a3, rSELF                        # a3 <- self
-    JAL(artGetCharInstanceFromCode)
+    JAL(artGetCharInstanceFromMterp)
     lw   a3, THREAD_EXCEPTION_OFFSET(rSELF)
     GET_OPA4(a2)                           # a2<- A+
     PREFETCH_INST(2)                       # load rINST
@@ -2856,7 +2856,7 @@
     GET_VREG(a1, a1)                       # a1 <- fp[B], the object pointer
     lw    a2, OFF_FP_METHOD(rFP)           # a2 <- referrer
     move  a3, rSELF                        # a3 <- self
-    JAL(artGetShortInstanceFromCode)
+    JAL(artGetShortInstanceFromMterp)
     lw   a3, THREAD_EXCEPTION_OFFSET(rSELF)
     GET_OPA4(a2)                           # a2<- A+
     PREFETCH_INST(2)                       # load rINST
diff --git a/runtime/interpreter/mterp/out/mterp_mips64.S b/runtime/interpreter/mterp/out/mterp_mips64.S
index 58f98df..f9b270b 100644
--- a/runtime/interpreter/mterp/out/mterp_mips64.S
+++ b/runtime/interpreter/mterp/out/mterp_mips64.S
@@ -2246,14 +2246,14 @@
      *
      * for: iget, iget-object, iget-boolean, iget-byte, iget-char, iget-short
      */
-    .extern artGet32InstanceFromCode
+    .extern artGet32InstanceFromMterp
     EXPORT_PC
     lhu      a0, 2(rPC)                 # a0 <- field ref CCCC
     srl      a1, rINST, 12              # a1 <- B
     GET_VREG_U a1, a1                   # a1 <- fp[B], the object pointer
     ld       a2, OFF_FP_METHOD(rFP)     # a2 <- referrer
     move     a3, rSELF                  # a3 <- self
-    jal      artGet32InstanceFromCode
+    jal      artGet32InstanceFromMterp
     ld       a3, THREAD_EXCEPTION_OFFSET(rSELF)
     ext      a2, rINST, 8, 4            # a2 <- A
     PREFETCH_INST 2
@@ -2276,14 +2276,14 @@
      *
      * for: iget-wide
      */
-    .extern artGet64InstanceFromCode
+    .extern artGet64InstanceFromMterp
     EXPORT_PC
     lhu      a0, 2(rPC)                 # a0 <- field ref CCCC
     srl      a1, rINST, 12              # a1 <- B
     GET_VREG_U a1, a1                   # a1 <- fp[B], the object pointer
     ld       a2, OFF_FP_METHOD(rFP)     # a2 <- referrer
     move     a3, rSELF                  # a3 <- self
-    jal      artGet64InstanceFromCode
+    jal      artGet64InstanceFromMterp
     ld       a3, THREAD_EXCEPTION_OFFSET(rSELF)
     ext      a2, rINST, 8, 4            # a2 <- A
     PREFETCH_INST 2
@@ -2303,14 +2303,14 @@
      *
      * for: iget, iget-object, iget-boolean, iget-byte, iget-char, iget-short
      */
-    .extern artGetObjInstanceFromCode
+    .extern artGetObjInstanceFromMterp
     EXPORT_PC
     lhu      a0, 2(rPC)                 # a0 <- field ref CCCC
     srl      a1, rINST, 12              # a1 <- B
     GET_VREG_U a1, a1                   # a1 <- fp[B], the object pointer
     ld       a2, OFF_FP_METHOD(rFP)     # a2 <- referrer
     move     a3, rSELF                  # a3 <- self
-    jal      artGetObjInstanceFromCode
+    jal      artGetObjInstanceFromMterp
     ld       a3, THREAD_EXCEPTION_OFFSET(rSELF)
     ext      a2, rINST, 8, 4            # a2 <- A
     PREFETCH_INST 2
@@ -2335,14 +2335,14 @@
      *
      * for: iget, iget-object, iget-boolean, iget-byte, iget-char, iget-short
      */
-    .extern artGetBooleanInstanceFromCode
+    .extern artGetBooleanInstanceFromMterp
     EXPORT_PC
     lhu      a0, 2(rPC)                 # a0 <- field ref CCCC
     srl      a1, rINST, 12              # a1 <- B
     GET_VREG_U a1, a1                   # a1 <- fp[B], the object pointer
     ld       a2, OFF_FP_METHOD(rFP)     # a2 <- referrer
     move     a3, rSELF                  # a3 <- self
-    jal      artGetBooleanInstanceFromCode
+    jal      artGetBooleanInstanceFromMterp
     ld       a3, THREAD_EXCEPTION_OFFSET(rSELF)
     ext      a2, rINST, 8, 4            # a2 <- A
     PREFETCH_INST 2
@@ -2367,14 +2367,14 @@
      *
      * for: iget, iget-object, iget-boolean, iget-byte, iget-char, iget-short
      */
-    .extern artGetByteInstanceFromCode
+    .extern artGetByteInstanceFromMterp
     EXPORT_PC
     lhu      a0, 2(rPC)                 # a0 <- field ref CCCC
     srl      a1, rINST, 12              # a1 <- B
     GET_VREG_U a1, a1                   # a1 <- fp[B], the object pointer
     ld       a2, OFF_FP_METHOD(rFP)     # a2 <- referrer
     move     a3, rSELF                  # a3 <- self
-    jal      artGetByteInstanceFromCode
+    jal      artGetByteInstanceFromMterp
     ld       a3, THREAD_EXCEPTION_OFFSET(rSELF)
     ext      a2, rINST, 8, 4            # a2 <- A
     PREFETCH_INST 2
@@ -2399,14 +2399,14 @@
      *
      * for: iget, iget-object, iget-boolean, iget-byte, iget-char, iget-short
      */
-    .extern artGetCharInstanceFromCode
+    .extern artGetCharInstanceFromMterp
     EXPORT_PC
     lhu      a0, 2(rPC)                 # a0 <- field ref CCCC
     srl      a1, rINST, 12              # a1 <- B
     GET_VREG_U a1, a1                   # a1 <- fp[B], the object pointer
     ld       a2, OFF_FP_METHOD(rFP)     # a2 <- referrer
     move     a3, rSELF                  # a3 <- self
-    jal      artGetCharInstanceFromCode
+    jal      artGetCharInstanceFromMterp
     ld       a3, THREAD_EXCEPTION_OFFSET(rSELF)
     ext      a2, rINST, 8, 4            # a2 <- A
     PREFETCH_INST 2
@@ -2431,14 +2431,14 @@
      *
      * for: iget, iget-object, iget-boolean, iget-byte, iget-char, iget-short
      */
-    .extern artGetShortInstanceFromCode
+    .extern artGetShortInstanceFromMterp
     EXPORT_PC
     lhu      a0, 2(rPC)                 # a0 <- field ref CCCC
     srl      a1, rINST, 12              # a1 <- B
     GET_VREG_U a1, a1                   # a1 <- fp[B], the object pointer
     ld       a2, OFF_FP_METHOD(rFP)     # a2 <- referrer
     move     a3, rSELF                  # a3 <- self
-    jal      artGetShortInstanceFromCode
+    jal      artGetShortInstanceFromMterp
     ld       a3, THREAD_EXCEPTION_OFFSET(rSELF)
     ext      a2, rINST, 8, 4            # a2 <- A
     PREFETCH_INST 2
diff --git a/runtime/interpreter/mterp/out/mterp_x86.S b/runtime/interpreter/mterp/out/mterp_x86.S
index 6be70cc..ad74b29 100644
--- a/runtime/interpreter/mterp/out/mterp_x86.S
+++ b/runtime/interpreter/mterp/out/mterp_x86.S
@@ -2132,7 +2132,7 @@
     movl    %eax, OUT_ARG2(%esp)            # referrer
     mov     rSELF, %ecx
     movl    %ecx, OUT_ARG3(%esp)            # self
-    call    SYMBOL(artGet32InstanceFromCode)
+    call    SYMBOL(artGet32InstanceFromMterp)
     movl    rSELF, %ecx
     RESTORE_IBASE_FROM_SELF %ecx
     cmpl    $0, THREAD_EXCEPTION_OFFSET(%ecx)
@@ -2165,7 +2165,7 @@
     movl    %eax, OUT_ARG2(%esp)            # referrer
     mov     rSELF, %ecx
     movl    %ecx, OUT_ARG3(%esp)            # self
-    call    SYMBOL(artGet64InstanceFromCode)
+    call    SYMBOL(artGet64InstanceFromMterp)
     mov     rSELF, %ecx
     cmpl    $0, THREAD_EXCEPTION_OFFSET(%ecx)
     jnz     MterpException                  # bail out
@@ -2196,7 +2196,7 @@
     movl    %eax, OUT_ARG2(%esp)            # referrer
     mov     rSELF, %ecx
     movl    %ecx, OUT_ARG3(%esp)            # self
-    call    SYMBOL(artGetObjInstanceFromCode)
+    call    SYMBOL(artGetObjInstanceFromMterp)
     movl    rSELF, %ecx
     RESTORE_IBASE_FROM_SELF %ecx
     cmpl    $0, THREAD_EXCEPTION_OFFSET(%ecx)
@@ -2231,7 +2231,7 @@
     movl    %eax, OUT_ARG2(%esp)            # referrer
     mov     rSELF, %ecx
     movl    %ecx, OUT_ARG3(%esp)            # self
-    call    SYMBOL(artGetBooleanInstanceFromCode)
+    call    SYMBOL(artGetBooleanInstanceFromMterp)
     movl    rSELF, %ecx
     RESTORE_IBASE_FROM_SELF %ecx
     cmpl    $0, THREAD_EXCEPTION_OFFSET(%ecx)
@@ -2266,7 +2266,7 @@
     movl    %eax, OUT_ARG2(%esp)            # referrer
     mov     rSELF, %ecx
     movl    %ecx, OUT_ARG3(%esp)            # self
-    call    SYMBOL(artGetByteInstanceFromCode)
+    call    SYMBOL(artGetByteInstanceFromMterp)
     movl    rSELF, %ecx
     RESTORE_IBASE_FROM_SELF %ecx
     cmpl    $0, THREAD_EXCEPTION_OFFSET(%ecx)
@@ -2301,7 +2301,7 @@
     movl    %eax, OUT_ARG2(%esp)            # referrer
     mov     rSELF, %ecx
     movl    %ecx, OUT_ARG3(%esp)            # self
-    call    SYMBOL(artGetCharInstanceFromCode)
+    call    SYMBOL(artGetCharInstanceFromMterp)
     movl    rSELF, %ecx
     RESTORE_IBASE_FROM_SELF %ecx
     cmpl    $0, THREAD_EXCEPTION_OFFSET(%ecx)
@@ -2336,7 +2336,7 @@
     movl    %eax, OUT_ARG2(%esp)            # referrer
     mov     rSELF, %ecx
     movl    %ecx, OUT_ARG3(%esp)            # self
-    call    SYMBOL(artGetShortInstanceFromCode)
+    call    SYMBOL(artGetShortInstanceFromMterp)
     movl    rSELF, %ecx
     RESTORE_IBASE_FROM_SELF %ecx
     cmpl    $0, THREAD_EXCEPTION_OFFSET(%ecx)
diff --git a/runtime/interpreter/mterp/out/mterp_x86_64.S b/runtime/interpreter/mterp/out/mterp_x86_64.S
index 562cf7c..56d68e6 100644
--- a/runtime/interpreter/mterp/out/mterp_x86_64.S
+++ b/runtime/interpreter/mterp/out/mterp_x86_64.S
@@ -2075,7 +2075,7 @@
     GET_VREG OUT_32_ARG1, %rcx              # the object pointer
     movq    OFF_FP_METHOD(rFP), OUT_ARG2    # referrer
     movq    rSELF, OUT_ARG3
-    call    SYMBOL(artGet32InstanceFromCode)
+    call    SYMBOL(artGet32InstanceFromMterp)
     movq    rSELF, %rcx
     cmpq    $0, THREAD_EXCEPTION_OFFSET(%rcx)
     jnz     MterpException                  # bail out
@@ -2108,7 +2108,7 @@
     GET_VREG OUT_32_ARG1, %rcx              # the object pointer
     movq    OFF_FP_METHOD(rFP), OUT_ARG2    # referrer
     movq    rSELF, OUT_ARG3
-    call    SYMBOL(artGet64InstanceFromCode)
+    call    SYMBOL(artGet64InstanceFromMterp)
     movq    rSELF, %rcx
     cmpq    $0, THREAD_EXCEPTION_OFFSET(%rcx)
     jnz     MterpException                  # bail out
@@ -2142,7 +2142,7 @@
     GET_VREG OUT_32_ARG1, %rcx              # the object pointer
     movq    OFF_FP_METHOD(rFP), OUT_ARG2    # referrer
     movq    rSELF, OUT_ARG3
-    call    SYMBOL(artGetObjInstanceFromCode)
+    call    SYMBOL(artGetObjInstanceFromMterp)
     movq    rSELF, %rcx
     cmpq    $0, THREAD_EXCEPTION_OFFSET(%rcx)
     jnz     MterpException                  # bail out
@@ -2176,7 +2176,7 @@
     GET_VREG OUT_32_ARG1, %rcx              # the object pointer
     movq    OFF_FP_METHOD(rFP), OUT_ARG2    # referrer
     movq    rSELF, OUT_ARG3
-    call    SYMBOL(artGetBooleanInstanceFromCode)
+    call    SYMBOL(artGetBooleanInstanceFromMterp)
     movq    rSELF, %rcx
     cmpq    $0, THREAD_EXCEPTION_OFFSET(%rcx)
     jnz     MterpException                  # bail out
@@ -2210,7 +2210,7 @@
     GET_VREG OUT_32_ARG1, %rcx              # the object pointer
     movq    OFF_FP_METHOD(rFP), OUT_ARG2    # referrer
     movq    rSELF, OUT_ARG3
-    call    SYMBOL(artGetByteInstanceFromCode)
+    call    SYMBOL(artGetByteInstanceFromMterp)
     movq    rSELF, %rcx
     cmpq    $0, THREAD_EXCEPTION_OFFSET(%rcx)
     jnz     MterpException                  # bail out
@@ -2244,7 +2244,7 @@
     GET_VREG OUT_32_ARG1, %rcx              # the object pointer
     movq    OFF_FP_METHOD(rFP), OUT_ARG2    # referrer
     movq    rSELF, OUT_ARG3
-    call    SYMBOL(artGetCharInstanceFromCode)
+    call    SYMBOL(artGetCharInstanceFromMterp)
     movq    rSELF, %rcx
     cmpq    $0, THREAD_EXCEPTION_OFFSET(%rcx)
     jnz     MterpException                  # bail out
@@ -2278,7 +2278,7 @@
     GET_VREG OUT_32_ARG1, %rcx              # the object pointer
     movq    OFF_FP_METHOD(rFP), OUT_ARG2    # referrer
     movq    rSELF, OUT_ARG3
-    call    SYMBOL(artGetShortInstanceFromCode)
+    call    SYMBOL(artGetShortInstanceFromMterp)
     movq    rSELF, %rcx
     cmpq    $0, THREAD_EXCEPTION_OFFSET(%rcx)
     jnz     MterpException                  # bail out
diff --git a/runtime/interpreter/mterp/x86/op_iget.S b/runtime/interpreter/mterp/x86/op_iget.S
index e3304ba..219463b 100644
--- a/runtime/interpreter/mterp/x86/op_iget.S
+++ b/runtime/interpreter/mterp/x86/op_iget.S
@@ -1,4 +1,4 @@
-%default { "is_object":"0", "helper":"artGet32InstanceFromCode"}
+%default { "is_object":"0", "helper":"artGet32InstanceFromMterp"}
 /*
  * General instance field get.
  *
diff --git a/runtime/interpreter/mterp/x86/op_iget_boolean.S b/runtime/interpreter/mterp/x86/op_iget_boolean.S
index 9ddad04..4ab2afc 100644
--- a/runtime/interpreter/mterp/x86/op_iget_boolean.S
+++ b/runtime/interpreter/mterp/x86/op_iget_boolean.S
@@ -1 +1 @@
-%include "x86/op_iget.S" { "helper":"artGetBooleanInstanceFromCode" }
+%include "x86/op_iget.S" { "helper":"artGetBooleanInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/x86/op_iget_byte.S b/runtime/interpreter/mterp/x86/op_iget_byte.S
index 8250788..bb282d4 100644
--- a/runtime/interpreter/mterp/x86/op_iget_byte.S
+++ b/runtime/interpreter/mterp/x86/op_iget_byte.S
@@ -1 +1 @@
-%include "x86/op_iget.S" { "helper":"artGetByteInstanceFromCode" }
+%include "x86/op_iget.S" { "helper":"artGetByteInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/x86/op_iget_char.S b/runtime/interpreter/mterp/x86/op_iget_char.S
index e9d2156..a13203b 100644
--- a/runtime/interpreter/mterp/x86/op_iget_char.S
+++ b/runtime/interpreter/mterp/x86/op_iget_char.S
@@ -1 +1 @@
-%include "x86/op_iget.S" { "helper":"artGetCharInstanceFromCode" }
+%include "x86/op_iget.S" { "helper":"artGetCharInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/x86/op_iget_object.S b/runtime/interpreter/mterp/x86/op_iget_object.S
index 3abeefc..79d5e5f 100644
--- a/runtime/interpreter/mterp/x86/op_iget_object.S
+++ b/runtime/interpreter/mterp/x86/op_iget_object.S
@@ -1 +1 @@
-%include "x86/op_iget.S" { "is_object":"1", "helper":"artGetObjInstanceFromCode" }
+%include "x86/op_iget.S" { "is_object":"1", "helper":"artGetObjInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/x86/op_iget_short.S b/runtime/interpreter/mterp/x86/op_iget_short.S
index c8fad89..8fc18a5 100644
--- a/runtime/interpreter/mterp/x86/op_iget_short.S
+++ b/runtime/interpreter/mterp/x86/op_iget_short.S
@@ -1 +1 @@
-%include "x86/op_iget.S" { "helper":"artGetShortInstanceFromCode" }
+%include "x86/op_iget.S" { "helper":"artGetShortInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/x86/op_iget_wide.S b/runtime/interpreter/mterp/x86/op_iget_wide.S
index a5d7e69..b111b29 100644
--- a/runtime/interpreter/mterp/x86/op_iget_wide.S
+++ b/runtime/interpreter/mterp/x86/op_iget_wide.S
@@ -14,7 +14,7 @@
     movl    %eax, OUT_ARG2(%esp)            # referrer
     mov     rSELF, %ecx
     movl    %ecx, OUT_ARG3(%esp)            # self
-    call    SYMBOL(artGet64InstanceFromCode)
+    call    SYMBOL(artGet64InstanceFromMterp)
     mov     rSELF, %ecx
     cmpl    $$0, THREAD_EXCEPTION_OFFSET(%ecx)
     jnz     MterpException                  # bail out
diff --git a/runtime/interpreter/mterp/x86_64/op_iget.S b/runtime/interpreter/mterp/x86_64/op_iget.S
index df43efe..ffc14b5 100644
--- a/runtime/interpreter/mterp/x86_64/op_iget.S
+++ b/runtime/interpreter/mterp/x86_64/op_iget.S
@@ -1,4 +1,4 @@
-%default { "is_object":"0", "helper":"artGet32InstanceFromCode", "wide":"0"}
+%default { "is_object":"0", "helper":"artGet32InstanceFromMterp", "wide":"0"}
 /*
  * General instance field get.
  *
diff --git a/runtime/interpreter/mterp/x86_64/op_iget_boolean.S b/runtime/interpreter/mterp/x86_64/op_iget_boolean.S
index 6ac5523..1379d53 100644
--- a/runtime/interpreter/mterp/x86_64/op_iget_boolean.S
+++ b/runtime/interpreter/mterp/x86_64/op_iget_boolean.S
@@ -1 +1 @@
-%include "x86_64/op_iget.S" { "helper":"artGetBooleanInstanceFromCode" }
+%include "x86_64/op_iget.S" { "helper":"artGetBooleanInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/x86_64/op_iget_byte.S b/runtime/interpreter/mterp/x86_64/op_iget_byte.S
index 6a861b1..93047ec 100644
--- a/runtime/interpreter/mterp/x86_64/op_iget_byte.S
+++ b/runtime/interpreter/mterp/x86_64/op_iget_byte.S
@@ -1 +1 @@
-%include "x86_64/op_iget.S" { "helper":"artGetByteInstanceFromCode" }
+%include "x86_64/op_iget.S" { "helper":"artGetByteInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/x86_64/op_iget_char.S b/runtime/interpreter/mterp/x86_64/op_iget_char.S
index 021a0f1..239f0d0 100644
--- a/runtime/interpreter/mterp/x86_64/op_iget_char.S
+++ b/runtime/interpreter/mterp/x86_64/op_iget_char.S
@@ -1 +1 @@
-%include "x86_64/op_iget.S" { "helper":"artGetCharInstanceFromCode" }
+%include "x86_64/op_iget.S" { "helper":"artGetCharInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/x86_64/op_iget_object.S b/runtime/interpreter/mterp/x86_64/op_iget_object.S
index d92bc9c..2104d2c 100644
--- a/runtime/interpreter/mterp/x86_64/op_iget_object.S
+++ b/runtime/interpreter/mterp/x86_64/op_iget_object.S
@@ -1 +1 @@
-%include "x86_64/op_iget.S" { "is_object":"1", "helper":"artGetObjInstanceFromCode" }
+%include "x86_64/op_iget.S" { "is_object":"1", "helper":"artGetObjInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/x86_64/op_iget_short.S b/runtime/interpreter/mterp/x86_64/op_iget_short.S
index f158bea..3525eff 100644
--- a/runtime/interpreter/mterp/x86_64/op_iget_short.S
+++ b/runtime/interpreter/mterp/x86_64/op_iget_short.S
@@ -1 +1 @@
-%include "x86_64/op_iget.S" { "helper":"artGetShortInstanceFromCode" }
+%include "x86_64/op_iget.S" { "helper":"artGetShortInstanceFromMterp" }
diff --git a/runtime/interpreter/mterp/x86_64/op_iget_wide.S b/runtime/interpreter/mterp/x86_64/op_iget_wide.S
index 74bb9ff..706c441 100644
--- a/runtime/interpreter/mterp/x86_64/op_iget_wide.S
+++ b/runtime/interpreter/mterp/x86_64/op_iget_wide.S
@@ -1 +1 @@
-%include "x86_64/op_iget.S" { "helper":"artGet64InstanceFromCode", "wide":"1" }
+%include "x86_64/op_iget.S" { "helper":"artGet64InstanceFromMterp", "wide":"1" }