OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_DEOPTIMIZER_H_ | 5 #ifndef V8_DEOPTIMIZER_H_ |
6 #define V8_DEOPTIMIZER_H_ | 6 #define V8_DEOPTIMIZER_H_ |
7 | 7 |
8 #include "src/allocation.h" | 8 #include "src/allocation.h" |
9 #include "src/macro-assembler.h" | 9 #include "src/macro-assembler.h" |
10 | 10 |
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
530 BailoutId node_id, | 530 BailoutId node_id, |
531 SharedFunctionInfo* shared); | 531 SharedFunctionInfo* shared); |
532 | 532 |
533 // Code generation support. | 533 // Code generation support. |
534 static int input_offset() { return OFFSET_OF(Deoptimizer, input_); } | 534 static int input_offset() { return OFFSET_OF(Deoptimizer, input_); } |
535 static int output_count_offset() { | 535 static int output_count_offset() { |
536 return OFFSET_OF(Deoptimizer, output_count_); | 536 return OFFSET_OF(Deoptimizer, output_count_); |
537 } | 537 } |
538 static int output_offset() { return OFFSET_OF(Deoptimizer, output_); } | 538 static int output_offset() { return OFFSET_OF(Deoptimizer, output_); } |
539 | 539 |
540 static int has_alignment_padding_offset() { | |
541 return OFFSET_OF(Deoptimizer, has_alignment_padding_); | |
542 } | |
543 | |
544 static int GetDeoptimizedCodeCount(Isolate* isolate); | 540 static int GetDeoptimizedCodeCount(Isolate* isolate); |
545 | 541 |
546 static const int kNotDeoptimizationEntry = -1; | 542 static const int kNotDeoptimizationEntry = -1; |
547 | 543 |
548 // Generators for the deoptimization entry code. | 544 // Generators for the deoptimization entry code. |
549 class TableEntryGenerator BASE_EMBEDDED { | 545 class TableEntryGenerator BASE_EMBEDDED { |
550 public: | 546 public: |
551 TableEntryGenerator(MacroAssembler* masm, BailoutType type, int count) | 547 TableEntryGenerator(MacroAssembler* masm, BailoutType type, int count) |
552 : masm_(masm), type_(type), count_(count) {} | 548 : masm_(masm), type_(type), count_(count) {} |
553 | 549 |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
644 | 640 |
645 // Fill the given output frame's registers to contain the failure handler | 641 // Fill the given output frame's registers to contain the failure handler |
646 // address and the number of parameters for a stub failure trampoline. | 642 // address and the number of parameters for a stub failure trampoline. |
647 void SetPlatformCompiledStubRegisters(FrameDescription* output_frame, | 643 void SetPlatformCompiledStubRegisters(FrameDescription* output_frame, |
648 CodeStubDescriptor* desc); | 644 CodeStubDescriptor* desc); |
649 | 645 |
650 // Fill the given output frame's double registers with the original values | 646 // Fill the given output frame's double registers with the original values |
651 // from the input frame's double registers. | 647 // from the input frame's double registers. |
652 void CopyDoubleRegisters(FrameDescription* output_frame); | 648 void CopyDoubleRegisters(FrameDescription* output_frame); |
653 | 649 |
654 // Determines whether the input frame contains alignment padding by looking | |
655 // at the dynamic alignment state slot inside the frame. | |
656 bool HasAlignmentPadding(SharedFunctionInfo* shared); | |
657 | |
658 Isolate* isolate_; | 650 Isolate* isolate_; |
659 JSFunction* function_; | 651 JSFunction* function_; |
660 Code* compiled_code_; | 652 Code* compiled_code_; |
661 unsigned bailout_id_; | 653 unsigned bailout_id_; |
662 BailoutType bailout_type_; | 654 BailoutType bailout_type_; |
663 Address from_; | 655 Address from_; |
664 int fp_to_sp_delta_; | 656 int fp_to_sp_delta_; |
665 int has_alignment_padding_; | |
666 bool deoptimizing_throw_; | 657 bool deoptimizing_throw_; |
667 int catch_handler_data_; | 658 int catch_handler_data_; |
668 int catch_handler_pc_offset_; | 659 int catch_handler_pc_offset_; |
669 | 660 |
670 // Input frame description. | 661 // Input frame description. |
671 FrameDescription* input_; | 662 FrameDescription* input_; |
672 // Number of output frames. | 663 // Number of output frames. |
673 int output_count_; | 664 int output_count_; |
674 // Number of output js frames. | 665 // Number of output js frames. |
675 int jsframe_count_; | 666 int jsframe_count_; |
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1108 std::vector<Handle<Object> > expression_stack_; | 1099 std::vector<Handle<Object> > expression_stack_; |
1109 int source_position_; | 1100 int source_position_; |
1110 | 1101 |
1111 friend class Deoptimizer; | 1102 friend class Deoptimizer; |
1112 }; | 1103 }; |
1113 | 1104 |
1114 } // namespace internal | 1105 } // namespace internal |
1115 } // namespace v8 | 1106 } // namespace v8 |
1116 | 1107 |
1117 #endif // V8_DEOPTIMIZER_H_ | 1108 #endif // V8_DEOPTIMIZER_H_ |
OLD | NEW |