Revert "[JIT] Fix volatile test" - breaks build
This reverts commit 11fb99d598ebe640719743a0d3bd7ed091e5be03.
diff --git a/vm/compiler/codegen/arm/CodegenDriver.c b/vm/compiler/codegen/arm/CodegenDriver.c
index 7b4e644..e4c4536 100644
--- a/vm/compiler/codegen/arm/CodegenDriver.c
+++ b/vm/compiler/codegen/arm/CodegenDriver.c
@@ -1645,23 +1645,12 @@
dvmAbort();
}
- /*
- * On SMP systems, Dalvik opcodes found to be referencing
- * volatile fields are rewritten to their _VOLATILE variant.
- * However, this does not happen on non-SMP systems. The JIT
- * still needs to know about volatility to avoid unsafe
- * optimizations so we determine volatility based on either
- * the opcode or the field access flags.
- */
-#if ANDROID_SMP != 0
isVolatile = (opcode == OP_SGET_VOLATILE) ||
(opcode == OP_SGET_VOLATILE_JUMBO) ||
(opcode == OP_SGET_OBJECT_VOLATILE) ||
(opcode == OP_SGET_OBJECT_VOLATILE_JUMBO);
+
assert(isVolatile == dvmIsVolatileField((Field *) fieldPtr));
-#else
- isVolatile = dvmIsVolatileField((Field *) fieldPtr);
-#endif
rlDest = dvmCompilerGetDest(cUnit, mir, 0);
rlResult = dvmCompilerEvalLoc(cUnit, rlDest, kAnyReg, true);
@@ -1736,15 +1725,12 @@
dvmAbort();
}
-#if ANDROID_SMP != 0
isVolatile = (opcode == OP_SPUT_VOLATILE) ||
(opcode == OP_SPUT_VOLATILE_JUMBO) ||
(opcode == OP_SPUT_OBJECT_VOLATILE) ||
(opcode == OP_SPUT_OBJECT_VOLATILE_JUMBO);
+
assert(isVolatile == dvmIsVolatileField((Field *) fieldPtr));
-#else
- isVolatile = dvmIsVolatileField((Field *) fieldPtr);
-#endif
isSputObject = (opcode == OP_SPUT_OBJECT) ||
(opcode == OP_SPUT_OBJECT_JUMBO) ||
@@ -2424,10 +2410,8 @@
case OP_IPUT_VOLATILE_JUMBO:
case OP_IPUT_OBJECT_VOLATILE:
case OP_IPUT_OBJECT_VOLATILE_JUMBO:
-#if ANDROID_SMP != 0
isVolatile = true;
// NOTE: intentional fallthrough
-#endif
case OP_IGET:
case OP_IGET_JUMBO:
case OP_IGET_WIDE:
@@ -2466,12 +2450,7 @@
LOGE("Unexpected null instance field");
dvmAbort();
}
-
-#if ANDROID_SMP != 0
- assert(isVolatile == dvmIsVolatileField((Field *) fieldPtr));
-#else
- isVolatile = dvmIsVolatileField((Field *) fieldPtr);
-#endif
+ assert(isVolatile == dvmIsVolatileField(fieldPtr));
fieldOffset = ((InstField *)fieldPtr)->byteOffset;
break;
}
@@ -2580,6 +2559,8 @@
case OP_IGET_VOLATILE_JUMBO:
case OP_IGET_OBJECT_VOLATILE:
case OP_IGET_OBJECT_VOLATILE_JUMBO:
+ isVolatile = true;
+ // NOTE: intentional fallthrough
case OP_IGET:
case OP_IGET_JUMBO:
case OP_IGET_OBJECT:
@@ -2600,6 +2581,8 @@
break;
case OP_IPUT_VOLATILE:
case OP_IPUT_VOLATILE_JUMBO:
+ isVolatile = true;
+ // NOTE: intentional fallthrough
case OP_IPUT:
case OP_IPUT_JUMBO:
case OP_IPUT_BOOLEAN:
@@ -2614,6 +2597,8 @@
break;
case OP_IPUT_OBJECT_VOLATILE:
case OP_IPUT_OBJECT_VOLATILE_JUMBO:
+ isVolatile = true;
+ // NOTE: intentional fallthrough
case OP_IPUT_OBJECT:
case OP_IPUT_OBJECT_JUMBO:
genIPut(cUnit, mir, kWord, fieldOffset, true, isVolatile);