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

Side by Side Diff: src/compiler/linkage-impl.h

Issue 470593002: Unify MachineType and RepType. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « src/compiler/js-generic-lowering.cc ('k') | src/compiler/machine-operator.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 #ifndef V8_COMPILER_LINKAGE_IMPL_H_ 5 #ifndef V8_COMPILER_LINKAGE_IMPL_H_
6 #define V8_COMPILER_LINKAGE_IMPL_H_ 6 #define V8_COMPILER_LINKAGE_IMPL_H_
7 7
8 namespace v8 { 8 namespace v8 {
9 namespace internal { 9 namespace internal {
10 namespace compiler { 10 namespace compiler {
11 11
12 class LinkageHelper { 12 class LinkageHelper {
13 public: 13 public:
14 static LinkageLocation TaggedStackSlot(int index) { 14 static LinkageLocation TaggedStackSlot(int index) {
15 DCHECK(index < 0); 15 DCHECK(index < 0);
16 return LinkageLocation(kMachineTagged, index); 16 return LinkageLocation(kMachAnyTagged, index);
17 } 17 }
18 18
19 static LinkageLocation TaggedRegisterLocation(Register reg) { 19 static LinkageLocation TaggedRegisterLocation(Register reg) {
20 return LinkageLocation(kMachineTagged, Register::ToAllocationIndex(reg)); 20 return LinkageLocation(kMachAnyTagged, Register::ToAllocationIndex(reg));
21 } 21 }
22 22
23 static inline LinkageLocation WordRegisterLocation(Register reg) { 23 static inline LinkageLocation WordRegisterLocation(Register reg) {
24 return LinkageLocation(MachineOperatorBuilder::pointer_rep(), 24 return LinkageLocation(MachineOperatorBuilder::pointer_rep(),
25 Register::ToAllocationIndex(reg)); 25 Register::ToAllocationIndex(reg));
26 } 26 }
27 27
28 static LinkageLocation UnconstrainedRegister(MachineType rep) { 28 static LinkageLocation UnconstrainedRegister(MachineType rep) {
29 return LinkageLocation(rep, LinkageLocation::ANY_REGISTER); 29 return LinkageLocation(rep, LinkageLocation::ANY_REGISTER);
30 } 30 }
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 locations[index++] = 91 locations[index++] =
92 TaggedRegisterLocation(LinkageTraits::ReturnValueReg()); 92 TaggedRegisterLocation(LinkageTraits::ReturnValueReg());
93 } 93 }
94 if (return_count > 1) { 94 if (return_count > 1) {
95 locations[index++] = 95 locations[index++] =
96 TaggedRegisterLocation(LinkageTraits::ReturnValue2Reg()); 96 TaggedRegisterLocation(LinkageTraits::ReturnValue2Reg());
97 } 97 }
98 98
99 DCHECK_LE(return_count, 2); 99 DCHECK_LE(return_count, 2);
100 100
101 locations[index++] = UnconstrainedRegister(kMachineTagged); // CEntryStub 101 locations[index++] = UnconstrainedRegister(kMachAnyTagged); // CEntryStub
102 102
103 for (int i = 0; i < parameter_count; i++) { 103 for (int i = 0; i < parameter_count; i++) {
104 // All parameters to runtime calls go on the stack. 104 // All parameters to runtime calls go on the stack.
105 int spill_slot_index = i - parameter_count; 105 int spill_slot_index = i - parameter_count;
106 locations[index++] = TaggedStackSlot(spill_slot_index); 106 locations[index++] = TaggedStackSlot(spill_slot_index);
107 } 107 }
108 locations[index++] = 108 locations[index++] =
109 TaggedRegisterLocation(LinkageTraits::RuntimeCallFunctionReg()); 109 TaggedRegisterLocation(LinkageTraits::RuntimeCallFunctionReg());
110 locations[index++] = 110 locations[index++] =
111 WordRegisterLocation(LinkageTraits::RuntimeCallArgCountReg()); 111 WordRegisterLocation(LinkageTraits::RuntimeCallArgCountReg());
(...skipping 24 matching lines...) Expand all
136 const int context_count = 1; 136 const int context_count = 1;
137 int input_count = code_count + parameter_count + context_count; 137 int input_count = code_count + parameter_count + context_count;
138 138
139 const int return_count = 1; 139 const int return_count = 1;
140 LinkageLocation* locations = 140 LinkageLocation* locations =
141 zone->NewArray<LinkageLocation>(return_count + input_count); 141 zone->NewArray<LinkageLocation>(return_count + input_count);
142 142
143 int index = 0; 143 int index = 0;
144 locations[index++] = 144 locations[index++] =
145 TaggedRegisterLocation(LinkageTraits::ReturnValueReg()); 145 TaggedRegisterLocation(LinkageTraits::ReturnValueReg());
146 locations[index++] = UnconstrainedRegister(kMachineTagged); // code 146 locations[index++] = UnconstrainedRegister(kMachAnyTagged); // code
147 for (int i = 0; i < parameter_count; i++) { 147 for (int i = 0; i < parameter_count; i++) {
148 if (i < register_parameter_count) { 148 if (i < register_parameter_count) {
149 // The first parameters to code stub calls go in registers. 149 // The first parameters to code stub calls go in registers.
150 Register reg = descriptor->GetEnvironmentParameterRegister(i); 150 Register reg = descriptor->GetEnvironmentParameterRegister(i);
151 locations[index++] = TaggedRegisterLocation(reg); 151 locations[index++] = TaggedRegisterLocation(reg);
152 } else { 152 } else {
153 // The rest of the parameters go on the stack. 153 // The rest of the parameters go on the stack.
154 int stack_slot = i - register_parameter_count - stack_parameter_count; 154 int stack_slot = i - register_parameter_count - stack_parameter_count;
155 locations[index++] = TaggedStackSlot(stack_slot); 155 locations[index++] = TaggedStackSlot(stack_slot);
156 } 156 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 CallDescriptor::kCallAddress, 1, num_params, num_params + 1, locations, 197 CallDescriptor::kCallAddress, 1, num_params, num_params + 1, locations,
198 Operator::kNoProperties, LinkageTraits::CCalleeSaveRegisters(), 198 Operator::kNoProperties, LinkageTraits::CCalleeSaveRegisters(),
199 CallDescriptor::kCannotDeoptimize); // TODO(jarin) should deoptimize! 199 CallDescriptor::kCannotDeoptimize); // TODO(jarin) should deoptimize!
200 } 200 }
201 }; 201 };
202 } 202 }
203 } 203 }
204 } // namespace v8::internal::compiler 204 } // namespace v8::internal::compiler
205 205
206 #endif // V8_COMPILER_LINKAGE_IMPL_H_ 206 #endif // V8_COMPILER_LINKAGE_IMPL_H_
OLDNEW
« no previous file with comments | « src/compiler/js-generic-lowering.cc ('k') | src/compiler/machine-operator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698