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

Side by Side Diff: runtime/vm/json_stream.cc

Issue 1312763010: Support column-based breakpoints in the VM and Observatory. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: hausner review Created 5 years, 3 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 | « runtime/vm/json_stream.h ('k') | runtime/vm/object.h » ('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) 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 668 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 ASSERT(len == len2); 679 ASSERT(len == len2);
680 stream_->buffer_.AddChar('"'); 680 stream_->buffer_.AddChar('"');
681 stream_->AddEscapedUTF8String(p); 681 stream_->AddEscapedUTF8String(p);
682 stream_->buffer_.AddChar('"'); 682 stream_->buffer_.AddChar('"');
683 free(p); 683 free(p);
684 } 684 }
685 685
686 686
687 void JSONObject::AddLocation(const Script& script, 687 void JSONObject::AddLocation(const Script& script,
688 intptr_t token_pos, 688 intptr_t token_pos,
689 intptr_t end_token_pos) { 689 intptr_t end_token_pos) const {
690 JSONObject location(this, "location"); 690 JSONObject location(this, "location");
691 location.AddProperty("type", "SourceLocation"); 691 location.AddProperty("type", "SourceLocation");
692 location.AddProperty("script", script); 692 location.AddProperty("script", script);
693 location.AddProperty("tokenPos", token_pos); 693 location.AddProperty("tokenPos", token_pos);
694 if (end_token_pos >= 0) { 694 if (end_token_pos >= 0) {
695 location.AddProperty("endTokenPos", end_token_pos); 695 location.AddProperty("endTokenPos", end_token_pos);
696 } 696 }
697 } 697 }
698 698
699 699
700 void JSONObject::AddLocation(const BreakpointLocation* bpt_loc) const {
701 ASSERT(bpt_loc->IsResolved());
702
703 Isolate* isolate = Isolate::Current();
704 Library& library = Library::Handle(isolate);
705 Script& script = Script::Handle(isolate);
706 intptr_t token_pos;
707 bpt_loc->GetCodeLocation(&library, &script, &token_pos);
708 AddLocation(script, token_pos);
709 }
710
711
712 void JSONObject::AddUnresolvedLocation(
713 const BreakpointLocation* bpt_loc) const {
714 ASSERT(!bpt_loc->IsResolved());
715
716 Isolate* isolate = Isolate::Current();
717 Library& library = Library::Handle(isolate);
718 Script& script = Script::Handle(isolate);
719 intptr_t token_pos;
720 bpt_loc->GetCodeLocation(&library, &script, &token_pos);
721
722 JSONObject location(this, "location");
723 location.AddProperty("type", "UnresolvedSourceLocation");
724 if (!script.IsNull()) {
725 location.AddProperty("script", script);
726 } else {
727 const String& scriptUri = String::Handle(isolate, bpt_loc->url());
728 location.AddPropertyStr("scriptUri", scriptUri);
729 }
730 if (bpt_loc->requested_line_number() >= 0) {
731 // This unresolved breakpoint was specified at a particular line.
732 location.AddProperty("line", bpt_loc->requested_line_number());
733 if (bpt_loc->requested_column_number() >= 0) {
734 location.AddProperty("column",
735 bpt_loc->requested_column_number());
736 }
737 } else {
738 // This unresolved breakpoint was requested at some function entry.
739 location.AddProperty("tokenPos", token_pos);
740 }
741 }
742
700 743
701 void JSONObject::AddPropertyF(const char* name, 744 void JSONObject::AddPropertyF(const char* name,
702 const char* format, ...) const { 745 const char* format, ...) const {
703 stream_->PrintPropertyName(name); 746 stream_->PrintPropertyName(name);
704 va_list args; 747 va_list args;
705 va_start(args, format); 748 va_start(args, format);
706 intptr_t len = OS::VSNPrint(NULL, 0, format, args); 749 intptr_t len = OS::VSNPrint(NULL, 0, format, args);
707 va_end(args); 750 va_end(args);
708 char* p = reinterpret_cast<char*>(malloc(len+1)); 751 char* p = reinterpret_cast<char*>(malloc(len+1));
709 va_start(args, format); 752 va_start(args, format);
(...skipping 18 matching lines...) Expand all
728 intptr_t len2 = OS::VSNPrint(p, len+1, format, args); 771 intptr_t len2 = OS::VSNPrint(p, len+1, format, args);
729 va_end(args); 772 va_end(args);
730 ASSERT(len == len2); 773 ASSERT(len == len2);
731 stream_->buffer_.AddChar('"'); 774 stream_->buffer_.AddChar('"');
732 stream_->AddEscapedUTF8String(p); 775 stream_->AddEscapedUTF8String(p);
733 stream_->buffer_.AddChar('"'); 776 stream_->buffer_.AddChar('"');
734 free(p); 777 free(p);
735 } 778 }
736 779
737 } // namespace dart 780 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/json_stream.h ('k') | runtime/vm/object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698