| 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 1435 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1446 } | 1446 } |
| 1447 __ lw(V0, Address(SP, (num_slots - 1) * kWordSize)); // Pop function object. | 1447 __ lw(V0, Address(SP, (num_slots - 1) * kWordSize)); // Pop function object. |
| 1448 __ addiu(SP, SP, Immediate(num_slots * kWordSize)); | 1448 __ addiu(SP, SP, Immediate(num_slots * kWordSize)); |
| 1449 | 1449 |
| 1450 // V0: new object | 1450 // V0: new object |
| 1451 // Restore the frame pointer. | 1451 // Restore the frame pointer. |
| 1452 __ LeaveStubFrameAndReturn(RA, true); | 1452 __ LeaveStubFrameAndReturn(RA, true); |
| 1453 } | 1453 } |
| 1454 | 1454 |
| 1455 | 1455 |
| 1456 // The target function was not found, so invoke method | 1456 // Called for invoking "dynamic noSuchMethod(Invocation invocation)" function |
| 1457 // "dynamic noSuchMethod(Invocation invocation)". | 1457 // from the entry code of a dart function after an error in passed argument |
| 1458 // name or number is detected. |
| 1459 // Input parameters: |
| 1460 // RA : return address. |
| 1461 // SP : address of last argument. |
| 1458 // S5: inline cache data object. | 1462 // S5: inline cache data object. |
| 1459 // S4: arguments descriptor array. | 1463 // S4: arguments descriptor array. |
| 1460 void StubCode::GenerateCallNoSuchMethodFunctionStub(Assembler* assembler) { | 1464 void StubCode::GenerateCallNoSuchMethodFunctionStub(Assembler* assembler) { |
| 1461 __ EnterStubFrame(); | 1465 __ EnterStubFrame(); |
| 1462 | 1466 |
| 1463 // Load the receiver. | 1467 // Load the receiver. |
| 1464 __ lw(A1, FieldAddress(S4, ArgumentsDescriptor::count_offset())); | 1468 __ lw(A1, FieldAddress(S4, ArgumentsDescriptor::count_offset())); |
| 1465 __ sll(TMP, A1, 1); // A1 is a Smi. | 1469 __ sll(TMP, A1, 1); // A1 is a Smi. |
| 1466 __ addu(TMP, FP, TMP); | 1470 __ addu(TMP, FP, TMP); |
| 1467 __ lw(T6, Address(TMP, kParamEndSlotFromFp * kWordSize)); | 1471 __ lw(T6, Address(TMP, kParamEndSlotFromFp * kWordSize)); |
| (...skipping 849 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2317 __ lw(left, Address(SP, 1 * kWordSize)); | 2321 __ lw(left, Address(SP, 1 * kWordSize)); |
| 2318 __ lw(temp2, Address(SP, 2 * kWordSize)); | 2322 __ lw(temp2, Address(SP, 2 * kWordSize)); |
| 2319 __ lw(temp1, Address(SP, 3 * kWordSize)); | 2323 __ lw(temp1, Address(SP, 3 * kWordSize)); |
| 2320 __ Ret(); | 2324 __ Ret(); |
| 2321 __ delay_slot()->addiu(SP, SP, Immediate(4 * kWordSize)); | 2325 __ delay_slot()->addiu(SP, SP, Immediate(4 * kWordSize)); |
| 2322 } | 2326 } |
| 2323 | 2327 |
| 2324 } // namespace dart | 2328 } // namespace dart |
| 2325 | 2329 |
| 2326 #endif // defined TARGET_ARCH_MIPS | 2330 #endif // defined TARGET_ARCH_MIPS |
| OLD | NEW |