OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "platform/assert.h" | 5 #include "platform/assert.h" |
6 | 6 |
7 #include "vm/dart_entry.h" | 7 #include "vm/dart_entry.h" |
8 #include "vm/debugger.h" | 8 #include "vm/debugger.h" |
9 #include "vm/json_stream.h" | 9 #include "vm/json_stream.h" |
10 #include "vm/message.h" | 10 #include "vm/message.h" |
(...skipping 731 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
742 va_end(args); | 742 va_end(args); |
743 ASSERT(len == len2); | 743 ASSERT(len == len2); |
744 stream_->buffer_.AddChar('"'); | 744 stream_->buffer_.AddChar('"'); |
745 stream_->AddEscapedUTF8String(p); | 745 stream_->AddEscapedUTF8String(p); |
746 stream_->buffer_.AddChar('"'); | 746 stream_->buffer_.AddChar('"'); |
747 free(p); | 747 free(p); |
748 } | 748 } |
749 | 749 |
750 | 750 |
751 void JSONObject::AddLocation(const Script& script, | 751 void JSONObject::AddLocation(const Script& script, |
752 intptr_t token_pos, | 752 TokenDescriptor token_pos, |
753 intptr_t end_token_pos) const { | 753 TokenDescriptor end_token_pos) const { |
754 JSONObject location(this, "location"); | 754 JSONObject location(this, "location"); |
755 location.AddProperty("type", "SourceLocation"); | 755 location.AddProperty("type", "SourceLocation"); |
756 location.AddProperty("script", script); | 756 location.AddProperty("script", script); |
757 location.AddProperty("tokenPos", token_pos); | 757 location.AddProperty("tokenPos", token_pos.value()); |
758 if (end_token_pos >= 0) { | 758 if (end_token_pos.IsReal()) { |
759 location.AddProperty("endTokenPos", end_token_pos); | 759 location.AddProperty("endTokenPos", end_token_pos.value()); |
760 } | 760 } |
761 } | 761 } |
762 | 762 |
763 | 763 |
764 void JSONObject::AddLocation(const BreakpointLocation* bpt_loc) const { | 764 void JSONObject::AddLocation(const BreakpointLocation* bpt_loc) const { |
765 ASSERT(bpt_loc->IsResolved()); | 765 ASSERT(bpt_loc->IsResolved()); |
766 | 766 |
767 Zone* zone = Thread::Current()->zone(); | 767 Zone* zone = Thread::Current()->zone(); |
768 Library& library = Library::Handle(zone); | 768 Library& library = Library::Handle(zone); |
769 Script& script = Script::Handle(zone); | 769 Script& script = Script::Handle(zone); |
770 intptr_t token_pos; | 770 TokenDescriptor token_pos = TokenDescriptor::kNoSource; |
771 bpt_loc->GetCodeLocation(&library, &script, &token_pos); | 771 bpt_loc->GetCodeLocation(&library, &script, &token_pos); |
772 AddLocation(script, token_pos); | 772 AddLocation(script, token_pos); |
773 } | 773 } |
774 | 774 |
775 | 775 |
776 void JSONObject::AddUnresolvedLocation( | 776 void JSONObject::AddUnresolvedLocation( |
777 const BreakpointLocation* bpt_loc) const { | 777 const BreakpointLocation* bpt_loc) const { |
778 ASSERT(!bpt_loc->IsResolved()); | 778 ASSERT(!bpt_loc->IsResolved()); |
779 | 779 |
780 Zone* zone = Thread::Current()->zone(); | 780 Zone* zone = Thread::Current()->zone(); |
781 Library& library = Library::Handle(zone); | 781 Library& library = Library::Handle(zone); |
782 Script& script = Script::Handle(zone); | 782 Script& script = Script::Handle(zone); |
783 intptr_t token_pos; | 783 TokenDescriptor token_pos = TokenDescriptor::kNoSource; |
784 bpt_loc->GetCodeLocation(&library, &script, &token_pos); | 784 bpt_loc->GetCodeLocation(&library, &script, &token_pos); |
785 | 785 |
786 JSONObject location(this, "location"); | 786 JSONObject location(this, "location"); |
787 location.AddProperty("type", "UnresolvedSourceLocation"); | 787 location.AddProperty("type", "UnresolvedSourceLocation"); |
788 if (!script.IsNull()) { | 788 if (!script.IsNull()) { |
789 location.AddProperty("script", script); | 789 location.AddProperty("script", script); |
790 } else { | 790 } else { |
791 const String& scriptUri = String::Handle(zone, bpt_loc->url()); | 791 const String& scriptUri = String::Handle(zone, bpt_loc->url()); |
792 location.AddPropertyStr("scriptUri", scriptUri); | 792 location.AddPropertyStr("scriptUri", scriptUri); |
793 } | 793 } |
794 if (bpt_loc->requested_line_number() >= 0) { | 794 if (bpt_loc->requested_line_number() >= 0) { |
795 // This unresolved breakpoint was specified at a particular line. | 795 // This unresolved breakpoint was specified at a particular line. |
796 location.AddProperty("line", bpt_loc->requested_line_number()); | 796 location.AddProperty("line", bpt_loc->requested_line_number()); |
797 if (bpt_loc->requested_column_number() >= 0) { | 797 if (bpt_loc->requested_column_number() >= 0) { |
798 location.AddProperty("column", | 798 location.AddProperty("column", |
799 bpt_loc->requested_column_number()); | 799 bpt_loc->requested_column_number()); |
800 } | 800 } |
801 } else { | 801 } else { |
802 // This unresolved breakpoint was requested at some function entry. | 802 // This unresolved breakpoint was requested at some function entry. |
803 location.AddProperty("tokenPos", token_pos); | 803 location.AddProperty("tokenPos", token_pos.value()); |
804 } | 804 } |
805 } | 805 } |
806 | 806 |
807 | 807 |
808 void JSONObject::AddPropertyF(const char* name, | 808 void JSONObject::AddPropertyF(const char* name, |
809 const char* format, ...) const { | 809 const char* format, ...) const { |
810 stream_->PrintPropertyName(name); | 810 stream_->PrintPropertyName(name); |
811 va_list args; | 811 va_list args; |
812 va_start(args, format); | 812 va_start(args, format); |
813 intptr_t len = OS::VSNPrint(NULL, 0, format, args); | 813 intptr_t len = OS::VSNPrint(NULL, 0, format, args); |
(...skipping 21 matching lines...) Expand all Loading... |
835 intptr_t len2 = OS::VSNPrint(p, len+1, format, args); | 835 intptr_t len2 = OS::VSNPrint(p, len+1, format, args); |
836 va_end(args); | 836 va_end(args); |
837 ASSERT(len == len2); | 837 ASSERT(len == len2); |
838 stream_->buffer_.AddChar('"'); | 838 stream_->buffer_.AddChar('"'); |
839 stream_->AddEscapedUTF8String(p); | 839 stream_->AddEscapedUTF8String(p); |
840 stream_->buffer_.AddChar('"'); | 840 stream_->buffer_.AddChar('"'); |
841 free(p); | 841 free(p); |
842 } | 842 } |
843 | 843 |
844 } // namespace dart | 844 } // namespace dart |
OLD | NEW |