OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
889 void Debug::Iterate(ObjectVisitor* v) { | 889 void Debug::Iterate(ObjectVisitor* v) { |
890 v->VisitPointer(BitCast<Object**>(&(debug_break_return_))); | 890 v->VisitPointer(BitCast<Object**>(&(debug_break_return_))); |
891 v->VisitPointer(BitCast<Object**>(&(debug_break_slot_))); | 891 v->VisitPointer(BitCast<Object**>(&(debug_break_slot_))); |
892 } | 892 } |
893 | 893 |
894 | 894 |
895 void Debug::PutValuesOnStackAndDie(int start, | 895 void Debug::PutValuesOnStackAndDie(int start, |
896 Address c_entry_fp, | 896 Address c_entry_fp, |
897 Address last_fp, | 897 Address last_fp, |
898 Address larger_fp, | 898 Address larger_fp, |
| 899 Address last_in_fp, |
| 900 Address last_out_fp, |
899 int count, | 901 int count, |
900 int end) { | 902 int end) { |
| 903 OS::PrintError("start: %d\n", start); |
| 904 OS::PrintError("c_entry_fp: %p\n", static_cast<void*>(c_entry_fp)); |
| 905 OS::PrintError("last_fp: %p\n", static_cast<void*>(last_fp)); |
| 906 OS::PrintError("larger_fp: %p\n", static_cast<void*>(larger_fp)); |
| 907 OS::PrintError("last_in_fp: %p\n", static_cast<void*>(last_in_fp)); |
| 908 OS::PrintError("last_out_fp: %p\n", static_cast<void*>(last_out_fp)); |
| 909 OS::PrintError("count: %d\n", count); |
| 910 OS::PrintError("end: %d\n", end); |
901 OS::Abort(); | 911 OS::Abort(); |
902 } | 912 } |
903 | 913 |
904 | 914 |
905 Object* Debug::Break(Arguments args) { | 915 Object* Debug::Break(Arguments args) { |
906 Heap* heap = isolate_->heap(); | 916 Heap* heap = isolate_->heap(); |
907 HandleScope scope(isolate_); | 917 HandleScope scope(isolate_); |
908 ASSERT(args.length() == 0); | 918 ASSERT(args.length() == 0); |
909 | 919 |
910 thread_local_.frame_drop_mode_ = FRAMES_UNTOUCHED; | 920 thread_local_.frame_drop_mode_ = FRAMES_UNTOUCHED; |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1003 // - C entry FP at which to start stack crawl. | 1013 // - C entry FP at which to start stack crawl. |
1004 // - FP of the frame at which we plan to stop stepping out (last FP). | 1014 // - FP of the frame at which we plan to stop stepping out (last FP). |
1005 // - current FP that's larger than last FP. | 1015 // - current FP that's larger than last FP. |
1006 // - Counter for the number of steps to step out. | 1016 // - Counter for the number of steps to step out. |
1007 if (it.done()) { | 1017 if (it.done()) { |
1008 // We crawled the entire stack, never reaching last_fp_. | 1018 // We crawled the entire stack, never reaching last_fp_. |
1009 PutValuesOnStackAndDie(0xBEEEEEEE, | 1019 PutValuesOnStackAndDie(0xBEEEEEEE, |
1010 frame->fp(), | 1020 frame->fp(), |
1011 thread_local_.last_fp_, | 1021 thread_local_.last_fp_, |
1012 NULL, | 1022 NULL, |
| 1023 thread_local_.step_into_fp_, |
| 1024 thread_local_.step_out_fp_, |
1013 count, | 1025 count, |
1014 0xFEEEEEEE); | 1026 0xFEEEEEEE); |
1015 } else if (it.frame()->fp() != thread_local_.last_fp_) { | 1027 } else if (it.frame()->fp() != thread_local_.last_fp_) { |
1016 // We crawled over last_fp_, without getting a match. | 1028 // We crawled over last_fp_, without getting a match. |
1017 PutValuesOnStackAndDie(0xBEEEEEEE, | 1029 PutValuesOnStackAndDie(0xBEEEEEEE, |
1018 frame->fp(), | 1030 frame->fp(), |
1019 thread_local_.last_fp_, | 1031 thread_local_.last_fp_, |
1020 it.frame()->fp(), | 1032 it.frame()->fp(), |
| 1033 thread_local_.step_into_fp_, |
| 1034 thread_local_.step_out_fp_, |
1021 count, | 1035 count, |
1022 0xFEEEEEEE); | 1036 0xFEEEEEEE); |
1023 } | 1037 } |
1024 | 1038 |
1025 // If we found original frame | 1039 // If we found original frame |
1026 if (it.frame()->fp() == thread_local_.last_fp_) { | 1040 if (it.frame()->fp() == thread_local_.last_fp_) { |
1027 if (step_count > 1) { | 1041 if (step_count > 1) { |
1028 // Save old count and action to continue stepping after | 1042 // Save old count and action to continue stepping after |
1029 // StepOut | 1043 // StepOut |
1030 thread_local_.queued_step_count_ = step_count - 1; | 1044 thread_local_.queued_step_count_ = step_count - 1; |
(...skipping 2655 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3686 { | 3700 { |
3687 Locker locker; | 3701 Locker locker; |
3688 Isolate::Current()->debugger()->CallMessageDispatchHandler(); | 3702 Isolate::Current()->debugger()->CallMessageDispatchHandler(); |
3689 } | 3703 } |
3690 } | 3704 } |
3691 } | 3705 } |
3692 | 3706 |
3693 #endif // ENABLE_DEBUGGER_SUPPORT | 3707 #endif // ENABLE_DEBUGGER_SUPPORT |
3694 | 3708 |
3695 } } // namespace v8::internal | 3709 } } // namespace v8::internal |
OLD | NEW |