Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(228)

Side by Side Diff: src/compiler/arm64/instruction-selector-arm64.cc

Issue 2833463002: [arm64] Support passing more than eight arguments to C functions (Closed)
Patch Set: [arm64] Support passing more than eight arguments to C functions Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/arm64/code-generator-arm64.cc ('k') | src/compiler/raw-machine-assembler.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/assembler-inl.h" 5 #include "src/assembler-inl.h"
6 #include "src/compiler/instruction-selector-impl.h" 6 #include "src/compiler/instruction-selector-impl.h"
7 #include "src/compiler/node-matchers.h" 7 #include "src/compiler/node-matchers.h"
8 #include "src/compiler/node-properties.h" 8 #include "src/compiler/node-properties.h"
9 9
10 namespace v8 { 10 namespace v8 {
(...skipping 1758 matching lines...) Expand 10 before | Expand all | Expand 10 after
1769 bool always_claim = to_native_stack != from_native_stack; 1769 bool always_claim = to_native_stack != from_native_stack;
1770 1770
1771 int claim_count = static_cast<int>(arguments->size()); 1771 int claim_count = static_cast<int>(arguments->size());
1772 int slot = claim_count - 1; 1772 int slot = claim_count - 1;
1773 // Bump the stack pointer(s). 1773 // Bump the stack pointer(s).
1774 if (claim_count > 0 || always_claim) { 1774 if (claim_count > 0 || always_claim) {
1775 // TODO(titzer): claim and poke probably take small immediates. 1775 // TODO(titzer): claim and poke probably take small immediates.
1776 // TODO(titzer): it would be better to bump the csp here only 1776 // TODO(titzer): it would be better to bump the csp here only
1777 // and emit paired stores with increment for non c frames. 1777 // and emit paired stores with increment for non c frames.
1778 ArchOpcode claim = to_native_stack ? kArm64ClaimCSP : kArm64ClaimJSSP; 1778 ArchOpcode claim = to_native_stack ? kArm64ClaimCSP : kArm64ClaimJSSP;
1779 // Claim(0) isn't a nop if there is a mismatch between CSP and JSSP. 1779 // ClaimJSSP(0) or ClaimCSP(0) isn't a nop if there is a mismatch between
1780 // CSP and JSSP.
1780 Emit(claim, g.NoOutput(), g.TempImmediate(claim_count)); 1781 Emit(claim, g.NoOutput(), g.TempImmediate(claim_count));
1781 } 1782 }
1782 1783
1783 // Poke the arguments into the stack. 1784 // Poke the arguments into the stack.
1784 ArchOpcode poke = to_native_stack ? kArm64PokeCSP : kArm64PokeJSSP; 1785 ArchOpcode poke = to_native_stack ? kArm64PokeCSP : kArm64PokeJSSP;
1785 while (slot >= 0) { 1786 while (slot >= 0) {
1786 Emit(poke, g.NoOutput(), g.UseRegister((*arguments)[slot].node()), 1787 Emit(poke, g.NoOutput(), g.UseRegister((*arguments)[slot].node()),
1787 g.TempImmediate(slot)); 1788 g.TempImmediate(slot));
1788 slot--; 1789 slot--;
1789 // TODO(ahaas): Poke arguments in pairs if two subsequent arguments have the 1790 // TODO(ahaas): Poke arguments in pairs if two subsequent arguments have the
(...skipping 1075 matching lines...) Expand 10 before | Expand all | Expand 10 after
2865 // static 2866 // static
2866 MachineOperatorBuilder::AlignmentRequirements 2867 MachineOperatorBuilder::AlignmentRequirements
2867 InstructionSelector::AlignmentRequirements() { 2868 InstructionSelector::AlignmentRequirements() {
2868 return MachineOperatorBuilder::AlignmentRequirements:: 2869 return MachineOperatorBuilder::AlignmentRequirements::
2869 FullUnalignedAccessSupport(); 2870 FullUnalignedAccessSupport();
2870 } 2871 }
2871 2872
2872 } // namespace compiler 2873 } // namespace compiler
2873 } // namespace internal 2874 } // namespace internal
2874 } // namespace v8 2875 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/arm64/code-generator-arm64.cc ('k') | src/compiler/raw-machine-assembler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698