| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/compiler/code-generator.h" | 5 #include "src/compiler/code-generator.h" |
| 6 | 6 |
| 7 #include "src/compiler/code-generator-impl.h" | 7 #include "src/compiler/code-generator-impl.h" |
| 8 #include "src/compiler/gap-resolver.h" | 8 #include "src/compiler/gap-resolver.h" |
| 9 #include "src/compiler/node-matchers.h" | 9 #include "src/compiler/node-matchers.h" |
| 10 #include "src/compiler/node-properties-inl.h" | 10 #include "src/compiler/node-properties-inl.h" |
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 break; | 382 break; |
| 383 case kIA32Movsd: | 383 case kIA32Movsd: |
| 384 if (instr->HasOutput()) { | 384 if (instr->HasOutput()) { |
| 385 __ movsd(i.OutputDoubleRegister(), i.MemoryOperand()); | 385 __ movsd(i.OutputDoubleRegister(), i.MemoryOperand()); |
| 386 } else { | 386 } else { |
| 387 int index = 0; | 387 int index = 0; |
| 388 Operand operand = i.MemoryOperand(&index); | 388 Operand operand = i.MemoryOperand(&index); |
| 389 __ movsd(operand, i.InputDoubleRegister(index)); | 389 __ movsd(operand, i.InputDoubleRegister(index)); |
| 390 } | 390 } |
| 391 break; | 391 break; |
| 392 case kIA32Movss: |
| 393 if (instr->HasOutput()) { |
| 394 __ movss(i.OutputDoubleRegister(), i.MemoryOperand()); |
| 395 __ cvtss2sd(i.OutputDoubleRegister(), i.OutputDoubleRegister()); |
| 396 } else { |
| 397 int index = 0; |
| 398 Operand operand = i.MemoryOperand(&index); |
| 399 __ cvtsd2ss(xmm0, i.InputDoubleRegister(index)); |
| 400 __ movss(operand, xmm0); |
| 401 } |
| 402 break; |
| 392 case kIA32StoreWriteBarrier: { | 403 case kIA32StoreWriteBarrier: { |
| 393 Register object = i.InputRegister(0); | 404 Register object = i.InputRegister(0); |
| 394 Register index = i.InputRegister(1); | 405 Register index = i.InputRegister(1); |
| 395 Register value = i.InputRegister(2); | 406 Register value = i.InputRegister(2); |
| 396 __ mov(Operand(object, index, times_1, 0), value); | 407 __ mov(Operand(object, index, times_1, 0), value); |
| 397 __ lea(index, Operand(object, index, times_1, 0)); | 408 __ lea(index, Operand(object, index, times_1, 0)); |
| 398 SaveFPRegsMode mode = code_->frame()->DidAllocateDoubleRegisters() | 409 SaveFPRegsMode mode = code_->frame()->DidAllocateDoubleRegisters() |
| 399 ? kSaveFPRegs | 410 ? kSaveFPRegs |
| 400 : kDontSaveFPRegs; | 411 : kDontSaveFPRegs; |
| 401 __ RecordWrite(object, index, value, mode); | 412 __ RecordWrite(object, index, value, mode); |
| (...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 938 } | 949 } |
| 939 | 950 |
| 940 | 951 |
| 941 void CodeGenerator::AddNopForSmiCodeInlining() { __ nop(); } | 952 void CodeGenerator::AddNopForSmiCodeInlining() { __ nop(); } |
| 942 | 953 |
| 943 #undef __ | 954 #undef __ |
| 944 | 955 |
| 945 } | 956 } |
| 946 } | 957 } |
| 947 } // namespace v8::internal::compiler | 958 } // namespace v8::internal::compiler |
| OLD | NEW |