OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 "src/compiler/instruction-selector-impl.h" | 5 #include "src/compiler/instruction-selector-impl.h" |
6 #include "src/compiler/node-matchers.h" | 6 #include "src/compiler/node-matchers.h" |
7 #include "src/compiler/node-properties.h" | 7 #include "src/compiler/node-properties.h" |
8 | 8 |
9 namespace v8 { | 9 namespace v8 { |
10 namespace internal { | 10 namespace internal { |
(...skipping 1425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1436 | 1436 |
1437 // Push the arguments to the stack. | 1437 // Push the arguments to the stack. |
1438 int aligned_push_count = static_cast<int>(arguments->size()); | 1438 int aligned_push_count = static_cast<int>(arguments->size()); |
1439 bool pushed_count_uneven = aligned_push_count & 1; | 1439 bool pushed_count_uneven = aligned_push_count & 1; |
1440 // TODO(dcarney): claim and poke probably take small immediates, | 1440 // TODO(dcarney): claim and poke probably take small immediates, |
1441 // loop here or whatever. | 1441 // loop here or whatever. |
1442 // Bump the stack pointer(s). | 1442 // Bump the stack pointer(s). |
1443 if (aligned_push_count > 0) { | 1443 if (aligned_push_count > 0) { |
1444 // TODO(dcarney): it would be better to bump the csp here only | 1444 // TODO(dcarney): it would be better to bump the csp here only |
1445 // and emit paired stores with increment for non c frames. | 1445 // and emit paired stores with increment for non c frames. |
1446 Emit(kArm64Claim, g.NoOutput(), g.TempImmediate(aligned_push_count)); | 1446 Emit(kArm64ClaimForCallArguments, g.NoOutput(), |
| 1447 g.TempImmediate(aligned_push_count)); |
1447 } | 1448 } |
1448 // Move arguments to the stack. | 1449 // Move arguments to the stack. |
1449 { | 1450 { |
1450 int slot = aligned_push_count - 1; | 1451 int slot = aligned_push_count - 1; |
1451 // Emit the uneven pushes. | 1452 // Emit the uneven pushes. |
1452 if (pushed_count_uneven) { | 1453 if (pushed_count_uneven) { |
1453 Node* input = (*arguments)[slot]; | 1454 Node* input = (*arguments)[slot]; |
1454 Emit(kArm64Poke, g.NoOutput(), g.UseRegister(input), | 1455 Emit(kArm64Poke, g.NoOutput(), g.UseRegister(input), |
1455 g.TempImmediate(slot)); | 1456 g.TempImmediate(slot)); |
1456 slot--; | 1457 slot--; |
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1979 MachineOperatorBuilder::kFloat64RoundTruncate | | 1980 MachineOperatorBuilder::kFloat64RoundTruncate | |
1980 MachineOperatorBuilder::kFloat64RoundTiesAway | | 1981 MachineOperatorBuilder::kFloat64RoundTiesAway | |
1981 MachineOperatorBuilder::kWord32ShiftIsSafe | | 1982 MachineOperatorBuilder::kWord32ShiftIsSafe | |
1982 MachineOperatorBuilder::kInt32DivIsSafe | | 1983 MachineOperatorBuilder::kInt32DivIsSafe | |
1983 MachineOperatorBuilder::kUint32DivIsSafe; | 1984 MachineOperatorBuilder::kUint32DivIsSafe; |
1984 } | 1985 } |
1985 | 1986 |
1986 } // namespace compiler | 1987 } // namespace compiler |
1987 } // namespace internal | 1988 } // namespace internal |
1988 } // namespace v8 | 1989 } // namespace v8 |
OLD | NEW |