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

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

Issue 184653003: Support displaying of types in the observatory (back-end only for now): (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 9 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 | Annotate | Revision Log
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 "vm/isolate.h" 5 #include "vm/isolate.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "platform/json.h" 9 #include "platform/json.h"
10 #include "lib/mirrors.h" 10 #include "lib/mirrors.h"
(...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 ASSERT(this == Isolate::Current()); 746 ASSERT(this == Isolate::Current());
747 ASSERT(top_resource() == NULL); 747 ASSERT(top_resource() == NULL);
748 ASSERT((heap_ == NULL) || heap_->Verify()); 748 ASSERT((heap_ == NULL) || heap_->Verify());
749 749
750 // Create an area where we do have a zone and a handle scope so that we can 750 // Create an area where we do have a zone and a handle scope so that we can
751 // call VM functions while tearing this isolate down. 751 // call VM functions while tearing this isolate down.
752 { 752 {
753 StackZone stack_zone(this); 753 StackZone stack_zone(this);
754 HandleScope handle_scope(this); 754 HandleScope handle_scope(this);
755 755
756 // TODO(regis): Remove this debug/coverage code before submitting.
757 {
758 ObjectStore* store = object_store();
759 if (store != NULL) {
760 const Array& table = Array::Handle(store->canonical_type_arguments());
761 ASSERT(table.Length() > 0);
762 TypeArguments& type_args = TypeArguments::Handle();
763 const intptr_t table_size = table.Length() - 1;
764 JSONStream js;
765 for (intptr_t i = 0; i < table_size; i++) {
766 type_args ^= table.At(i);
767 if (!type_args.IsNull()) {
768 type_args.PrintToJSONStream(&js, false);
769 }
770 }
771 }
772 }
773
756 // Clean up debugger resources. 774 // Clean up debugger resources.
757 debugger()->Shutdown(); 775 debugger()->Shutdown();
758 776
759 // Close all the ports owned by this isolate. 777 // Close all the ports owned by this isolate.
760 PortMap::ClosePorts(message_handler()); 778 PortMap::ClosePorts(message_handler());
761 779
762 // Fail fast if anybody tries to post any more messsages to this isolate. 780 // Fail fast if anybody tries to post any more messsages to this isolate.
763 delete message_handler(); 781 delete message_handler();
764 set_message_handler(NULL); 782 set_message_handler(NULL);
765 783
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
906 // TODO(turnidge): Implement depth differently -- differentiate 924 // TODO(turnidge): Implement depth differently -- differentiate
907 // inlined frames. 925 // inlined frames.
908 jsobj.AddProperty("depth", (intptr_t)0); 926 jsobj.AddProperty("depth", (intptr_t)0);
909 } 927 }
910 928
911 const Library& lib = 929 const Library& lib =
912 Library::Handle(object_store()->root_library()); 930 Library::Handle(object_store()->root_library());
913 jsobj.AddProperty("rootLib", lib); 931 jsobj.AddProperty("rootLib", lib);
914 932
915 timer_list().PrintTimersToJSONProperty(&jsobj); 933 timer_list().PrintTimersToJSONProperty(&jsobj);
934
935 jsobj.AddPropertyF("canonicalTypeArguments", "isolates/%" Pd "/typearguments",
Ivan Posva 2014/03/11 08:02:32 Is this ("isolates/%" Pd "/...", main_port()) real
Cutch 2014/03/11 13:50:01 It's not necessary (and a bug) to include the isol
regis 2014/03/14 23:52:07 Done.
936 static_cast<intptr_t>(main_port()));
937
938 jsobj.AddPropertyF("canonicalTypeArgumentsWithCachedInstantiations",
Cutch 2014/03/11 13:50:01 Same here.
regis 2014/03/14 23:52:07 Done.
939 "isolates/%" Pd "/typeargumentswithinstantiations",
940 static_cast<intptr_t>(main_port()));
916 } 941 }
917 942
918 943
919 void Isolate::VisitIsolates(IsolateVisitor* visitor) { 944 void Isolate::VisitIsolates(IsolateVisitor* visitor) {
920 if (visitor == NULL) { 945 if (visitor == NULL) {
921 return; 946 return;
922 } 947 }
923 MonitorLocker ml(isolates_list_monitor_); 948 MonitorLocker ml(isolates_list_monitor_);
924 Isolate* current = isolates_list_head_; 949 Isolate* current = isolates_list_head_;
925 while (current) { 950 while (current) {
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1078 return func.raw(); 1103 return func.raw();
1079 } 1104 }
1080 1105
1081 1106
1082 void IsolateSpawnState::Cleanup() { 1107 void IsolateSpawnState::Cleanup() {
1083 SwitchIsolateScope switch_scope(isolate()); 1108 SwitchIsolateScope switch_scope(isolate());
1084 Dart::ShutdownIsolate(); 1109 Dart::ShutdownIsolate();
1085 } 1110 }
1086 1111
1087 } // namespace dart 1112 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/isolate.h ('k') | runtime/vm/object.h » ('j') | runtime/vm/object.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698