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

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

Issue 23072026: fix cpp11 compile errors (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 4 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
« no previous file with comments | « runtime/vm/intermediate_language.cc ('k') | runtime/vm/json_stream.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) 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 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 ASSERT(isolate == Isolate::Current()); 266 ASSERT(isolate == Isolate::Current());
267 } 267 }
268 #endif 268 #endif
269 269
270 270
271 void DeferredDouble::Materialize() { 271 void DeferredDouble::Materialize() {
272 RawDouble** double_slot = reinterpret_cast<RawDouble**>(slot()); 272 RawDouble** double_slot = reinterpret_cast<RawDouble**>(slot());
273 *double_slot = Double::New(value()); 273 *double_slot = Double::New(value());
274 274
275 if (FLAG_trace_deoptimization_verbose) { 275 if (FLAG_trace_deoptimization_verbose) {
276 OS::PrintErr("materializing double at %"Px": %g\n", 276 OS::PrintErr("materializing double at %" Px ": %g\n",
277 reinterpret_cast<uword>(slot()), value()); 277 reinterpret_cast<uword>(slot()), value());
278 } 278 }
279 } 279 }
280 280
281 281
282 void DeferredMint::Materialize() { 282 void DeferredMint::Materialize() {
283 RawMint** mint_slot = reinterpret_cast<RawMint**>(slot()); 283 RawMint** mint_slot = reinterpret_cast<RawMint**>(slot());
284 ASSERT(!Smi::IsValid64(value())); 284 ASSERT(!Smi::IsValid64(value()));
285 Mint& mint = Mint::Handle(); 285 Mint& mint = Mint::Handle();
286 mint ^= Integer::New(value()); 286 mint ^= Integer::New(value());
287 *mint_slot = mint.raw(); 287 *mint_slot = mint.raw();
288 288
289 if (FLAG_trace_deoptimization_verbose) { 289 if (FLAG_trace_deoptimization_verbose) {
290 OS::PrintErr("materializing mint at %"Px": %"Pd64"\n", 290 OS::PrintErr("materializing mint at %" Px ": %" Pd64 "\n",
291 reinterpret_cast<uword>(slot()), value()); 291 reinterpret_cast<uword>(slot()), value());
292 } 292 }
293 } 293 }
294 294
295 295
296 void DeferredFloat32x4::Materialize() { 296 void DeferredFloat32x4::Materialize() {
297 RawFloat32x4** float32x4_slot = reinterpret_cast<RawFloat32x4**>(slot()); 297 RawFloat32x4** float32x4_slot = reinterpret_cast<RawFloat32x4**>(slot());
298 RawFloat32x4* raw_float32x4 = Float32x4::New(value()); 298 RawFloat32x4* raw_float32x4 = Float32x4::New(value());
299 *float32x4_slot = raw_float32x4; 299 *float32x4_slot = raw_float32x4;
300 300
301 if (FLAG_trace_deoptimization_verbose) { 301 if (FLAG_trace_deoptimization_verbose) {
302 float x = raw_float32x4->x(); 302 float x = raw_float32x4->x();
303 float y = raw_float32x4->y(); 303 float y = raw_float32x4->y();
304 float z = raw_float32x4->z(); 304 float z = raw_float32x4->z();
305 float w = raw_float32x4->w(); 305 float w = raw_float32x4->w();
306 OS::PrintErr("materializing Float32x4 at %"Px": %g,%g,%g,%g\n", 306 OS::PrintErr("materializing Float32x4 at %" Px ": %g,%g,%g,%g\n",
307 reinterpret_cast<uword>(slot()), x, y, z, w); 307 reinterpret_cast<uword>(slot()), x, y, z, w);
308 } 308 }
309 } 309 }
310 310
311 311
312 void DeferredUint32x4::Materialize() { 312 void DeferredUint32x4::Materialize() {
313 RawUint32x4** uint32x4_slot = reinterpret_cast<RawUint32x4**>(slot()); 313 RawUint32x4** uint32x4_slot = reinterpret_cast<RawUint32x4**>(slot());
314 RawUint32x4* raw_uint32x4 = Uint32x4::New(value()); 314 RawUint32x4* raw_uint32x4 = Uint32x4::New(value());
315 *uint32x4_slot = raw_uint32x4; 315 *uint32x4_slot = raw_uint32x4;
316 316
317 if (FLAG_trace_deoptimization_verbose) { 317 if (FLAG_trace_deoptimization_verbose) {
318 uint32_t x = raw_uint32x4->x(); 318 uint32_t x = raw_uint32x4->x();
319 uint32_t y = raw_uint32x4->y(); 319 uint32_t y = raw_uint32x4->y();
320 uint32_t z = raw_uint32x4->z(); 320 uint32_t z = raw_uint32x4->z();
321 uint32_t w = raw_uint32x4->w(); 321 uint32_t w = raw_uint32x4->w();
322 OS::PrintErr("materializing Uint32x4 at %"Px": %x,%x,%x,%x\n", 322 OS::PrintErr("materializing Uint32x4 at %" Px ": %x,%x,%x,%x\n",
323 reinterpret_cast<uword>(slot()), x, y, z, w); 323 reinterpret_cast<uword>(slot()), x, y, z, w);
324 } 324 }
325 } 325 }
326 326
327 327
328 void DeferredObjectRef::Materialize() { 328 void DeferredObjectRef::Materialize() {
329 DeferredObject* obj = Isolate::Current()->GetDeferredObject(index()); 329 DeferredObject* obj = Isolate::Current()->GetDeferredObject(index());
330 *slot() = obj->object(); 330 *slot() = obj->object();
331 if (FLAG_trace_deoptimization_verbose) { 331 if (FLAG_trace_deoptimization_verbose) {
332 OS::PrintErr("writing instance ref at %"Px": %s\n", 332 OS::PrintErr("writing instance ref at %" Px ": %s\n",
333 reinterpret_cast<uword>(slot()), 333 reinterpret_cast<uword>(slot()),
334 Instance::Handle(obj->object()).ToCString()); 334 Instance::Handle(obj->object()).ToCString());
335 } 335 }
336 } 336 }
337 337
338 338
339 RawInstance* DeferredObject::object() { 339 RawInstance* DeferredObject::object() {
340 if (object_ == NULL) { 340 if (object_ == NULL) {
341 Materialize(); 341 Materialize();
342 } 342 }
343 return object_->raw(); 343 return object_->raw();
344 } 344 }
345 345
346 346
347 void DeferredObject::Materialize() { 347 void DeferredObject::Materialize() {
348 Class& cls = Class::Handle(); 348 Class& cls = Class::Handle();
349 cls ^= GetClass(); 349 cls ^= GetClass();
350 350
351 if (FLAG_trace_deoptimization_verbose) { 351 if (FLAG_trace_deoptimization_verbose) {
352 OS::PrintErr("materializing instance of %s (%"Px", %"Pd" fields)\n", 352 OS::PrintErr("materializing instance of %s (%" Px ", %" Pd " fields)\n",
353 cls.ToCString(), 353 cls.ToCString(),
354 reinterpret_cast<uword>(args_), 354 reinterpret_cast<uword>(args_),
355 field_count_); 355 field_count_);
356 } 356 }
357 357
358 const Instance& obj = Instance::ZoneHandle(Instance::New(cls)); 358 const Instance& obj = Instance::ZoneHandle(Instance::New(cls));
359 359
360 Field& field = Field::Handle(); 360 Field& field = Field::Handle();
361 Object& value = Object::Handle(); 361 Object& value = Object::Handle();
362 for (intptr_t i = 0; i < field_count_; i++) { 362 for (intptr_t i = 0; i < field_count_; i++) {
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 Class& cls = Class::Handle(); 723 Class& cls = Class::Handle();
724 ClassDictionaryIterator iter(library, 724 ClassDictionaryIterator iter(library,
725 ClassDictionaryIterator::kIteratePrivate); 725 ClassDictionaryIterator::kIteratePrivate);
726 while (iter.HasNext()) { 726 while (iter.HasNext()) {
727 cls = iter.GetNextClass(); 727 cls = iter.GetNextClass();
728 AddFunctionsFromClass(cls, &invoked_functions); 728 AddFunctionsFromClass(cls, &invoked_functions);
729 } 729 }
730 } 730 }
731 invoked_functions.Sort(MostUsedFunctionFirst); 731 invoked_functions.Sort(MostUsedFunctionFirst);
732 for (int i = 0; i < invoked_functions.length(); i++) { 732 for (int i = 0; i < invoked_functions.length(); i++) {
733 OS::Print("%10"Pd" x %s\n", 733 OS::Print("%10" Pd " x %s\n",
734 invoked_functions[i]->usage_counter(), 734 invoked_functions[i]->usage_counter(),
735 invoked_functions[i]->ToFullyQualifiedCString()); 735 invoked_functions[i]->ToFullyQualifiedCString());
736 } 736 }
737 } 737 }
738 738
739 739
740 class FinalizeWeakPersistentHandlesVisitor : public HandleVisitor { 740 class FinalizeWeakPersistentHandlesVisitor : public HandleVisitor {
741 public: 741 public:
742 FinalizeWeakPersistentHandlesVisitor() { 742 FinalizeWeakPersistentHandlesVisitor() {
743 } 743 }
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 874
875 875
876 static Monitor* status_sync = NULL; 876 static Monitor* status_sync = NULL;
877 877
878 878
879 bool Isolate::FetchStacktrace() { 879 bool Isolate::FetchStacktrace() {
880 Isolate* isolate = Isolate::Current(); 880 Isolate* isolate = Isolate::Current();
881 MonitorLocker ml(status_sync); 881 MonitorLocker ml(status_sync);
882 DebuggerStackTrace* stack = Debugger::CollectStackTrace(); 882 DebuggerStackTrace* stack = Debugger::CollectStackTrace();
883 TextBuffer buffer(256); 883 TextBuffer buffer(256);
884 buffer.Printf("{ \"handle\": \"0x%"Px64"\", \"stacktrace\": [ ", 884 buffer.Printf("{ \"handle\": \"0x%" Px64 "\", \"stacktrace\": [ ",
885 reinterpret_cast<int64_t>(isolate)); 885 reinterpret_cast<int64_t>(isolate));
886 intptr_t n_frames = stack->Length(); 886 intptr_t n_frames = stack->Length();
887 String& url = String::Handle(); 887 String& url = String::Handle();
888 String& function = String::Handle(); 888 String& function = String::Handle();
889 for (int i = 0; i < n_frames; i++) { 889 for (int i = 0; i < n_frames; i++) {
890 if (i > 0) { 890 if (i > 0) {
891 buffer.Printf(", "); 891 buffer.Printf(", ");
892 } 892 }
893 ActivationFrame* frame = stack->ActivationFrameAt(i); 893 ActivationFrame* frame = stack->ActivationFrameAt(i);
894 url ^= frame->SourceUrl(); 894 url ^= frame->SourceUrl();
895 function ^= frame->function().UserVisibleName(); 895 function ^= frame->function().UserVisibleName();
896 buffer.Printf("{ \"url\": \"%s\", ", url.ToCString()); 896 buffer.Printf("{ \"url\": \"%s\", ", url.ToCString());
897 buffer.Printf("\"line\": %"Pd", ", frame->LineNumber()); 897 buffer.Printf("\"line\": %" Pd ", ", frame->LineNumber());
898 buffer.Printf("\"function\": \"%s\", ", function.ToCString()); 898 buffer.Printf("\"function\": \"%s\", ", function.ToCString());
899 899
900 const Code& code = frame->code(); 900 const Code& code = frame->code();
901 buffer.Printf("\"code\": { "); 901 buffer.Printf("\"code\": { ");
902 buffer.Printf("\"alive\": %s, ", code.is_alive() ? "false" : "true"); 902 buffer.Printf("\"alive\": %s, ", code.is_alive() ? "false" : "true");
903 buffer.Printf("\"optimized\": %s }}", 903 buffer.Printf("\"optimized\": %s }}",
904 code.is_optimized() ? "false" : "true"); 904 code.is_optimized() ? "false" : "true");
905 } 905 }
906 buffer.Printf("]}"); 906 buffer.Printf("]}");
907 isolate->stacktrace_ = OS::StrNDup(buffer.buf(), buffer.length()); 907 isolate->stacktrace_ = OS::StrNDup(buffer.buf(), buffer.length());
908 ml.Notify(); 908 ml.Notify();
909 return true; 909 return true;
910 } 910 }
911 911
912 912
913 bool Isolate::FetchStackFrameDetails() { 913 bool Isolate::FetchStackFrameDetails() {
914 Isolate* isolate = Isolate::Current(); 914 Isolate* isolate = Isolate::Current();
915 ASSERT(isolate->stack_frame_index_ >= 0); 915 ASSERT(isolate->stack_frame_index_ >= 0);
916 MonitorLocker ml(status_sync); 916 MonitorLocker ml(status_sync);
917 DebuggerStackTrace* stack = Debugger::CollectStackTrace(); 917 DebuggerStackTrace* stack = Debugger::CollectStackTrace();
918 intptr_t frame_index = isolate->stack_frame_index_; 918 intptr_t frame_index = isolate->stack_frame_index_;
919 if (frame_index >= stack->Length()) { 919 if (frame_index >= stack->Length()) {
920 // Frame no longer available. 920 // Frame no longer available.
921 return NULL; 921 return NULL;
922 } 922 }
923 ActivationFrame* frame = stack->ActivationFrameAt(frame_index); 923 ActivationFrame* frame = stack->ActivationFrameAt(frame_index);
924 TextBuffer buffer(256); 924 TextBuffer buffer(256);
925 buffer.Printf("{ \"handle\": \"0x%"Px64"\", \"frame_index\": %"Pd", ", 925 buffer.Printf("{ \"handle\": \"0x%" Px64 "\", \"frame_index\": %" Pd ", ",
926 reinterpret_cast<int64_t>(isolate), frame_index); 926 reinterpret_cast<int64_t>(isolate), frame_index);
927 927
928 const Code& code = frame->code(); 928 const Code& code = frame->code();
929 buffer.Printf("\"code\": { \"size\": %"Pd", ", code.Size()); 929 buffer.Printf("\"code\": { \"size\": %" Pd ", ", code.Size());
930 buffer.Printf("\"alive\": %s, ", code.is_alive() ? "false" : "true"); 930 buffer.Printf("\"alive\": %s, ", code.is_alive() ? "false" : "true");
931 buffer.Printf("\"optimized\": %s }, ", 931 buffer.Printf("\"optimized\": %s }, ",
932 code.is_optimized() ? "false" : "true"); 932 code.is_optimized() ? "false" : "true");
933 // TODO(tball): add compilation stats (time, etc.), when available. 933 // TODO(tball): add compilation stats (time, etc.), when available.
934 934
935 buffer.Printf("\"local_vars\": [ "); 935 buffer.Printf("\"local_vars\": [ ");
936 intptr_t n_local_vars = frame->NumLocalVariables(); 936 intptr_t n_local_vars = frame->NumLocalVariables();
937 String& var_name = String::Handle(); 937 String& var_name = String::Handle();
938 Instance& value = Instance::Handle(); 938 Instance& value = Instance::Handle();
939 for (int i = 0; i < n_local_vars; i++) { 939 for (int i = 0; i < n_local_vars; i++) {
940 if (i > 0) { 940 if (i > 0) {
941 buffer.Printf(", "); 941 buffer.Printf(", ");
942 } 942 }
943 intptr_t token_pos, end_pos; 943 intptr_t token_pos, end_pos;
944 frame->VariableAt(i, &var_name, &token_pos, &end_pos, &value); 944 frame->VariableAt(i, &var_name, &token_pos, &end_pos, &value);
945 buffer.Printf( 945 buffer.Printf(
946 "{ \"name\": \"%s\", \"pos\": %"Pd", \"end_pos\": %"Pd", " 946 "{ \"name\": \"%s\", \"pos\": %" Pd ", \"end_pos\": %" Pd ", "
947 "\"value\": \"%s\" }", 947 "\"value\": \"%s\" }",
948 var_name.ToCString(), token_pos, end_pos, value.ToCString()); 948 var_name.ToCString(), token_pos, end_pos, value.ToCString());
949 } 949 }
950 buffer.Printf("]}"); 950 buffer.Printf("]}");
951 isolate->stacktrace_ = OS::StrNDup(buffer.buf(), buffer.length()); 951 isolate->stacktrace_ = OS::StrNDup(buffer.buf(), buffer.length());
952 ml.Notify(); 952 ml.Notify();
953 return true; 953 return true;
954 } 954 }
955 955
956 956
(...skipping 11 matching lines...) Expand all
968 ml.Wait(1000); 968 ml.Wait(1000);
969 } 969 }
970 } 970 }
971 SetVmStatsCallback(NULL); 971 SetVmStatsCallback(NULL);
972 } 972 }
973 char* result = stacktrace_; 973 char* result = stacktrace_;
974 stacktrace_ = NULL; 974 stacktrace_ = NULL;
975 if (result == NULL) { 975 if (result == NULL) {
976 // Return empty stack. 976 // Return empty stack.
977 TextBuffer buffer(256); 977 TextBuffer buffer(256);
978 buffer.Printf("{ \"handle\": \"0x%"Px64"\", \"stacktrace\": []}", 978 buffer.Printf("{ \"handle\": \"0x%" Px64 "\", \"stacktrace\": []}",
979 reinterpret_cast<int64_t>(this)); 979 reinterpret_cast<int64_t>(this));
980 980
981 result = OS::StrNDup(buffer.buf(), buffer.length()); 981 result = OS::StrNDup(buffer.buf(), buffer.length());
982 } 982 }
983 ASSERT(result != NULL); 983 ASSERT(result != NULL);
984 // result is freed by VmStats::WebServer(). 984 // result is freed by VmStats::WebServer().
985 return result; 985 return result;
986 } 986 }
987 987
988 988
989 char* Isolate::GetStatusStacktrace() { 989 char* Isolate::GetStatusStacktrace() {
990 return DoStacktraceInterrupt(&FetchStacktrace); 990 return DoStacktraceInterrupt(&FetchStacktrace);
991 } 991 }
992 992
993 char* Isolate::GetStatusStackFrame(intptr_t index) { 993 char* Isolate::GetStatusStackFrame(intptr_t index) {
994 ASSERT(index >= 0); 994 ASSERT(index >= 0);
995 stack_frame_index_ = index; 995 stack_frame_index_ = index;
996 char* result = DoStacktraceInterrupt(&FetchStackFrameDetails); 996 char* result = DoStacktraceInterrupt(&FetchStackFrameDetails);
997 stack_frame_index_ = -1; 997 stack_frame_index_ = -1;
998 return result; 998 return result;
999 } 999 }
1000 1000
1001 1001
1002 // Returns the isolate's general detail information. 1002 // Returns the isolate's general detail information.
1003 char* Isolate::GetStatusDetails() { 1003 char* Isolate::GetStatusDetails() {
1004 const char* format = "{\n" 1004 const char* format = "{\n"
1005 " \"handle\": \"0x%"Px64"\",\n" 1005 " \"handle\": \"0x%" Px64 "\",\n"
1006 " \"name\": \"%s\",\n" 1006 " \"name\": \"%s\",\n"
1007 " \"port\": %"Pd",\n" 1007 " \"port\": %" Pd ",\n"
1008 " \"starttime\": %"Pd",\n" 1008 " \"starttime\": %" Pd ",\n"
1009 " \"stacklimit\": %"Pd",\n" 1009 " \"stacklimit\": %" Pd ",\n"
1010 " \"newspace\": {\n" 1010 " \"newspace\": {\n"
1011 " \"used\": %"Pd",\n" 1011 " \"used\": %" Pd ",\n"
1012 " \"capacity\": %"Pd"\n" 1012 " \"capacity\": %" Pd "\n"
1013 " },\n" 1013 " },\n"
1014 " \"oldspace\": {\n" 1014 " \"oldspace\": {\n"
1015 " \"used\": %"Pd",\n" 1015 " \"used\": %" Pd ",\n"
1016 " \"capacity\": %"Pd"\n" 1016 " \"capacity\": %" Pd "\n"
1017 " }\n" 1017 " }\n"
1018 "}"; 1018 "}";
1019 char buffer[300]; 1019 char buffer[300];
1020 int64_t address = reinterpret_cast<int64_t>(this); 1020 int64_t address = reinterpret_cast<int64_t>(this);
1021 int n = OS::SNPrint(buffer, 300, format, address, name(), main_port(), 1021 int n = OS::SNPrint(buffer, 300, format, address, name(), main_port(),
1022 (start_time() / 1000L), saved_stack_limit(), 1022 (start_time() / 1000L), saved_stack_limit(),
1023 heap()->Used(Heap::kNew) / KB, 1023 heap()->Used(Heap::kNew) / KB,
1024 heap()->Capacity(Heap::kNew) / KB, 1024 heap()->Capacity(Heap::kNew) / KB,
1025 heap()->Used(Heap::kOld) / KB, 1025 heap()->Used(Heap::kOld) / KB,
1026 heap()->Capacity(Heap::kOld) / KB); 1026 heap()->Capacity(Heap::kOld) / KB);
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
1185 return func.raw(); 1185 return func.raw();
1186 } 1186 }
1187 1187
1188 1188
1189 void IsolateSpawnState::Cleanup() { 1189 void IsolateSpawnState::Cleanup() {
1190 SwitchIsolateScope switch_scope(isolate()); 1190 SwitchIsolateScope switch_scope(isolate());
1191 Dart::ShutdownIsolate(); 1191 Dart::ShutdownIsolate();
1192 } 1192 }
1193 1193
1194 } // namespace dart 1194 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/intermediate_language.cc ('k') | runtime/vm/json_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698