From 1bc37c60da71c923ea9a2e99d31ba1b3d76d79a8 Mon Sep 17 00:00:00 2001 From: buzbee Date: Tue, 20 Nov 2012 13:35:41 -0800 Subject: 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 --- src/compiler/codegen/gen_common.cc | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'src/compiler/codegen/gen_common.cc') diff --git a/src/compiler/codegen/gen_common.cc b/src/compiler/codegen/gen_common.cc index c548376eeb..649ae827ac 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 @@ void genSput(CompilationUnit* cUnit, uint32_t fieldIdx, RegLocation rlSrc, } 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 @@ void genSput(CompilationUnit* cUnit, uint32_t fieldIdx, RegLocation rlSrc, 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 @@ void genSget(CompilationUnit* cUnit, uint32_t fieldIdx, RegLocation rlDest, // 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 @@ void genIGet(CompilationUnit* cUnit, uint32_t fieldIdx, int optFlags, OpSize siz 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 @@ void genIGet(CompilationUnit* cUnit, uint32_t fieldIdx, int optFlags, OpSize siz 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 @@ void genIGet(CompilationUnit* cUnit, uint32_t fieldIdx, int optFlags, OpSize siz 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 @@ void genIPut(CompilationUnit* cUnit, uint32_t fieldIdx, int optFlags, OpSize siz 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); -- cgit v1.2.3-59-g8ed1b