Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(171)

Side by Side Diff: src/assembler.cc

Issue 1234833003: Debugger: use debug break slots to break at function exit. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix for arm Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/assembler.h ('k') | src/builtins.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 729 matching lines...) Expand 10 before | Expand all | Expand 10 after
740 case DEBUGGER_STATEMENT: 740 case DEBUGGER_STATEMENT:
741 return "debugger statement"; 741 return "debugger statement";
742 case CODE_TARGET: 742 case CODE_TARGET:
743 return "code target"; 743 return "code target";
744 case CODE_TARGET_WITH_ID: 744 case CODE_TARGET_WITH_ID:
745 return "code target with id"; 745 return "code target with id";
746 case CELL: 746 case CELL:
747 return "property cell"; 747 return "property cell";
748 case RUNTIME_ENTRY: 748 case RUNTIME_ENTRY:
749 return "runtime entry"; 749 return "runtime entry";
750 case JS_RETURN:
751 return "js return";
752 case COMMENT: 750 case COMMENT:
753 return "comment"; 751 return "comment";
754 case POSITION: 752 case POSITION:
755 return "position"; 753 return "position";
756 case STATEMENT_POSITION: 754 case STATEMENT_POSITION:
757 return "statement position"; 755 return "statement position";
758 case EXTERNAL_REFERENCE: 756 case EXTERNAL_REFERENCE:
759 return "external reference"; 757 return "external reference";
760 case INTERNAL_REFERENCE: 758 case INTERNAL_REFERENCE:
761 return "internal reference"; 759 return "internal reference";
762 case INTERNAL_REFERENCE_ENCODED: 760 case INTERNAL_REFERENCE_ENCODED:
763 return "encoded internal reference"; 761 return "encoded internal reference";
764 case DEOPT_REASON: 762 case DEOPT_REASON:
765 return "deopt reason"; 763 return "deopt reason";
766 case CONST_POOL: 764 case CONST_POOL:
767 return "constant pool"; 765 return "constant pool";
768 case VENEER_POOL: 766 case VENEER_POOL:
769 return "veneer pool"; 767 return "veneer pool";
770 case DEBUG_BREAK_SLOT_AT_POSITION: 768 case DEBUG_BREAK_SLOT_AT_POSITION:
771 return "debug break slot at position"; 769 return "debug break slot at position";
770 case DEBUG_BREAK_SLOT_AT_RETURN:
771 return "debug break slot at return";
772 case DEBUG_BREAK_SLOT_AT_CALL: 772 case DEBUG_BREAK_SLOT_AT_CALL:
773 return "debug break slot at call"; 773 return "debug break slot at call";
774 case DEBUG_BREAK_SLOT_AT_CONSTRUCT_CALL: 774 case DEBUG_BREAK_SLOT_AT_CONSTRUCT_CALL:
775 return "debug break slot at construct call"; 775 return "debug break slot at construct call";
776 case CODE_AGE_SEQUENCE: 776 case CODE_AGE_SEQUENCE:
777 return "code age sequence"; 777 return "code age sequence";
778 case GENERATOR_CONTINUATION: 778 case GENERATOR_CONTINUATION:
779 return "generator continuation"; 779 return "generator continuation";
780 case NUMBER_OF_MODES: 780 case NUMBER_OF_MODES:
781 case PC_JUMP: 781 case PC_JUMP:
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
853 case INTERNAL_REFERENCE: 853 case INTERNAL_REFERENCE:
854 case INTERNAL_REFERENCE_ENCODED: { 854 case INTERNAL_REFERENCE_ENCODED: {
855 Address target = target_internal_reference(); 855 Address target = target_internal_reference();
856 Address pc = target_internal_reference_address(); 856 Address pc = target_internal_reference_address();
857 Code* code = Code::cast(isolate->FindCodeObject(pc)); 857 Code* code = Code::cast(isolate->FindCodeObject(pc));
858 CHECK(target >= code->instruction_start()); 858 CHECK(target >= code->instruction_start());
859 CHECK(target <= code->instruction_end()); 859 CHECK(target <= code->instruction_end());
860 break; 860 break;
861 } 861 }
862 case RUNTIME_ENTRY: 862 case RUNTIME_ENTRY:
863 case JS_RETURN:
864 case COMMENT: 863 case COMMENT:
865 case POSITION: 864 case POSITION:
866 case STATEMENT_POSITION: 865 case STATEMENT_POSITION:
867 case EXTERNAL_REFERENCE: 866 case EXTERNAL_REFERENCE:
868 case DEOPT_REASON: 867 case DEOPT_REASON:
869 case CONST_POOL: 868 case CONST_POOL:
870 case VENEER_POOL: 869 case VENEER_POOL:
871 case DEBUG_BREAK_SLOT_AT_POSITION: 870 case DEBUG_BREAK_SLOT_AT_POSITION:
871 case DEBUG_BREAK_SLOT_AT_RETURN:
872 case DEBUG_BREAK_SLOT_AT_CALL: 872 case DEBUG_BREAK_SLOT_AT_CALL:
873 case DEBUG_BREAK_SLOT_AT_CONSTRUCT_CALL: 873 case DEBUG_BREAK_SLOT_AT_CONSTRUCT_CALL:
874 case GENERATOR_CONTINUATION: 874 case GENERATOR_CONTINUATION:
875 case NONE32: 875 case NONE32:
876 case NONE64: 876 case NONE64:
877 break; 877 break;
878 case NUMBER_OF_MODES: 878 case NUMBER_OF_MODES:
879 case PC_JUMP: 879 case PC_JUMP:
880 UNREACHABLE(); 880 UNREACHABLE();
881 break; 881 break;
(...skipping 917 matching lines...) Expand 10 before | Expand all | Expand 10 after
1799 1799
1800 1800
1801 void Assembler::RecordComment(const char* msg) { 1801 void Assembler::RecordComment(const char* msg) {
1802 if (FLAG_code_comments) { 1802 if (FLAG_code_comments) {
1803 EnsureSpace ensure_space(this); 1803 EnsureSpace ensure_space(this);
1804 RecordRelocInfo(RelocInfo::COMMENT, reinterpret_cast<intptr_t>(msg)); 1804 RecordRelocInfo(RelocInfo::COMMENT, reinterpret_cast<intptr_t>(msg));
1805 } 1805 }
1806 } 1806 }
1807 1807
1808 1808
1809 void Assembler::RecordJSReturn() {
1810 positions_recorder()->WriteRecordedPositions();
1811 EnsureSpace ensure_space(this);
1812 RecordRelocInfo(RelocInfo::JS_RETURN);
1813 }
1814
1815
1816 void Assembler::RecordGeneratorContinuation() { 1809 void Assembler::RecordGeneratorContinuation() {
1817 EnsureSpace ensure_space(this); 1810 EnsureSpace ensure_space(this);
1818 RecordRelocInfo(RelocInfo::GENERATOR_CONTINUATION); 1811 RecordRelocInfo(RelocInfo::GENERATOR_CONTINUATION);
1819 } 1812 }
1820 1813
1821 1814
1822 void Assembler::RecordDebugBreakSlot() { 1815 void Assembler::RecordDebugBreakSlot(RelocInfo::Mode mode, int call_argc) {
1823 EnsureSpace ensure_space(this); 1816 EnsureSpace ensure_space(this);
1824 RecordRelocInfo(RelocInfo::DEBUG_BREAK_SLOT_AT_POSITION); 1817 DCHECK(RelocInfo::IsDebugBreakSlot(mode));
1818 intptr_t data = static_cast<intptr_t>(call_argc);
1819 RecordRelocInfo(mode, data);
1825 } 1820 }
1826 1821
1827 1822
1828 void Assembler::RecordDebugBreakSlotForCall(int argc) {
1829 EnsureSpace ensure_space(this);
1830 intptr_t data = static_cast<intptr_t>(argc);
1831 RecordRelocInfo(RelocInfo::DEBUG_BREAK_SLOT_AT_CALL, data);
1832 }
1833
1834
1835 void Assembler::RecordDebugBreakSlotForConstructCall() {
1836 EnsureSpace ensure_space(this);
1837 RecordRelocInfo(RelocInfo::DEBUG_BREAK_SLOT_AT_CONSTRUCT_CALL);
1838 }
1839
1840
1841 void Assembler::DataAlign(int m) { 1823 void Assembler::DataAlign(int m) {
1842 DCHECK(m >= 2 && base::bits::IsPowerOfTwo32(m)); 1824 DCHECK(m >= 2 && base::bits::IsPowerOfTwo32(m));
1843 while ((pc_offset() & (m - 1)) != 0) { 1825 while ((pc_offset() & (m - 1)) != 0) {
1844 db(0); 1826 db(0);
1845 } 1827 }
1846 } 1828 }
1847 } // namespace internal 1829 } // namespace internal
1848 } // namespace v8 1830 } // namespace v8
OLDNEW
« no previous file with comments | « src/assembler.h ('k') | src/builtins.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698