diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2015-01-21 12:43:10 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-01-21 12:43:11 +0000 |
commit | 4d2c611bf17ff309abfa152e56c0b98a21ec8787 (patch) | |
tree | dea746cb0f03b7d7815eac972ff4d0e4f0c39515 /compiler/optimizing/nodes.h | |
parent | 1272d4272676005acfcbde25b4eddca64463612b (diff) | |
parent | c399fdc442db82dfda66e6c25518872ab0f1d24f (diff) | |
download | android_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.h | 25 |
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) { |