summaryrefslogtreecommitdiffstats
path: root/compiler/optimizing/nodes.h
diff options
context:
space:
mode:
authorNicolas Geoffray <ngeoffray@google.com>2015-01-21 12:43:10 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-01-21 12:43:11 +0000
commit4d2c611bf17ff309abfa152e56c0b98a21ec8787 (patch)
treedea746cb0f03b7d7815eac972ff4d0e4f0c39515 /compiler/optimizing/nodes.h
parent1272d4272676005acfcbde25b4eddca64463612b (diff)
parentc399fdc442db82dfda66e6c25518872ab0f1d24f (diff)
downloadandroid_art-4d2c611bf17ff309abfa152e56c0b98a21ec8787.tar.gz
android_art-4d2c611bf17ff309abfa152e56c0b98a21ec8787.tar.bz2
android_art-4d2c611bf17ff309abfa152e56c0b98a21ec8787.zip
Merge "Revert "Fully support pairs in the register allocator.""
Diffstat (limited to 'compiler/optimizing/nodes.h')
-rw-r--r--compiler/optimizing/nodes.h25
1 files changed, 9 insertions, 16 deletions
diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h
index dc8a7ee7cd..fa51f27f0a 100644
--- a/compiler/optimizing/nodes.h
+++ b/compiler/optimizing/nodes.h
@@ -2802,25 +2802,18 @@ class HParallelMove : public HTemplateInstruction<0> {
AddMove(source.ToLow(), destination.ToLow(), instruction);
AddMove(source.ToHigh(), destination.ToHigh(), nullptr);
} else if (source.IsPair()) {
- DCHECK(destination.IsDoubleStackSlot()) << destination;
+ DCHECK(destination.IsDoubleStackSlot());
AddMove(source.ToLow(), Location::StackSlot(destination.GetStackIndex()), instruction);
AddMove(source.ToHigh(), Location::StackSlot(destination.GetHighStackIndex(4)), nullptr);
} else if (destination.IsPair()) {
- if (source.IsConstant()) {
- // We put the same constant in the move. The code generator will handle which
- // low or high part to use.
- AddMove(source, destination.ToLow(), instruction);
- AddMove(source, destination.ToHigh(), nullptr);
- } else {
- DCHECK(source.IsDoubleStackSlot());
- AddMove(Location::StackSlot(source.GetStackIndex()), destination.ToLow(), instruction);
- // TODO: rewrite GetHighStackIndex to not require a word size. It's supposed to
- // always be 4.
- static constexpr int kHighOffset = 4;
- AddMove(Location::StackSlot(source.GetHighStackIndex(kHighOffset)),
- destination.ToHigh(),
- nullptr);
- }
+ DCHECK(source.IsDoubleStackSlot());
+ AddMove(Location::StackSlot(source.GetStackIndex()), destination.ToLow(), instruction);
+ // TODO: rewrite GetHighStackIndex to not require a word size. It's supposed to
+ // always be 4.
+ static constexpr int kHighOffset = 4;
+ AddMove(Location::StackSlot(source.GetHighStackIndex(kHighOffset)),
+ destination.ToHigh(),
+ nullptr);
} else {
if (kIsDebugBuild) {
if (instruction != nullptr) {