diff options
| author | 2012-03-16 08:42:29 -0700 | |
|---|---|---|
| committer | 2012-03-17 16:52:32 -0700 | |
| commit | 239c4e72b5a69754e1d6879be5ba1f85150655c1 (patch) | |
| tree | 45404157d7a684a739d218dc5a9ee3c0a6cdab19 /src/compiler/codegen/MethodCodegenDriver.cc | |
| parent | 8ed14528fb70a9ba7cc5e471317d08dc629cbc23 (diff) | |
Loop detection, improved reg allocation
Detect loops and loop nesting depth, and use the latter to
weight register uses (which are then used to determine which
registers to promote).
Also:
o Fixed typo that prevented squashing of useless fp reg copies
o Rescheduled array access checks to hide latency of limit load.
o Add basic-block optimization pass to remove duplicate range
checks.
o Fixed bug that prevented recognition of redundant null
checks following iput-wide and aput-wide.
Change-Id: Icfbae39e89b1d14b8703ad6bbb0b29c0635fed1e
Diffstat (limited to 'src/compiler/codegen/MethodCodegenDriver.cc')
| -rw-r--r-- | src/compiler/codegen/MethodCodegenDriver.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/compiler/codegen/MethodCodegenDriver.cc b/src/compiler/codegen/MethodCodegenDriver.cc index 64f55c6b02..45a0c75afb 100644 --- a/src/compiler/codegen/MethodCodegenDriver.cc +++ b/src/compiler/codegen/MethodCodegenDriver.cc @@ -757,9 +757,12 @@ void handleExtendedMethodMIR(CompilationUnit* cUnit, MIR* mir) newLIR1(cUnit, kPseudoSSARep, (int) ssaString); break; } - case kMirOpCopy: - UNIMPLEMENTED(FATAL) << "Need kMirOpCopy"; + case kMirOpCopy: { + RegLocation rlSrc = oatGetSrc(cUnit, mir, 0); + RegLocation rlDest = oatGetDest(cUnit, mir, 0); + storeValue(cUnit, rlDest, rlSrc); break; + } default: break; } |