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

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

Issue 853703002: [x86] Avoid memory form of PUSH/CALL for ATOM. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: remove the CALL change to ia32 Created 5 years, 11 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
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/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 7
8 namespace v8 { 8 namespace v8 {
9 namespace internal { 9 namespace internal {
10 namespace compiler { 10 namespace compiler {
(...skipping 923 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 934
935 CallBuffer buffer(zone(), descriptor, frame_state_descriptor); 935 CallBuffer buffer(zone(), descriptor, frame_state_descriptor);
936 936
937 // Compute InstructionOperands for inputs and outputs. 937 // Compute InstructionOperands for inputs and outputs.
938 InitializeCallBuffer(node, &buffer, true, true); 938 InitializeCallBuffer(node, &buffer, true, true);
939 939
940 // Push any stack arguments. 940 // Push any stack arguments.
941 for (NodeVectorRIter input = buffer.pushed_nodes.rbegin(); 941 for (NodeVectorRIter input = buffer.pushed_nodes.rbegin();
942 input != buffer.pushed_nodes.rend(); input++) { 942 input != buffer.pushed_nodes.rend(); input++) {
943 // TODO(titzer): handle pushing double parameters. 943 // TODO(titzer): handle pushing double parameters.
944 Emit(kX64Push, NULL, 944 InstructionOperand* value =
945 g.CanBeImmediate(*input) ? g.UseImmediate(*input) : g.Use(*input)); 945 g.CanBeImmediate(*input)
946 ? g.UseImmediate(*input)
947 : FLAG_intel_atom ? g.UseRegister(*input) : g.Use(*input);
948 Emit(kX64Push, NULL, value);
946 } 949 }
947 950
948 // Select the appropriate opcode based on the call type. 951 // Select the appropriate opcode based on the call type.
949 InstructionCode opcode; 952 InstructionCode opcode;
950 switch (descriptor->kind()) { 953 switch (descriptor->kind()) {
951 case CallDescriptor::kCallCodeObject: { 954 case CallDescriptor::kCallCodeObject: {
952 opcode = kArchCallCodeObject; 955 opcode = kArchCallCodeObject;
953 break; 956 break;
954 } 957 }
955 case CallDescriptor::kCallJSFunction: 958 case CallDescriptor::kCallJSFunction:
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
1311 MachineOperatorBuilder::kFloat64Ceil | 1314 MachineOperatorBuilder::kFloat64Ceil |
1312 MachineOperatorBuilder::kFloat64RoundTruncate | 1315 MachineOperatorBuilder::kFloat64RoundTruncate |
1313 MachineOperatorBuilder::kWord32ShiftIsSafe; 1316 MachineOperatorBuilder::kWord32ShiftIsSafe;
1314 } 1317 }
1315 return MachineOperatorBuilder::kNoFlags; 1318 return MachineOperatorBuilder::kNoFlags;
1316 } 1319 }
1317 1320
1318 } // namespace compiler 1321 } // namespace compiler
1319 } // namespace internal 1322 } // namespace internal
1320 } // namespace v8 1323 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698