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

Side by Side Diff: src/compiler/instruction-selector-impl.h

Issue 683933004: [turbofan] move Node to vreg mapping to InstructionSelector (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 1 month 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/instruction-selector.cc ('k') | src/compiler/pipeline.cc » ('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_INSTRUCTION_SELECTOR_IMPL_H_ 5 #ifndef V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_
6 #define V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_ 6 #define V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_
7 7
8 #include "src/compiler/generic-node-inl.h" 8 #include "src/compiler/generic-node-inl.h"
9 #include "src/compiler/instruction.h" 9 #include "src/compiler/instruction.h"
10 #include "src/compiler/instruction-selector.h" 10 #include "src/compiler/instruction-selector.h"
(...skipping 28 matching lines...) Expand all
39 } 39 }
40 40
41 InstructionOperand* DefineAsFixed(Node* node, DoubleRegister reg) { 41 InstructionOperand* DefineAsFixed(Node* node, DoubleRegister reg) {
42 return Define(node, new (zone()) 42 return Define(node, new (zone())
43 UnallocatedOperand(UnallocatedOperand::FIXED_DOUBLE_REGISTER, 43 UnallocatedOperand(UnallocatedOperand::FIXED_DOUBLE_REGISTER,
44 DoubleRegister::ToAllocationIndex(reg))); 44 DoubleRegister::ToAllocationIndex(reg)));
45 } 45 }
46 46
47 InstructionOperand* DefineAsConstant(Node* node) { 47 InstructionOperand* DefineAsConstant(Node* node) {
48 selector()->MarkAsDefined(node); 48 selector()->MarkAsDefined(node);
49 int virtual_register = sequence()->AddConstant(node, ToConstant(node)); 49 int virtual_register = selector_->GetVirtualRegister(node);
50 sequence()->AddConstant(virtual_register, ToConstant(node));
50 return ConstantOperand::Create(virtual_register, zone()); 51 return ConstantOperand::Create(virtual_register, zone());
51 } 52 }
52 53
53 InstructionOperand* DefineAsLocation(Node* node, LinkageLocation location, 54 InstructionOperand* DefineAsLocation(Node* node, LinkageLocation location,
54 MachineType type) { 55 MachineType type) {
55 return Define(node, ToUnallocatedOperand(location, type)); 56 return Define(node, ToUnallocatedOperand(location, type));
56 } 57 }
57 58
58 InstructionOperand* Use(Node* node) { 59 InstructionOperand* Use(Node* node) {
59 return Use( 60 return Use(
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 default: 166 default:
166 break; 167 break;
167 } 168 }
168 UNREACHABLE(); 169 UNREACHABLE();
169 return Constant(static_cast<int32_t>(0)); 170 return Constant(static_cast<int32_t>(0));
170 } 171 }
171 172
172 UnallocatedOperand* Define(Node* node, UnallocatedOperand* operand) { 173 UnallocatedOperand* Define(Node* node, UnallocatedOperand* operand) {
173 DCHECK_NOT_NULL(node); 174 DCHECK_NOT_NULL(node);
174 DCHECK_NOT_NULL(operand); 175 DCHECK_NOT_NULL(operand);
175 operand->set_virtual_register( 176 operand->set_virtual_register(selector_->GetVirtualRegister(node));
176 selector_->sequence()->GetVirtualRegister(node));
177 selector()->MarkAsDefined(node); 177 selector()->MarkAsDefined(node);
178 return operand; 178 return operand;
179 } 179 }
180 180
181 UnallocatedOperand* Use(Node* node, UnallocatedOperand* operand) { 181 UnallocatedOperand* Use(Node* node, UnallocatedOperand* operand) {
182 DCHECK_NOT_NULL(node); 182 DCHECK_NOT_NULL(node);
183 DCHECK_NOT_NULL(operand); 183 DCHECK_NOT_NULL(operand);
184 operand->set_virtual_register( 184 operand->set_virtual_register(selector_->GetVirtualRegister(node));
185 selector_->sequence()->GetVirtualRegister(node));
186 selector()->MarkAsUsed(node); 185 selector()->MarkAsUsed(node);
187 return operand; 186 return operand;
188 } 187 }
189 188
190 UnallocatedOperand* ToUnallocatedOperand(LinkageLocation location, 189 UnallocatedOperand* ToUnallocatedOperand(LinkageLocation location,
191 MachineType type) { 190 MachineType type) {
192 if (location.location_ == LinkageLocation::ANY_REGISTER) { 191 if (location.location_ == LinkageLocation::ANY_REGISTER) {
193 return new (zone()) 192 return new (zone())
194 UnallocatedOperand(UnallocatedOperand::MUST_HAVE_REGISTER); 193 UnallocatedOperand(UnallocatedOperand::MUST_HAVE_REGISTER);
195 } 194 }
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 : (frame_state_descriptor->GetTotalSize() + 361 : (frame_state_descriptor->GetTotalSize() +
363 1); // Include deopt id. 362 1); // Include deopt id.
364 } 363 }
365 }; 364 };
366 365
367 } // namespace compiler 366 } // namespace compiler
368 } // namespace internal 367 } // namespace internal
369 } // namespace v8 368 } // namespace v8
370 369
371 #endif // V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_ 370 #endif // V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_
OLDNEW
« no previous file with comments | « src/compiler/instruction-selector.cc ('k') | src/compiler/pipeline.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698