Continuing Quick compiler refactoring
With this CL, we no longer include any .cc files - all source
files compile stand-alone. We still build a separate .so for
each target, but all code in the target-independent "codegen"
directory is now truly independent and doesn't rely on any
target-specific macros to compile.
Header file inclusion is still a bit of a mess, but that will be
addressed in a subsequent CL.
Next up: create a codegen class to hold code generator routines
overrideable by target.
Change-Id: I3a93118d11afeab11f310950a6a73381a99e26e1
diff --git a/src/compiler/codegen/gen_common.cc b/src/compiler/codegen/gen_common.cc
index c548376..649ae82 100644
--- a/src/compiler/codegen/gen_common.cc
+++ b/src/compiler/codegen/gen_common.cc
@@ -15,6 +15,9 @@
*/
#include "oat/runtime/oat_support_entrypoints.h"
+#include "../compiler_ir.h"
+#include "ralloc_util.h"
+#include "codegen_util.h"
namespace art {
@@ -610,9 +613,8 @@
} else {
rlSrc = loadValue(cUnit, rlSrc, kAnyReg);
}
-//FIXME: need to generalize the barrier call
if (isVolatile) {
- oatGenMemBarrier(cUnit, kST);
+ oatGenMemBarrier(cUnit, kStoreStore);
}
if (isLongOrDouble) {
storeBaseDispWide(cUnit, rBase, fieldOffset, rlSrc.lowReg,
@@ -621,7 +623,7 @@
storeWordDisp(cUnit, rBase, fieldOffset, rlSrc.lowReg);
}
if (isVolatile) {
- oatGenMemBarrier(cUnit, kSY);
+ oatGenMemBarrier(cUnit, kStoreLoad);
}
if (isObject) {
markGCCard(cUnit, rlSrc.lowReg, rBase);
@@ -698,7 +700,7 @@
// rBase now holds static storage base
RegLocation rlResult = oatEvalLoc(cUnit, rlDest, kAnyReg, true);
if (isVolatile) {
- oatGenMemBarrier(cUnit, kSY);
+ oatGenMemBarrier(cUnit, kLoadLoad);
}
if (isLongOrDouble) {
loadBaseDispWide(cUnit, rBase, fieldOffset, rlResult.lowReg,
@@ -894,7 +896,7 @@
loadBaseDispWide(cUnit, rlObj.lowReg, fieldOffset, rlResult.lowReg,
rlResult.highReg, rlObj.sRegLow);
if (isVolatile) {
- oatGenMemBarrier(cUnit, kSY);
+ oatGenMemBarrier(cUnit, kLoadLoad);
}
} else {
int regPtr = oatAllocTemp(cUnit);
@@ -902,7 +904,7 @@
rlResult = oatEvalLoc(cUnit, rlDest, regClass, true);
loadPair(cUnit, regPtr, rlResult.lowReg, rlResult.highReg);
if (isVolatile) {
- oatGenMemBarrier(cUnit, kSY);
+ oatGenMemBarrier(cUnit, kLoadLoad);
}
oatFreeTemp(cUnit, regPtr);
}
@@ -913,7 +915,7 @@
loadBaseDisp(cUnit, rlObj.lowReg, fieldOffset, rlResult.lowReg,
kWord, rlObj.sRegLow);
if (isVolatile) {
- oatGenMemBarrier(cUnit, kSY);
+ oatGenMemBarrier(cUnit, kLoadLoad);
}
storeValue(cUnit, rlDest, rlResult);
}
@@ -951,22 +953,22 @@
regPtr = oatAllocTemp(cUnit);
opRegRegImm(cUnit, kOpAdd, regPtr, rlObj.lowReg, fieldOffset);
if (isVolatile) {
- oatGenMemBarrier(cUnit, kST);
+ oatGenMemBarrier(cUnit, kStoreStore);
}
storeBaseDispWide(cUnit, regPtr, 0, rlSrc.lowReg, rlSrc.highReg);
if (isVolatile) {
- oatGenMemBarrier(cUnit, kSY);
+ oatGenMemBarrier(cUnit, kLoadLoad);
}
oatFreeTemp(cUnit, regPtr);
} else {
rlSrc = loadValue(cUnit, rlSrc, regClass);
genNullCheck(cUnit, rlObj.sRegLow, rlObj.lowReg, optFlags);
if (isVolatile) {
- oatGenMemBarrier(cUnit, kST);
+ oatGenMemBarrier(cUnit, kStoreStore);
}
storeBaseDisp(cUnit, rlObj.lowReg, fieldOffset, rlSrc.lowReg, kWord);
if (isVolatile) {
- oatGenMemBarrier(cUnit, kSY);
+ oatGenMemBarrier(cUnit, kLoadLoad);
}
if (isObject) {
markGCCard(cUnit, rlSrc.lowReg, rlObj.lowReg);