diff options
| author | 2012-03-21 20:40:33 -0700 | |
|---|---|---|
| committer | 2012-03-21 20:41:16 -0700 | |
| commit | c6f3bb87ffbb44d902c4a1f67a71bb108bd01560 (patch) | |
| tree | c423db1d6e7914e57559ab5a4325094e6f1ea5c0 /src/compiler/codegen/CodegenFactory.cc | |
| parent | e5b7894351ecc5ef99442eea0700c913178c95ce (diff) | |
Further x86 progress and image creation.
Change-Id: Idafadfc55228541536f25d2c92d40d9e0510b602
Diffstat (limited to 'src/compiler/codegen/CodegenFactory.cc')
| -rw-r--r-- | src/compiler/codegen/CodegenFactory.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/compiler/codegen/CodegenFactory.cc b/src/compiler/codegen/CodegenFactory.cc index e1df1a5b45..1b64af2b37 100644 --- a/src/compiler/codegen/CodegenFactory.cc +++ b/src/compiler/codegen/CodegenFactory.cc @@ -273,14 +273,16 @@ void storeValueWide(CompilationUnit* cUnit, RegLocation rlDest, */ void markGCCard(CompilationUnit* cUnit, int valReg, int tgtAddrReg) { -#if defined(TARGET_X86) - UNIMPLEMENTED(WARNING) << "markGCCard"; -#else int regCardBase = oatAllocTemp(cUnit); int regCardNo = oatAllocTemp(cUnit); LIR* branchOver = opCmpImmBranch(cUnit, kCondEq, valReg, 0, NULL); +#if !defined(TARGET_X86) loadWordDisp(cUnit, rSELF, Thread::CardTableOffset().Int32Value(), regCardBase); +#else + newLIR2(cUnit, kX86Mov32RT, regCardBase, + Thread::CardTableOffset().Int32Value()); +#endif opRegRegImm(cUnit, kOpLsr, regCardNo, tgtAddrReg, GC_CARD_SHIFT); storeBaseIndexed(cUnit, regCardBase, regCardNo, regCardBase, 0, kUnsignedByte); @@ -288,7 +290,6 @@ void markGCCard(CompilationUnit* cUnit, int valReg, int tgtAddrReg) branchOver->target = (LIR*)target; oatFreeTemp(cUnit, regCardBase); oatFreeTemp(cUnit, regCardNo); -#endif } /* Utilities to load the current Method* */ |