| 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_ARM) | 6 #if defined(TARGET_ARCH_ARM) |
| 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 1263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1274 } | 1274 } |
| 1275 __ Drop(1); // Pop function object. | 1275 __ Drop(1); // Pop function object. |
| 1276 __ Pop(R0); | 1276 __ Pop(R0); |
| 1277 // R0: new object | 1277 // R0: new object |
| 1278 // Restore the frame pointer. | 1278 // Restore the frame pointer. |
| 1279 __ LeaveStubFrame(true); | 1279 __ LeaveStubFrame(true); |
| 1280 __ Ret(); | 1280 __ Ret(); |
| 1281 } | 1281 } |
| 1282 | 1282 |
| 1283 | 1283 |
| 1284 // The target function was not found, so invoke method | 1284 // Called for invoking "dynamic noSuchMethod(Invocation invocation)" function |
| 1285 // "dynamic noSuchMethod(Invocation invocation)". | 1285 // from the entry code of a dart function after an error in passed argument |
| 1286 // name or number is detected. |
| 1287 // Input parameters: |
| 1288 // LR : return address. |
| 1289 // SP : address of last argument. |
| 1286 // R5: inline cache data object. | 1290 // R5: inline cache data object. |
| 1287 // R4: arguments descriptor array. | 1291 // R4: arguments descriptor array. |
| 1288 void StubCode::GenerateCallNoSuchMethodFunctionStub(Assembler* assembler) { | 1292 void StubCode::GenerateCallNoSuchMethodFunctionStub(Assembler* assembler) { |
| 1289 __ EnterStubFrame(); | 1293 __ EnterStubFrame(); |
| 1290 | 1294 |
| 1291 // Load the receiver. | 1295 // Load the receiver. |
| 1292 __ ldr(R2, FieldAddress(R4, ArgumentsDescriptor::count_offset())); | 1296 __ ldr(R2, FieldAddress(R4, ArgumentsDescriptor::count_offset())); |
| 1293 __ add(IP, FP, ShifterOperand(R2, LSL, 1)); // R2 is Smi. | 1297 __ add(IP, FP, ShifterOperand(R2, LSL, 1)); // R2 is Smi. |
| 1294 __ ldr(R6, Address(IP, kParamEndSlotFromFp * kWordSize)); | 1298 __ ldr(R6, Address(IP, kParamEndSlotFromFp * kWordSize)); |
| 1295 | 1299 |
| (...skipping 750 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2046 __ Bind(&reference_compare); | 2050 __ Bind(&reference_compare); |
| 2047 __ cmp(left, ShifterOperand(right)); | 2051 __ cmp(left, ShifterOperand(right)); |
| 2048 __ Bind(&done); | 2052 __ Bind(&done); |
| 2049 __ PopList((1 << R0) | (1 << R1) | (1 << R2)); | 2053 __ PopList((1 << R0) | (1 << R1) | (1 << R2)); |
| 2050 __ Ret(); | 2054 __ Ret(); |
| 2051 } | 2055 } |
| 2052 | 2056 |
| 2053 } // namespace dart | 2057 } // namespace dart |
| 2054 | 2058 |
| 2055 #endif // defined TARGET_ARCH_ARM | 2059 #endif // defined TARGET_ARCH_ARM |
| OLD | NEW |