summaryrefslogtreecommitdiff
path: root/src/compiler/codegen/GenCommon.cc
diff options
context:
space:
mode:
author jeffhao <jeffhao@google.com> 2012-05-09 17:58:52 -0700
committer jeffhao <jeffhao@google.com> 2012-05-15 15:44:18 -0700
commit41005ddb5576b8630a1084fbb3979ffa602c0599 (patch)
treeaf8d74573cc3a98c959566233d12bdb15251910c /src/compiler/codegen/GenCommon.cc
parentc3f8fa57268740f95a3c25e605bcab638b18d7b9 (diff)
Fix x86 type conversions. test-art-host-oat passes.
- test-art-host-oat enabled in test builds. - Created inline versions of float-to-int and double-to-int. - Fixed calls to helper functions for long-to-float/double and float/double-to-long. - Removed storePair and replaced its use with storeBaseDispWide (fixes iput-wide and aput-wide with doubles). - Renamed helper functions to have art_ prefix. - Fixed move-exception to store the result back. - Fixed floating point comparison when the destination reg is the same as a source. The typing would get confused since the source is floating point, but the result is int, and a clobber is needed to overwrite the expected result type. A similar thing happens in float/double-to-int. Change-Id: I0a876072254411aa42d6acadb8723be030727219
Diffstat (limited to 'src/compiler/codegen/GenCommon.cc')
-rw-r--r--src/compiler/codegen/GenCommon.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/compiler/codegen/GenCommon.cc b/src/compiler/codegen/GenCommon.cc
index 14eaf1db6d..c9ba285c5f 100644
--- a/src/compiler/codegen/GenCommon.cc
+++ b/src/compiler/codegen/GenCommon.cc
@@ -1060,7 +1060,7 @@ void genIPut(CompilationUnit* cUnit, MIR* mir, OpSize size, RegLocation rlSrc,
if (isVolatile) {
oatGenMemBarrier(cUnit, kST);
}
- storePair(cUnit, regPtr, rlSrc.lowReg, rlSrc.highReg);
+ storeBaseDispWide(cUnit, regPtr, 0, rlSrc.lowReg, rlSrc.highReg);
if (isVolatile) {
oatGenMemBarrier(cUnit, kSY);
}
@@ -1642,7 +1642,7 @@ void genArrayPut(CompilationUnit* cUnit, MIR* mir, OpSize size,
oatFreeTemp(cUnit, regLen);
}
- storePair(cUnit, regPtr, rlSrc.lowReg, rlSrc.highReg);
+ storeBaseDispWide(cUnit, regPtr, 0, rlSrc.lowReg, rlSrc.highReg);
oatFreeTemp(cUnit, regPtr);
} else {