OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_ | 5 #ifndef V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_ |
6 #define V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_ | 6 #define V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_ |
7 | 7 |
8 #include "src/ast/ast.h" | 8 #include "src/ast/ast.h" |
9 #include "src/base/compiler-specific.h" | 9 #include "src/base/compiler-specific.h" |
10 #include "src/globals.h" | 10 #include "src/globals.h" |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 return ®ister_allocator_; | 378 return ®ister_allocator_; |
379 } | 379 } |
380 Zone* zone() const { return zone_; } | 380 Zone* zone() const { return zone_; } |
381 | 381 |
382 private: | 382 private: |
383 friend class BytecodeRegisterAllocator; | 383 friend class BytecodeRegisterAllocator; |
384 template <Bytecode bytecode, AccumulatorUse accumulator_use, | 384 template <Bytecode bytecode, AccumulatorUse accumulator_use, |
385 OperandType... operand_types> | 385 OperandType... operand_types> |
386 friend class BytecodeNodeBuilder; | 386 friend class BytecodeNodeBuilder; |
387 | 387 |
| 388 const FeedbackVectorSpec* feedback_vector_spec() const { |
| 389 return literal_->feedback_vector_spec(); |
| 390 } |
| 391 |
388 // Returns the current source position for the given |bytecode|. | 392 // Returns the current source position for the given |bytecode|. |
389 INLINE(BytecodeSourceInfo CurrentSourcePosition(Bytecode bytecode)); | 393 INLINE(BytecodeSourceInfo CurrentSourcePosition(Bytecode bytecode)); |
390 | 394 |
391 #define DECLARE_BYTECODE_OUTPUT(Name, ...) \ | 395 #define DECLARE_BYTECODE_OUTPUT(Name, ...) \ |
392 template <typename... Operands> \ | 396 template <typename... Operands> \ |
393 INLINE(void Output##Name(Operands... operands)); \ | 397 INLINE(void Output##Name(Operands... operands)); \ |
394 template <typename... Operands> \ | 398 template <typename... Operands> \ |
395 INLINE(void Output##Name(BytecodeLabel* label, Operands... operands)); | 399 INLINE(void Output##Name(BytecodeLabel* label, Operands... operands)); |
396 BYTECODE_LIST(DECLARE_BYTECODE_OUTPUT) | 400 BYTECODE_LIST(DECLARE_BYTECODE_OUTPUT) |
397 #undef DECLARE_OPERAND_TYPE_INFO | 401 #undef DECLARE_OPERAND_TYPE_INFO |
(...skipping 22 matching lines...) Expand all Loading... |
420 return &constant_array_builder_; | 424 return &constant_array_builder_; |
421 } | 425 } |
422 const ConstantArrayBuilder* constant_array_builder() const { | 426 const ConstantArrayBuilder* constant_array_builder() const { |
423 return &constant_array_builder_; | 427 return &constant_array_builder_; |
424 } | 428 } |
425 HandlerTableBuilder* handler_table_builder() { | 429 HandlerTableBuilder* handler_table_builder() { |
426 return &handler_table_builder_; | 430 return &handler_table_builder_; |
427 } | 431 } |
428 | 432 |
429 Zone* zone_; | 433 Zone* zone_; |
| 434 FunctionLiteral* literal_; |
430 bool bytecode_generated_; | 435 bool bytecode_generated_; |
431 ConstantArrayBuilder constant_array_builder_; | 436 ConstantArrayBuilder constant_array_builder_; |
432 HandlerTableBuilder handler_table_builder_; | 437 HandlerTableBuilder handler_table_builder_; |
433 bool return_seen_in_block_; | 438 bool return_seen_in_block_; |
434 int parameter_count_; | 439 int parameter_count_; |
435 int local_register_count_; | 440 int local_register_count_; |
436 int context_register_count_; | 441 int context_register_count_; |
437 int return_position_; | 442 int return_position_; |
438 BytecodeRegisterAllocator register_allocator_; | 443 BytecodeRegisterAllocator register_allocator_; |
439 BytecodeArrayWriter bytecode_array_writer_; | 444 BytecodeArrayWriter bytecode_array_writer_; |
440 BytecodePipelineStage* pipeline_; | 445 BytecodePipelineStage* pipeline_; |
441 BytecodeRegisterOptimizer* register_optimizer_; | 446 BytecodeRegisterOptimizer* register_optimizer_; |
442 BytecodeSourceInfo latest_source_info_; | 447 BytecodeSourceInfo latest_source_info_; |
443 | 448 |
444 static int const kNoFeedbackSlot = 0; | 449 static int const kNoFeedbackSlot = 0; |
445 | 450 |
446 DISALLOW_COPY_AND_ASSIGN(BytecodeArrayBuilder); | 451 DISALLOW_COPY_AND_ASSIGN(BytecodeArrayBuilder); |
447 }; | 452 }; |
448 | 453 |
449 } // namespace interpreter | 454 } // namespace interpreter |
450 } // namespace internal | 455 } // namespace internal |
451 } // namespace v8 | 456 } // namespace v8 |
452 | 457 |
453 #endif // V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_ | 458 #endif // V8_INTERPRETER_BYTECODE_ARRAY_BUILDER_H_ |
OLD | NEW |