| 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 |