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 590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
601 TranslatedFrame::iterator* iterator, int* input_index, int frame_index, | 601 TranslatedFrame::iterator* iterator, int* input_index, int frame_index, |
602 unsigned output_offset, const char* debug_hint_string = nullptr, | 602 unsigned output_offset, const char* debug_hint_string = nullptr, |
603 Address output_address_for_materialization = nullptr); | 603 Address output_address_for_materialization = nullptr); |
604 void WriteValueToOutput(Object* value, int input_index, int frame_index, | 604 void WriteValueToOutput(Object* value, int input_index, int frame_index, |
605 unsigned output_offset, | 605 unsigned output_offset, |
606 const char* debug_hint_string); | 606 const char* debug_hint_string); |
607 void DebugPrintOutputSlot(intptr_t value, int frame_index, | 607 void DebugPrintOutputSlot(intptr_t value, int frame_index, |
608 unsigned output_offset, | 608 unsigned output_offset, |
609 const char* debug_hint_string); | 609 const char* debug_hint_string); |
610 | 610 |
| 611 unsigned ComputeInputFrameAboveFpFixedSize() const; |
611 unsigned ComputeInputFrameSize() const; | 612 unsigned ComputeInputFrameSize() const; |
612 static unsigned ComputeJavascriptFixedSize(SharedFunctionInfo* shared); | 613 static unsigned ComputeJavascriptFixedSize(SharedFunctionInfo* shared); |
613 static unsigned ComputeInterpretedFixedSize(SharedFunctionInfo* shared); | 614 static unsigned ComputeInterpretedFixedSize(SharedFunctionInfo* shared); |
614 | 615 |
615 static unsigned ComputeIncomingArgumentSize(SharedFunctionInfo* shared); | 616 static unsigned ComputeIncomingArgumentSize(SharedFunctionInfo* shared); |
616 static unsigned ComputeOutgoingArgumentSize(Code* code, unsigned bailout_id); | 617 static unsigned ComputeOutgoingArgumentSize(Code* code, unsigned bailout_id); |
617 | 618 |
618 Object* ComputeLiteral(int index) const; | 619 Object* ComputeLiteral(int index) const; |
619 | 620 |
620 static void GenerateDeoptimizationEntries( | 621 static void GenerateDeoptimizationEntries( |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
660 | 661 |
661 // Input frame description. | 662 // Input frame description. |
662 FrameDescription* input_; | 663 FrameDescription* input_; |
663 // Number of output frames. | 664 // Number of output frames. |
664 int output_count_; | 665 int output_count_; |
665 // Number of output js frames. | 666 // Number of output js frames. |
666 int jsframe_count_; | 667 int jsframe_count_; |
667 // Array of output frame descriptions. | 668 // Array of output frame descriptions. |
668 FrameDescription** output_; | 669 FrameDescription** output_; |
669 | 670 |
| 671 // Caller frame details computed from input frame. |
| 672 intptr_t caller_frame_top_; |
| 673 intptr_t caller_fp_; |
| 674 intptr_t caller_pc_; |
| 675 intptr_t caller_constant_pool_; |
| 676 intptr_t input_frame_context_; |
| 677 |
670 // Key for lookup of previously materialized objects | 678 // Key for lookup of previously materialized objects |
671 Address stack_fp_; | 679 intptr_t stack_fp_; |
672 | 680 |
673 TranslatedState translated_state_; | 681 TranslatedState translated_state_; |
674 struct ValueToMaterialize { | 682 struct ValueToMaterialize { |
675 Address output_slot_address_; | 683 Address output_slot_address_; |
676 TranslatedFrame::iterator value_; | 684 TranslatedFrame::iterator value_; |
677 }; | 685 }; |
678 std::vector<ValueToMaterialize> values_to_materialize_; | 686 std::vector<ValueToMaterialize> values_to_materialize_; |
679 | 687 |
680 #ifdef DEBUG | 688 #ifdef DEBUG |
681 DisallowHeapAllocation* disallow_heap_allocation_; | 689 DisallowHeapAllocation* disallow_heap_allocation_; |
(...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1099 std::vector<Handle<Object> > expression_stack_; | 1107 std::vector<Handle<Object> > expression_stack_; |
1100 int source_position_; | 1108 int source_position_; |
1101 | 1109 |
1102 friend class Deoptimizer; | 1110 friend class Deoptimizer; |
1103 }; | 1111 }; |
1104 | 1112 |
1105 } // namespace internal | 1113 } // namespace internal |
1106 } // namespace v8 | 1114 } // namespace v8 |
1107 | 1115 |
1108 #endif // V8_DEOPTIMIZER_H_ | 1116 #endif // V8_DEOPTIMIZER_H_ |
OLD | NEW |