OLD | NEW |
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
2 // All Rights Reserved. | 2 // All Rights Reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
6 // met: | 6 // met: |
7 // | 7 // |
8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
10 // | 10 // |
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
666 | 666 |
667 // Mark address of the ExitJSFrame code. | 667 // Mark address of the ExitJSFrame code. |
668 void RecordJSReturn(); | 668 void RecordJSReturn(); |
669 | 669 |
670 // Record a comment relocation entry that can be used by a disassembler. | 670 // Record a comment relocation entry that can be used by a disassembler. |
671 // Use --debug_code to enable. | 671 // Use --debug_code to enable. |
672 void RecordComment(const char* msg); | 672 void RecordComment(const char* msg); |
673 | 673 |
674 void RecordPosition(int pos); | 674 void RecordPosition(int pos); |
675 void RecordStatementPosition(int pos); | 675 void RecordStatementPosition(int pos); |
| 676 void WriteRecordedPositions(); |
676 | 677 |
677 int pc_offset() const { return pc_ - buffer_; } | 678 int pc_offset() const { return pc_ - buffer_; } |
| 679 int last_statement_position() const { return last_statement_position_; } |
678 int last_position() const { return last_position_; } | 680 int last_position() const { return last_position_; } |
679 bool last_position_is_statement() const { | |
680 return last_position_is_statement_; | |
681 } | |
682 | 681 |
683 // Check if there is less than kGap bytes available in the buffer. | 682 // Check if there is less than kGap bytes available in the buffer. |
684 // If this is the case, we need to grow the buffer before emitting | 683 // If this is the case, we need to grow the buffer before emitting |
685 // an instruction or relocation information. | 684 // an instruction or relocation information. |
686 inline bool overflow() const { return pc_ >= reloc_info_writer.pos() - kGap; } | 685 inline bool overflow() const { return pc_ >= reloc_info_writer.pos() - kGap; } |
687 | 686 |
688 // Get the number of bytes available in the buffer. | 687 // Get the number of bytes available in the buffer. |
689 inline int available_space() const { return reloc_info_writer.pos() - pc_; } | 688 inline int available_space() const { return reloc_info_writer.pos() - pc_; } |
690 | 689 |
691 // Avoid overflows for displacements etc. | 690 // Avoid overflows for displacements etc. |
(...skipping 26 matching lines...) Expand all Loading... |
718 // Jump-to-jump elimination: | 717 // Jump-to-jump elimination: |
719 // The last label to be bound to _binding_pos, if unbound. | 718 // The last label to be bound to _binding_pos, if unbound. |
720 Label unbound_label_; | 719 Label unbound_label_; |
721 // The position to which _unbound_label has to be bound, if present. | 720 // The position to which _unbound_label has to be bound, if present. |
722 int binding_pos_; | 721 int binding_pos_; |
723 // The position before which jumps cannot be eliminated. | 722 // The position before which jumps cannot be eliminated. |
724 int last_bound_pos_; | 723 int last_bound_pos_; |
725 | 724 |
726 // source position information | 725 // source position information |
727 int last_position_; | 726 int last_position_; |
728 bool last_position_is_statement_; | 727 int last_statement_position_; |
729 | 728 |
730 byte* addr_at(int pos) { return buffer_ + pos; } | 729 byte* addr_at(int pos) { return buffer_ + pos; } |
731 byte byte_at(int pos) { return buffer_[pos]; } | 730 byte byte_at(int pos) { return buffer_[pos]; } |
732 uint32_t long_at(int pos) { | 731 uint32_t long_at(int pos) { |
733 return *reinterpret_cast<uint32_t*>(addr_at(pos)); | 732 return *reinterpret_cast<uint32_t*>(addr_at(pos)); |
734 } | 733 } |
735 void long_at_put(int pos, uint32_t x) { | 734 void long_at_put(int pos, uint32_t x) { |
736 *reinterpret_cast<uint32_t*>(addr_at(pos)) = x; | 735 *reinterpret_cast<uint32_t*>(addr_at(pos)) = x; |
737 } | 736 } |
738 | 737 |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
798 private: | 797 private: |
799 Assembler* assembler_; | 798 Assembler* assembler_; |
800 #ifdef DEBUG | 799 #ifdef DEBUG |
801 int space_before_; | 800 int space_before_; |
802 #endif | 801 #endif |
803 }; | 802 }; |
804 | 803 |
805 } } // namespace v8::internal | 804 } } // namespace v8::internal |
806 | 805 |
807 #endif // V8_ASSEMBLER_IA32_H_ | 806 #endif // V8_ASSEMBLER_IA32_H_ |
OLD | NEW |