| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/globals.h" | 5 #include "vm/globals.h" |
| 6 #if defined(TARGET_ARCH_MIPS) | 6 #if defined(TARGET_ARCH_MIPS) |
| 7 | 7 |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/code_generator.h" | 9 #include "vm/code_generator.h" |
| 10 #include "vm/compiler.h" | 10 #include "vm/compiler.h" |
| (...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 435 | 435 |
| 436 // Remove the stub frame. | 436 // Remove the stub frame. |
| 437 __ LeaveStubFrameAndReturn(T0); | 437 __ LeaveStubFrameAndReturn(T0); |
| 438 } | 438 } |
| 439 | 439 |
| 440 | 440 |
| 441 // Input parameters: | 441 // Input parameters: |
| 442 // A1: Smi-tagged argument count, may be zero. | 442 // A1: Smi-tagged argument count, may be zero. |
| 443 // FP[kParamEndSlotFromFp + 1]: Last argument. | 443 // FP[kParamEndSlotFromFp + 1]: Last argument. |
| 444 static void PushArgumentsArray(Assembler* assembler) { | 444 static void PushArgumentsArray(Assembler* assembler) { |
| 445 StubCode* stub_code = Isolate::Current()->stub_code(); |
| 445 __ TraceSimMsg("PushArgumentsArray"); | 446 __ TraceSimMsg("PushArgumentsArray"); |
| 446 // Allocate array to store arguments of caller. | 447 // Allocate array to store arguments of caller. |
| 447 __ LoadImmediate(A0, reinterpret_cast<intptr_t>(Object::null())); | 448 __ LoadImmediate(A0, reinterpret_cast<intptr_t>(Object::null())); |
| 448 // A0: Null element type for raw Array. | 449 // A0: Null element type for raw Array. |
| 449 // A1: Smi-tagged argument count, may be zero. | 450 // A1: Smi-tagged argument count, may be zero. |
| 450 __ BranchLink(&StubCode::AllocateArrayLabel()); | 451 __ BranchLink(&stub_code->AllocateArrayLabel()); |
| 451 __ TraceSimMsg("PushArgumentsArray return"); | 452 __ TraceSimMsg("PushArgumentsArray return"); |
| 452 // V0: newly allocated array. | 453 // V0: newly allocated array. |
| 453 // A1: Smi-tagged argument count, may be zero (was preserved by the stub). | 454 // A1: Smi-tagged argument count, may be zero (was preserved by the stub). |
| 454 __ Push(V0); // Array is in V0 and on top of stack. | 455 __ Push(V0); // Array is in V0 and on top of stack. |
| 455 __ sll(T1, A1, 1); | 456 __ sll(T1, A1, 1); |
| 456 __ addu(T1, FP, T1); | 457 __ addu(T1, FP, T1); |
| 457 __ AddImmediate(T1, kParamEndSlotFromFp * kWordSize); | 458 __ AddImmediate(T1, kParamEndSlotFromFp * kWordSize); |
| 458 // T1: address of first argument on stack. | 459 // T1: address of first argument on stack. |
| 459 // T2: address of first argument in array. | 460 // T2: address of first argument in array. |
| 460 | 461 |
| (...skipping 1601 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2062 const Register right = T0; | 2063 const Register right = T0; |
| 2063 __ lw(left, Address(SP, 1 * kWordSize)); | 2064 __ lw(left, Address(SP, 1 * kWordSize)); |
| 2064 __ lw(right, Address(SP, 0 * kWordSize)); | 2065 __ lw(right, Address(SP, 0 * kWordSize)); |
| 2065 GenerateIdenticalWithNumberCheckStub(assembler, left, right, temp1, temp2); | 2066 GenerateIdenticalWithNumberCheckStub(assembler, left, right, temp1, temp2); |
| 2066 __ Ret(); | 2067 __ Ret(); |
| 2067 } | 2068 } |
| 2068 | 2069 |
| 2069 } // namespace dart | 2070 } // namespace dart |
| 2070 | 2071 |
| 2071 #endif // defined TARGET_ARCH_MIPS | 2072 #endif // defined TARGET_ARCH_MIPS |
| OLD | NEW |