| 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 #include "src/v8.h" | 7 #include "src/v8.h" |
| 8 | 8 |
| 9 #if V8_TARGET_ARCH_MIPS64 | 9 #if V8_TARGET_ARCH_MIPS64 |
| 10 | 10 |
| (...skipping 3343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3354 dsrl32(scratch, scratch, 0); | 3354 dsrl32(scratch, scratch, 0); |
| 3355 pop(dst); | 3355 pop(dst); |
| 3356 dsrl32(dst, dst, 0); | 3356 dsrl32(dst, dst, 0); |
| 3357 dsll32(dst, dst, 0); | 3357 dsll32(dst, dst, 0); |
| 3358 or_(dst, dst, scratch); | 3358 or_(dst, dst, scratch); |
| 3359 } | 3359 } |
| 3360 | 3360 |
| 3361 | 3361 |
| 3362 void MacroAssembler::DebugBreak() { | 3362 void MacroAssembler::DebugBreak() { |
| 3363 PrepareCEntryArgs(0); | 3363 PrepareCEntryArgs(0); |
| 3364 PrepareCEntryFunction(ExternalReference(Runtime::kDebugBreak, isolate())); | 3364 PrepareCEntryFunction( |
| 3365 ExternalReference(Runtime::kHandleDebuggerStatement, isolate())); |
| 3365 CEntryStub ces(isolate(), 1); | 3366 CEntryStub ces(isolate(), 1); |
| 3366 DCHECK(AllowThisStubCall(&ces)); | 3367 DCHECK(AllowThisStubCall(&ces)); |
| 3367 Call(ces.GetCode(), RelocInfo::DEBUGGER_STATEMENT); | 3368 Call(ces.GetCode(), RelocInfo::DEBUGGER_STATEMENT); |
| 3368 } | 3369 } |
| 3369 | 3370 |
| 3370 | 3371 |
| 3371 // --------------------------------------------------------------------------- | 3372 // --------------------------------------------------------------------------- |
| 3372 // Exception handling. | 3373 // Exception handling. |
| 3373 | 3374 |
| 3374 void MacroAssembler::PushStackHandler() { | 3375 void MacroAssembler::PushStackHandler() { |
| (...skipping 1314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4689 xor_(scratch, left, scratch); // Original right. | 4690 xor_(scratch, left, scratch); // Original right. |
| 4690 and_(overflow_dst, scratch, overflow_dst); | 4691 and_(overflow_dst, scratch, overflow_dst); |
| 4691 } else { | 4692 } else { |
| 4692 dsubu(dst, left, right); | 4693 dsubu(dst, left, right); |
| 4693 xor_(overflow_dst, dst, left); | 4694 xor_(overflow_dst, dst, left); |
| 4694 xor_(scratch, left, right); | 4695 xor_(scratch, left, right); |
| 4695 and_(overflow_dst, scratch, overflow_dst); | 4696 and_(overflow_dst, scratch, overflow_dst); |
| 4696 } | 4697 } |
| 4697 } | 4698 } |
| 4698 | 4699 |
| 4699 void MacroAssembler::CallRuntime(const Runtime::Function* f, | 4700 void MacroAssembler::CallRuntime(const Runtime::Function* f, int num_arguments, |
| 4700 int num_arguments, | 4701 SaveFPRegsMode save_doubles, |
| 4701 SaveFPRegsMode save_doubles) { | 4702 BranchDelaySlot bd) { |
| 4702 // All parameters are on the stack. v0 has the return value after call. | 4703 // All parameters are on the stack. v0 has the return value after call. |
| 4703 | 4704 |
| 4704 // If the expected number of arguments of the runtime function is | 4705 // If the expected number of arguments of the runtime function is |
| 4705 // constant, we check that the actual number of arguments match the | 4706 // constant, we check that the actual number of arguments match the |
| 4706 // expectation. | 4707 // expectation. |
| 4707 CHECK(f->nargs < 0 || f->nargs == num_arguments); | 4708 CHECK(f->nargs < 0 || f->nargs == num_arguments); |
| 4708 | 4709 |
| 4709 // TODO(1236192): Most runtime routines don't need the number of | 4710 // TODO(1236192): Most runtime routines don't need the number of |
| 4710 // arguments passed in because it is constant. At some point we | 4711 // arguments passed in because it is constant. At some point we |
| 4711 // should remove this need and make the runtime routine entry code | 4712 // should remove this need and make the runtime routine entry code |
| 4712 // smarter. | 4713 // smarter. |
| 4713 PrepareCEntryArgs(num_arguments); | 4714 PrepareCEntryArgs(num_arguments); |
| 4714 PrepareCEntryFunction(ExternalReference(f, isolate())); | 4715 PrepareCEntryFunction(ExternalReference(f, isolate())); |
| 4715 CEntryStub stub(isolate(), 1, save_doubles); | 4716 CEntryStub stub(isolate(), 1, save_doubles); |
| 4716 CallStub(&stub); | 4717 CallStub(&stub, TypeFeedbackId::None(), al, zero_reg, Operand(zero_reg), bd); |
| 4717 } | 4718 } |
| 4718 | 4719 |
| 4719 | 4720 |
| 4720 void MacroAssembler::CallExternalReference(const ExternalReference& ext, | 4721 void MacroAssembler::CallExternalReference(const ExternalReference& ext, |
| 4721 int num_arguments, | 4722 int num_arguments, |
| 4722 BranchDelaySlot bd) { | 4723 BranchDelaySlot bd) { |
| 4723 PrepareCEntryArgs(num_arguments); | 4724 PrepareCEntryArgs(num_arguments); |
| 4724 PrepareCEntryFunction(ext); | 4725 PrepareCEntryFunction(ext); |
| 4725 | 4726 |
| 4726 CEntryStub stub(isolate(), 1); | 4727 CEntryStub stub(isolate(), 1); |
| (...skipping 1618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6345 if (mag.shift > 0) sra(result, result, mag.shift); | 6346 if (mag.shift > 0) sra(result, result, mag.shift); |
| 6346 srl(at, dividend, 31); | 6347 srl(at, dividend, 31); |
| 6347 Addu(result, result, Operand(at)); | 6348 Addu(result, result, Operand(at)); |
| 6348 } | 6349 } |
| 6349 | 6350 |
| 6350 | 6351 |
| 6351 } // namespace internal | 6352 } // namespace internal |
| 6352 } // namespace v8 | 6353 } // namespace v8 |
| 6353 | 6354 |
| 6354 #endif // V8_TARGET_ARCH_MIPS64 | 6355 #endif // V8_TARGET_ARCH_MIPS64 |
| OLD | NEW |