| Index: src/mips64/lithium-gap-resolver-mips64.cc
|
| diff --git a/src/mips/lithium-gap-resolver-mips.cc b/src/mips64/lithium-gap-resolver-mips64.cc
|
| similarity index 87%
|
| copy from src/mips/lithium-gap-resolver-mips.cc
|
| copy to src/mips64/lithium-gap-resolver-mips64.cc
|
| index aa77b94685e696f4ff82bafa95c4e5304b778428..aa1c28c4de3356136685ddad2828a3ef273589be 100644
|
| --- a/src/mips/lithium-gap-resolver-mips.cc
|
| +++ b/src/mips64/lithium-gap-resolver-mips64.cc
|
| @@ -4,8 +4,8 @@
|
|
|
| #include "src/v8.h"
|
|
|
| -#include "src/mips/lithium-codegen-mips.h"
|
| -#include "src/mips/lithium-gap-resolver-mips.h"
|
| +#include "src/mips64/lithium-codegen-mips64.h"
|
| +#include "src/mips64/lithium-gap-resolver-mips64.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
| @@ -147,7 +147,7 @@ void LGapResolver::BreakCycle(int index) {
|
| if (source->IsRegister()) {
|
| __ mov(kLithiumScratchReg, cgen_->ToRegister(source));
|
| } else if (source->IsStackSlot()) {
|
| - __ lw(kLithiumScratchReg, cgen_->ToMemOperand(source));
|
| + __ ld(kLithiumScratchReg, cgen_->ToMemOperand(source));
|
| } else if (source->IsDoubleRegister()) {
|
| __ mov_d(kLithiumScratchDouble, cgen_->ToDoubleRegister(source));
|
| } else if (source->IsDoubleStackSlot()) {
|
| @@ -168,7 +168,7 @@ void LGapResolver::RestoreValue() {
|
| if (saved_destination_->IsRegister()) {
|
| __ mov(cgen_->ToRegister(saved_destination_), kLithiumScratchReg);
|
| } else if (saved_destination_->IsStackSlot()) {
|
| - __ sw(kLithiumScratchReg, cgen_->ToMemOperand(saved_destination_));
|
| + __ sd(kLithiumScratchReg, cgen_->ToMemOperand(saved_destination_));
|
| } else if (saved_destination_->IsDoubleRegister()) {
|
| __ mov_d(cgen_->ToDoubleRegister(saved_destination_),
|
| kLithiumScratchDouble);
|
| @@ -197,12 +197,12 @@ void LGapResolver::EmitMove(int index) {
|
| __ mov(cgen_->ToRegister(destination), source_register);
|
| } else {
|
| ASSERT(destination->IsStackSlot());
|
| - __ sw(source_register, cgen_->ToMemOperand(destination));
|
| + __ sd(source_register, cgen_->ToMemOperand(destination));
|
| }
|
| } else if (source->IsStackSlot()) {
|
| MemOperand source_operand = cgen_->ToMemOperand(source);
|
| if (destination->IsRegister()) {
|
| - __ lw(cgen_->ToRegister(destination), source_operand);
|
| + __ ld(cgen_->ToRegister(destination), source_operand);
|
| } else {
|
| ASSERT(destination->IsStackSlot());
|
| MemOperand destination_operand = cgen_->ToMemOperand(destination);
|
| @@ -212,15 +212,15 @@ void LGapResolver::EmitMove(int index) {
|
| // Therefore we can't use 'at'. It is OK if the read from the source
|
| // destroys 'at', since that happens before the value is read.
|
| // This uses only a single reg of the double reg-pair.
|
| - __ lwc1(kLithiumScratchDouble, source_operand);
|
| - __ swc1(kLithiumScratchDouble, destination_operand);
|
| + __ ldc1(kLithiumScratchDouble, source_operand);
|
| + __ sdc1(kLithiumScratchDouble, destination_operand);
|
| } else {
|
| - __ lw(at, source_operand);
|
| - __ sw(at, destination_operand);
|
| + __ ld(at, source_operand);
|
| + __ sd(at, destination_operand);
|
| }
|
| } else {
|
| - __ lw(kLithiumScratchReg, source_operand);
|
| - __ sw(kLithiumScratchReg, destination_operand);
|
| + __ ld(kLithiumScratchReg, source_operand);
|
| + __ sd(kLithiumScratchReg, destination_operand);
|
| }
|
| }
|
|
|
| @@ -228,12 +228,12 @@ void LGapResolver::EmitMove(int index) {
|
| LConstantOperand* constant_source = LConstantOperand::cast(source);
|
| if (destination->IsRegister()) {
|
| Register dst = cgen_->ToRegister(destination);
|
| - Representation r = cgen_->IsSmi(constant_source)
|
| - ? Representation::Smi() : Representation::Integer32();
|
| - if (cgen_->IsInteger32(constant_source)) {
|
| - __ li(dst, Operand(cgen_->ToRepresentation(constant_source, r)));
|
| + if (cgen_->IsSmi(constant_source)) {
|
| + __ li(dst, Operand(cgen_->ToSmi(constant_source)));
|
| + } else if (cgen_->IsInteger32(constant_source)) {
|
| + __ li(dst, Operand(cgen_->ToInteger32(constant_source)));
|
| } else {
|
| - __ li(dst, cgen_->ToHandle(constant_source));
|
| + __ li(dst, cgen_->ToHandle(constant_source));
|
| }
|
| } else if (destination->IsDoubleRegister()) {
|
| DoubleRegister result = cgen_->ToDoubleRegister(destination);
|
| @@ -242,15 +242,16 @@ void LGapResolver::EmitMove(int index) {
|
| } else {
|
| ASSERT(destination->IsStackSlot());
|
| ASSERT(!in_cycle_); // Constant moves happen after all cycles are gone.
|
| - Representation r = cgen_->IsSmi(constant_source)
|
| - ? Representation::Smi() : Representation::Integer32();
|
| - if (cgen_->IsInteger32(constant_source)) {
|
| - __ li(kLithiumScratchReg,
|
| - Operand(cgen_->ToRepresentation(constant_source, r)));
|
| + if (cgen_->IsSmi(constant_source)) {
|
| + __ li(kLithiumScratchReg, Operand(cgen_->ToSmi(constant_source)));
|
| + __ sd(kLithiumScratchReg, cgen_->ToMemOperand(destination));
|
| + } else if (cgen_->IsInteger32(constant_source)) {
|
| + __ li(kLithiumScratchReg, Operand(cgen_->ToInteger32(constant_source)));
|
| + __ sd(kLithiumScratchReg, cgen_->ToMemOperand(destination));
|
| } else {
|
| __ li(kLithiumScratchReg, cgen_->ToHandle(constant_source));
|
| + __ sd(kLithiumScratchReg, cgen_->ToMemOperand(destination));
|
| }
|
| - __ sw(kLithiumScratchReg, cgen_->ToMemOperand(destination));
|
| }
|
|
|
| } else if (source->IsDoubleRegister()) {
|
|
|