diff --git a/src/compiler/codegen/arm/MethodCodegenDriver.cc b/src/compiler/codegen/arm/MethodCodegenDriver.cc
index a1793e0..3e844fd 100644
--- a/src/compiler/codegen/arm/MethodCodegenDriver.cc
+++ b/src/compiler/codegen/arm/MethodCodegenDriver.cc
@@ -177,7 +177,7 @@
     bool fastPath =
         cUnit->compiler->ComputeStaticFieldInfo(fieldIdx, cUnit,
                                                 fieldOffset, ssbIndex,
-                                                isReferrersClass, isVolatile);
+                                                isReferrersClass, isVolatile, true);
     if (fastPath && !SLOW_FIELD_PATH) {
         DCHECK_GE(fieldOffset, 0);
         int rBase;
@@ -271,7 +271,7 @@
     bool fastPath =
         cUnit->compiler->ComputeStaticFieldInfo(fieldIdx, cUnit,
                                                 fieldOffset, ssbIndex,
-                                                isReferrersClass, isVolatile);
+                                                isReferrersClass, isVolatile, false);
     if (fastPath && !SLOW_FIELD_PATH) {
         DCHECK_GE(fieldOffset, 0);
         int rBase;
diff --git a/src/compiler/codegen/arm/Thumb2/Gen.cc b/src/compiler/codegen/arm/Thumb2/Gen.cc
index db51fb8..dff05b7 100644
--- a/src/compiler/codegen/arm/Thumb2/Gen.cc
+++ b/src/compiler/codegen/arm/Thumb2/Gen.cc
@@ -415,7 +415,7 @@
     uint32_t fieldIdx = mir->dalvikInsn.vC;
     bool fastPath =
         cUnit->compiler->ComputeInstanceFieldInfo(fieldIdx, cUnit,
-                                                  fieldOffset, isVolatile);
+                                                  fieldOffset, isVolatile, false);
     if (fastPath && !SLOW_FIELD_PATH) {
         RegLocation rlResult;
         RegisterClass regClass = oatRegClassBySize(size);
@@ -470,7 +470,7 @@
     uint32_t fieldIdx = mir->dalvikInsn.vC;
     bool fastPath =
         cUnit->compiler->ComputeInstanceFieldInfo(fieldIdx, cUnit,
-                                                  fieldOffset, isVolatile);
+                                                  fieldOffset, isVolatile, true);
     if (fastPath && !SLOW_FIELD_PATH) {
         RegisterClass regClass = oatRegClassBySize(size);
         DCHECK_GE(fieldOffset, 0);
