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

Side by Side Diff: src/frames.cc

Issue 8803013: Improve TraceIC logging (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: review feedback Created 9 years 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 | « no previous file | src/ic.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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 705 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 bool print_line_number) { 716 bool print_line_number) {
717 // constructor calls 717 // constructor calls
718 HandleScope scope; 718 HandleScope scope;
719 AssertNoAllocation no_allocation; 719 AssertNoAllocation no_allocation;
720 JavaScriptFrameIterator it; 720 JavaScriptFrameIterator it;
721 while (!it.done()) { 721 while (!it.done()) {
722 if (it.frame()->is_java_script()) { 722 if (it.frame()->is_java_script()) {
723 JavaScriptFrame* frame = it.frame(); 723 JavaScriptFrame* frame = it.frame();
724 if (frame->IsConstructor()) PrintF(file, "new "); 724 if (frame->IsConstructor()) PrintF(file, "new ");
725 // function name 725 // function name
726 Object* fun = frame->function(); 726 Object* maybe_fun = frame->function();
727 if (fun->IsJSFunction()) { 727 if (maybe_fun->IsJSFunction()) {
728 SharedFunctionInfo* shared = JSFunction::cast(fun)->shared(); 728 JSFunction* fun = JSFunction::cast(maybe_fun);
729 shared->DebugName()->ShortPrint(file); 729 fun->PrintName();
730 Code* js_code = frame->unchecked_code();
731 Address pc = frame->pc();
732 int code_offset =
733 static_cast<int>(pc - js_code->instruction_start());
734 PrintF("+%d", code_offset);
735 SharedFunctionInfo* shared = fun->shared();
730 if (print_line_number) { 736 if (print_line_number) {
731 Address pc = frame->pc();
732 Code* code = Code::cast( 737 Code* code = Code::cast(
733 v8::internal::Isolate::Current()->heap()->FindCodeObject(pc)); 738 v8::internal::Isolate::Current()->heap()->FindCodeObject(pc));
734 int source_pos = code->SourcePosition(pc); 739 int source_pos = code->SourcePosition(pc);
735 Object* maybe_script = shared->script(); 740 Object* maybe_script = shared->script();
736 if (maybe_script->IsScript()) { 741 if (maybe_script->IsScript()) {
737 Handle<Script> script(Script::cast(maybe_script)); 742 Handle<Script> script(Script::cast(maybe_script));
738 int line = GetScriptLineNumberSafe(script, source_pos) + 1; 743 int line = GetScriptLineNumberSafe(script, source_pos) + 1;
739 Object* script_name_raw = script->name(); 744 Object* script_name_raw = script->name();
740 if (script_name_raw->IsString()) { 745 if (script_name_raw->IsString()) {
741 String* script_name = String::cast(script->name()); 746 String* script_name = String::cast(script->name());
742 SmartArrayPointer<char> c_script_name = 747 SmartArrayPointer<char> c_script_name =
743 script_name->ToCString(DISALLOW_NULLS, 748 script_name->ToCString(DISALLOW_NULLS,
744 ROBUST_STRING_TRAVERSAL); 749 ROBUST_STRING_TRAVERSAL);
745 PrintF(file, " at %s:%d", *c_script_name, line); 750 PrintF(file, " at %s:%d", *c_script_name, line);
746 } else { 751 } else {
747 PrintF(file, "at <unknown>:%d", line); 752 PrintF(file, "at <unknown>:%d", line);
748 } 753 }
749 } else { 754 } else {
750 PrintF(file, " at <unknown>:<unknown>"); 755 PrintF(file, " at <unknown>:<unknown>");
751 } 756 }
752 } 757 }
753 } else { 758 } else {
754 fun->ShortPrint(file); 759 PrintF("<unknown>");
755 } 760 }
756 761
757 if (print_args) { 762 if (print_args) {
758 // function arguments 763 // function arguments
759 // (we are intentionally only printing the actually 764 // (we are intentionally only printing the actually
760 // supplied parameters, not all parameters required) 765 // supplied parameters, not all parameters required)
761 PrintF(file, "(this="); 766 PrintF(file, "(this=");
762 frame->receiver()->ShortPrint(file); 767 frame->receiver()->ShortPrint(file);
763 const int length = frame->ComputeParametersCount(); 768 const int length = frame->ComputeParametersCount();
764 for (int i = 0; i < length; i++) { 769 for (int i = 0; i < length; i++) {
(...skipping 616 matching lines...) Expand 10 before | Expand all | Expand 10 after
1381 ZoneList<StackFrame*> list(10); 1386 ZoneList<StackFrame*> list(10);
1382 for (StackFrameIterator it; !it.done(); it.Advance()) { 1387 for (StackFrameIterator it; !it.done(); it.Advance()) {
1383 StackFrame* frame = AllocateFrameCopy(it.frame()); 1388 StackFrame* frame = AllocateFrameCopy(it.frame());
1384 list.Add(frame); 1389 list.Add(frame);
1385 } 1390 }
1386 return list.ToVector(); 1391 return list.ToVector();
1387 } 1392 }
1388 1393
1389 1394
1390 } } // namespace v8::internal 1395 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | src/ic.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698