Chromium Code Reviews| 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 #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/instruction.h" | 8 #include "src/compiler/instruction.h" |
| 9 #include "src/compiler/instruction-selector.h" | 9 #include "src/compiler/instruction-selector.h" |
| 10 #include "src/compiler/linkage.h" | 10 #include "src/compiler/linkage.h" |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 339 Node* result_; // Only valid if mode_ == kFlags_set. | 339 Node* result_; // Only valid if mode_ == kFlags_set. |
| 340 BasicBlock* true_block_; // Only valid if mode_ == kFlags_branch. | 340 BasicBlock* true_block_; // Only valid if mode_ == kFlags_branch. |
| 341 BasicBlock* false_block_; // Only valid if mode_ == kFlags_branch. | 341 BasicBlock* false_block_; // Only valid if mode_ == kFlags_branch. |
| 342 }; | 342 }; |
| 343 | 343 |
| 344 | 344 |
| 345 // An internal helper class for generating the operands to calls. | 345 // An internal helper class for generating the operands to calls. |
| 346 // TODO(bmeurer): Get rid of the CallBuffer business and make | 346 // TODO(bmeurer): Get rid of the CallBuffer business and make |
| 347 // InstructionSelector::VisitCall platform independent instead. | 347 // InstructionSelector::VisitCall platform independent instead. |
| 348 struct CallBuffer { | 348 struct CallBuffer { |
| 349 CallBuffer(Zone* zone, CallDescriptor* descriptor); | 349 CallBuffer(Zone* zone, CallDescriptor* descriptor, |
| 350 FrameStateDescriptor* frame_state); | |
| 350 | 351 |
| 351 int output_count; | |
| 352 CallDescriptor* descriptor; | 352 CallDescriptor* descriptor; |
| 353 Node** output_nodes; | 353 FrameStateDescriptor* frame_state_descriptor; |
| 354 InstructionOperand** outputs; | 354 std::vector<Node*> output_nodes; |
|
Benedikt Meurer
2014/08/21 08:19:29
Can we allocate in the Zone instead? I.e. use zone
Jarin
2014/08/21 09:54:42
Done.
| |
| 355 InstructionOperand** fixed_and_control_args; | 355 std::vector<InstructionOperand*> outputs; |
| 356 int fixed_count; | 356 std::vector<InstructionOperand*> instruction_args; |
| 357 Node** pushed_nodes; | 357 std::vector<Node*> pushed_nodes; |
| 358 int pushed_count; | |
| 359 | 358 |
| 360 int input_count() { return descriptor->InputCount(); } | 359 int input_count() { return descriptor->InputCount(); } |
|
Benedikt Meurer
2014/08/21 08:19:29
const
Jarin
2014/08/21 09:54:41
Done.
| |
| 361 | 360 |
| 361 int frame_state_count() { return descriptor->FrameStateCount(); } | |
|
Benedikt Meurer
2014/08/21 08:19:29
const
Jarin
2014/08/21 09:54:42
Done.
| |
| 362 | |
| 363 int frame_state_value_count() { | |
|
Benedikt Meurer
2014/08/21 08:19:29
const
Jarin
2014/08/21 09:54:41
Done.
| |
| 364 return (frame_state_descriptor == NULL) | |
| 365 ? 0 | |
| 366 : (frame_state_descriptor->size() + 1); | |
| 367 } | |
| 368 | |
| 362 int control_count() { return descriptor->CanLazilyDeoptimize() ? 2 : 0; } | 369 int control_count() { return descriptor->CanLazilyDeoptimize() ? 2 : 0; } |
| 363 | |
| 364 int fixed_and_control_count() { return fixed_count + control_count(); } | |
| 365 }; | 370 }; |
| 366 | 371 |
| 367 } // namespace compiler | 372 } // namespace compiler |
| 368 } // namespace internal | 373 } // namespace internal |
| 369 } // namespace v8 | 374 } // namespace v8 |
| 370 | 375 |
| 371 #endif // V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_ | 376 #endif // V8_COMPILER_INSTRUCTION_SELECTOR_IMPL_H_ |
| OLD | NEW |