aboutsummaryrefslogtreecommitdiff
path: root/vm/compiler/codegen/arm/CodegenDriver.cpp
diff options
context:
space:
mode:
authorDavid Butcher <david.butcher@arm.com>2013-06-04 16:00:41 +0100
committerAndrew Warfield <hiasant@gmail.com>2013-12-18 22:28:38 +0100
commitfdd9f546da84f55867b83fe7570e7db9d3f7edc1 (patch)
tree6cf74e986a07f95799cfecf5f78b8c929e66d01a /vm/compiler/codegen/arm/CodegenDriver.cpp
parent7500582f499c49cba75d43d44ee6cc5dc43336ff (diff)
Dalvik: DMB Optimisations for TracingJIT
Makes DMB domain ISH or ISHST instead of the implicit System. ISH (Inner Shareable) should be sufficient for all cores/clusters, but is not sufficient for GPU or other memory-mapped peripherals Change-Id: Id159228daba97bc3692d2eb1ee2786bae2ee34a7
Diffstat (limited to 'vm/compiler/codegen/arm/CodegenDriver.cpp')
-rw-r--r--vm/compiler/codegen/arm/CodegenDriver.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/vm/compiler/codegen/arm/CodegenDriver.cpp b/vm/compiler/codegen/arm/CodegenDriver.cpp
index 541427592..19fad894e 100644
--- a/vm/compiler/codegen/arm/CodegenDriver.cpp
+++ b/vm/compiler/codegen/arm/CodegenDriver.cpp
@@ -378,7 +378,7 @@ static void genIGet(CompilationUnit *cUnit, MIR *mir, OpSize size,
size, rlObj.sRegLow);
HEAP_ACCESS_SHADOW(false);
if (isVolatile) {
- dvmCompilerGenMemBarrier(cUnit, kSY);
+ dvmCompilerGenMemBarrier(cUnit, kISH);
}
storeValue(cUnit, rlDest, rlResult);
@@ -400,13 +400,13 @@ static void genIPut(CompilationUnit *cUnit, MIR *mir, OpSize size,
NULL);/* null object? */
if (isVolatile) {
- dvmCompilerGenMemBarrier(cUnit, kST);
+ dvmCompilerGenMemBarrier(cUnit, kISHST);
}
HEAP_ACCESS_SHADOW(true);
storeBaseDisp(cUnit, rlObj.lowReg, fieldOffset, rlSrc.lowReg, size);
HEAP_ACCESS_SHADOW(false);
if (isVolatile) {
- dvmCompilerGenMemBarrier(cUnit, kSY);
+ dvmCompilerGenMemBarrier(cUnit, kISH);
}
if (isObject) {
/* NOTE: marking card based on object head */
@@ -1544,7 +1544,7 @@ static bool handleFmt10x(CompilationUnit *cUnit, MIR *mir)
}
switch (dalvikOpcode) {
case OP_RETURN_VOID_BARRIER:
- dvmCompilerGenMemBarrier(cUnit, kST);
+ dvmCompilerGenMemBarrier(cUnit, kISHST);
// Intentional fallthrough
case OP_RETURN_VOID:
genReturnCommon(cUnit,mir);
@@ -1725,7 +1725,7 @@ static bool handleFmt21c_Fmt31c(CompilationUnit *cUnit, MIR *mir)
loadConstant(cUnit, tReg, (int) fieldPtr + valOffset);
if (isVolatile) {
- dvmCompilerGenMemBarrier(cUnit, kSY);
+ dvmCompilerGenMemBarrier(cUnit, kISH);
}
HEAP_ACCESS_SHADOW(true);
loadWordDisp(cUnit, tReg, 0, rlResult.lowReg);
@@ -1803,14 +1803,14 @@ static bool handleFmt21c_Fmt31c(CompilationUnit *cUnit, MIR *mir)
loadWordDisp(cUnit, tReg, OFFSETOF_MEMBER(Field, clazz), objHead);
}
if (isVolatile) {
- dvmCompilerGenMemBarrier(cUnit, kST);
+ dvmCompilerGenMemBarrier(cUnit, kISHST);
}
HEAP_ACCESS_SHADOW(true);
storeWordDisp(cUnit, tReg, valOffset ,rlSrc.lowReg);
dvmCompilerFreeTemp(cUnit, tReg);
HEAP_ACCESS_SHADOW(false);
if (isVolatile) {
- dvmCompilerGenMemBarrier(cUnit, kSY);
+ dvmCompilerGenMemBarrier(cUnit, kISH);
}
if (isSputObject) {
/* NOTE: marking card based sfield->clazz */