OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 <limits.h> // For LONG_MIN, LONG_MAX. | 5 #include <limits.h> // For LONG_MIN, LONG_MAX. |
6 | 6 |
7 #if V8_TARGET_ARCH_MIPS64 | 7 #if V8_TARGET_ARCH_MIPS64 |
8 | 8 |
9 #include "src/base/division-by-constant.h" | 9 #include "src/base/division-by-constant.h" |
10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
(...skipping 4341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4352 } else { | 4352 } else { |
4353 Move(v1, v0, src); | 4353 Move(v1, v0, src); |
4354 } | 4354 } |
4355 } | 4355 } |
4356 } | 4356 } |
4357 | 4357 |
4358 | 4358 |
4359 void MacroAssembler::MovToFloatParameters(DoubleRegister src1, | 4359 void MacroAssembler::MovToFloatParameters(DoubleRegister src1, |
4360 DoubleRegister src2) { | 4360 DoubleRegister src2) { |
4361 if (!IsMipsSoftFloatABI) { | 4361 if (!IsMipsSoftFloatABI) { |
4362 const DoubleRegister fparg2 = (kMipsAbi == kN64) ? f13 : f14; | 4362 const DoubleRegister fparg2 = f13; |
4363 if (src2.is(f12)) { | 4363 if (src2.is(f12)) { |
4364 DCHECK(!src1.is(fparg2)); | 4364 DCHECK(!src1.is(fparg2)); |
4365 Move(fparg2, src2); | 4365 Move(fparg2, src2); |
4366 Move(f12, src1); | 4366 Move(f12, src1); |
4367 } else { | 4367 } else { |
4368 Move(f12, src1); | 4368 Move(f12, src1); |
4369 Move(fparg2, src2); | 4369 Move(fparg2, src2); |
4370 } | 4370 } |
4371 } else { | 4371 } else { |
4372 if (kArchEndian == kLittle) { | 4372 if (kArchEndian == kLittle) { |
(...skipping 1570 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5943 Register scratch, | 5943 Register scratch, |
5944 Label* failure) { | 5944 Label* failure) { |
5945 const int kFlatOneByteStringMask = | 5945 const int kFlatOneByteStringMask = |
5946 kIsNotStringMask | kStringEncodingMask | kStringRepresentationMask; | 5946 kIsNotStringMask | kStringEncodingMask | kStringRepresentationMask; |
5947 const int kFlatOneByteStringTag = | 5947 const int kFlatOneByteStringTag = |
5948 kStringTag | kOneByteStringTag | kSeqStringTag; | 5948 kStringTag | kOneByteStringTag | kSeqStringTag; |
5949 And(scratch, type, Operand(kFlatOneByteStringMask)); | 5949 And(scratch, type, Operand(kFlatOneByteStringMask)); |
5950 Branch(failure, ne, scratch, Operand(kFlatOneByteStringTag)); | 5950 Branch(failure, ne, scratch, Operand(kFlatOneByteStringTag)); |
5951 } | 5951 } |
5952 | 5952 |
5953 | 5953 static const int kRegisterPassedArguments = 8; |
5954 static const int kRegisterPassedArguments = (kMipsAbi == kN64) ? 8 : 4; | |
5955 | 5954 |
5956 int MacroAssembler::CalculateStackPassedWords(int num_reg_arguments, | 5955 int MacroAssembler::CalculateStackPassedWords(int num_reg_arguments, |
5957 int num_double_arguments) { | 5956 int num_double_arguments) { |
5958 int stack_passed_words = 0; | 5957 int stack_passed_words = 0; |
5959 num_reg_arguments += 2 * num_double_arguments; | 5958 num_reg_arguments += 2 * num_double_arguments; |
5960 | 5959 |
5961 // O32: Up to four simple arguments are passed in registers a0..a3. | 5960 // O32: Up to four simple arguments are passed in registers a0..a3. |
5962 // N64: Up to eight simple arguments are passed in registers a0..a7. | 5961 // N64: Up to eight simple arguments are passed in registers a0..a7. |
5963 if (num_reg_arguments > kRegisterPassedArguments) { | 5962 if (num_reg_arguments > kRegisterPassedArguments) { |
5964 stack_passed_words += num_reg_arguments - kRegisterPassedArguments; | 5963 stack_passed_words += num_reg_arguments - kRegisterPassedArguments; |
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6487 if (mag.shift > 0) sra(result, result, mag.shift); | 6486 if (mag.shift > 0) sra(result, result, mag.shift); |
6488 srl(at, dividend, 31); | 6487 srl(at, dividend, 31); |
6489 Addu(result, result, Operand(at)); | 6488 Addu(result, result, Operand(at)); |
6490 } | 6489 } |
6491 | 6490 |
6492 | 6491 |
6493 } // namespace internal | 6492 } // namespace internal |
6494 } // namespace v8 | 6493 } // namespace v8 |
6495 | 6494 |
6496 #endif // V8_TARGET_ARCH_MIPS64 | 6495 #endif // V8_TARGET_ARCH_MIPS64 |
OLD | NEW |