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

Side by Side Diff: src/debug-delay.js

Issue 6223: Make sure that the name accessor on functions return the expected... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 12 years, 2 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 | « src/date-delay.js ('k') | src/math.js » ('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 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 var next_break_point_number = 1; 68 var next_break_point_number = 1;
69 var break_points = []; 69 var break_points = [];
70 var script_break_points = []; 70 var script_break_points = [];
71 71
72 72
73 // Create a new break point object and add it to the list of break points. 73 // Create a new break point object and add it to the list of break points.
74 function MakeBreakPoint(source_position, opt_line, opt_column, opt_script_break_ point) { 74 function MakeBreakPoint(source_position, opt_line, opt_column, opt_script_break_ point) {
75 var break_point = new BreakPoint(source_position, opt_line, opt_column, opt_sc ript_break_point); 75 var break_point = new BreakPoint(source_position, opt_line, opt_column, opt_sc ript_break_point);
76 break_points.push(break_point); 76 break_points.push(break_point);
77 return break_point; 77 return break_point;
78 }; 78 }
79 79
80 80
81 // Object representing a break point. 81 // Object representing a break point.
82 // NOTE: This object does not have a reference to the function having break 82 // NOTE: This object does not have a reference to the function having break
83 // point as this would cause function not to be garbage collected when it is 83 // point as this would cause function not to be garbage collected when it is
84 // not used any more. We do not want break points to keep functions alive. 84 // not used any more. We do not want break points to keep functions alive.
85 function BreakPoint(source_position, opt_line, opt_column, opt_script_break_poin t) { 85 function BreakPoint(source_position, opt_line, opt_column, opt_script_break_poin t) {
86 this.source_position_ = source_position; 86 this.source_position_ = source_position;
87 this.source_line_ = opt_line; 87 this.source_line_ = opt_line;
88 this.source_column_ = opt_column; 88 this.source_column_ = opt_column;
89 if (opt_script_break_point) { 89 if (opt_script_break_point) {
90 this.script_break_point_ = opt_script_break_point; 90 this.script_break_point_ = opt_script_break_point;
91 } else { 91 } else {
92 this.number_ = next_break_point_number++; 92 this.number_ = next_break_point_number++;
93 } 93 }
94 this.hit_count_ = 0; 94 this.hit_count_ = 0;
95 this.active_ = true; 95 this.active_ = true;
96 this.condition_ = null; 96 this.condition_ = null;
97 this.ignoreCount_ = 0; 97 this.ignoreCount_ = 0;
98 }; 98 }
99 99
100 100
101 BreakPoint.prototype.number = function() { 101 BreakPoint.prototype.number = function() {
102 return this.number_; 102 return this.number_;
103 }; 103 };
104 104
105 105
106 BreakPoint.prototype.func = function() { 106 BreakPoint.prototype.func = function() {
107 return this.func_; 107 return this.func_;
108 }; 108 };
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 197
198 // Break point triggered. 198 // Break point triggered.
199 return true; 199 return true;
200 }; 200 };
201 201
202 202
203 // Function called from the runtime when a break point is hit. Returns true if 203 // Function called from the runtime when a break point is hit. Returns true if
204 // the break point is triggered and supposed to break execution. 204 // the break point is triggered and supposed to break execution.
205 function IsBreakPointTriggered(break_id, break_point) { 205 function IsBreakPointTriggered(break_id, break_point) {
206 return break_point.isTriggered(MakeExecutionState(break_id)); 206 return break_point.isTriggered(MakeExecutionState(break_id));
207 }; 207 }
208 208
209 209
210 // Object representing a script break point. The script is referenced by its 210 // Object representing a script break point. The script is referenced by its
211 // script name and the break point is represented as line and column. 211 // script name and the break point is represented as line and column.
212 function ScriptBreakPoint(script_name, opt_line, opt_column) { 212 function ScriptBreakPoint(script_name, opt_line, opt_column) {
213 this.script_name_ = script_name; 213 this.script_name_ = script_name;
214 this.line_ = opt_line || 0; 214 this.line_ = opt_line || 0;
215 this.column_ = opt_column; 215 this.column_ = opt_column;
216 this.hit_count_ = 0; 216 this.hit_count_ = 0;
217 this.active_ = true; 217 this.active_ = true;
218 this.condition_ = null; 218 this.condition_ = null;
219 this.ignoreCount_ = 0; 219 this.ignoreCount_ = 0;
220 }; 220 }
221 221
222 222
223 ScriptBreakPoint.prototype.number = function() { 223 ScriptBreakPoint.prototype.number = function() {
224 return this.number_; 224 return this.number_;
225 }; 225 };
226 226
227 227
228 ScriptBreakPoint.prototype.script_name = function() { 228 ScriptBreakPoint.prototype.script_name = function() {
229 return this.script_name_; 229 return this.script_name_;
230 }; 230 };
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 347
348 348
349 // Function called from runtime when a new script is compiled to set any script 349 // Function called from runtime when a new script is compiled to set any script
350 // break points set in this script. 350 // break points set in this script.
351 function UpdateScriptBreakPoints(script) { 351 function UpdateScriptBreakPoints(script) {
352 for (var i = 0; i < script_break_points.length; i++) { 352 for (var i = 0; i < script_break_points.length; i++) {
353 if (script_break_points[i].script_name() == script.name) { 353 if (script_break_points[i].script_name() == script.name) {
354 script_break_points[i].set(script); 354 script_break_points[i].set(script);
355 } 355 }
356 } 356 }
357 }; 357 }
358 358
359 359
360 // Function called from the runtime to handle a debug request receiced from the 360 // Function called from the runtime to handle a debug request receiced from the
361 // debugger. When this function is called the debugger is in the broken state 361 // debugger. When this function is called the debugger is in the broken state
362 // reflected by the exec_state parameter. When pending requests are handled the 362 // reflected by the exec_state parameter. When pending requests are handled the
363 // parameter stopping indicate the expected running state. 363 // parameter stopping indicate the expected running state.
364 function ProcessDebugRequest(exec_state, request, stopping) { 364 function ProcessDebugRequest(exec_state, request, stopping) {
365 return exec_state.debugCommandProcessor().processDebugJSONRequest(request, sto pping); 365 return exec_state.debugCommandProcessor().processDebugJSONRequest(request, sto pping);
366 } 366 }
367 367
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
669 669
670 // Get all the scripts currently loaded. Locating all the scripts is based on 670 // Get all the scripts currently loaded. Locating all the scripts is based on
671 // scanning the heap. 671 // scanning the heap.
672 Debug.scripts = function() { 672 Debug.scripts = function() {
673 // Collect all scripts in the heap. 673 // Collect all scripts in the heap.
674 return %DebugGetLoadedScripts(); 674 return %DebugGetLoadedScripts();
675 } 675 }
676 676
677 function MakeExecutionState(break_id) { 677 function MakeExecutionState(break_id) {
678 return new ExecutionState(break_id); 678 return new ExecutionState(break_id);
679 }; 679 }
680 680
681 function ExecutionState(break_id) { 681 function ExecutionState(break_id) {
682 this.break_id = break_id; 682 this.break_id = break_id;
683 this.selected_frame = 0; 683 this.selected_frame = 0;
684 }; 684 }
685 685
686 ExecutionState.prototype.prepareStep = function(opt_action, opt_count) { 686 ExecutionState.prototype.prepareStep = function(opt_action, opt_count) {
687 var action = Debug.StepAction.StepIn; 687 var action = Debug.StepAction.StepIn;
688 if (!IS_UNDEFINED(opt_action)) action = %ToNumber(opt_action); 688 if (!IS_UNDEFINED(opt_action)) action = %ToNumber(opt_action);
689 var count = opt_count ? %ToNumber(opt_count) : 1; 689 var count = opt_count ? %ToNumber(opt_count) : 1;
690 690
691 return %PrepareStep(this.break_id, action, count); 691 return %PrepareStep(this.break_id, action, count);
692 } 692 }
693 693
694 ExecutionState.prototype.evaluateGlobal = function(source, disable_break) { 694 ExecutionState.prototype.evaluateGlobal = function(source, disable_break) {
(...skipping 25 matching lines...) Expand all
720 return this.selected_frame; 720 return this.selected_frame;
721 }; 721 };
722 722
723 ExecutionState.prototype.debugCommandProcessor = function(protocol) { 723 ExecutionState.prototype.debugCommandProcessor = function(protocol) {
724 return new DebugCommandProcessor(this, protocol); 724 return new DebugCommandProcessor(this, protocol);
725 }; 725 };
726 726
727 727
728 function MakeBreakEvent(exec_state, break_points_hit) { 728 function MakeBreakEvent(exec_state, break_points_hit) {
729 return new BreakEvent(exec_state, break_points_hit); 729 return new BreakEvent(exec_state, break_points_hit);
730 }; 730 }
731 731
732 732
733 function BreakEvent(exec_state, break_points_hit) { 733 function BreakEvent(exec_state, break_points_hit) {
734 this.exec_state_ = exec_state; 734 this.exec_state_ = exec_state;
735 this.break_points_hit_ = break_points_hit; 735 this.break_points_hit_ = break_points_hit;
736 }; 736 }
737 737
738 738
739 BreakEvent.prototype.func = function() { 739 BreakEvent.prototype.func = function() {
740 return this.exec_state_.frame(0).func(); 740 return this.exec_state_.frame(0).func();
741 }; 741 };
742 742
743 743
744 BreakEvent.prototype.sourceLine = function() { 744 BreakEvent.prototype.sourceLine = function() {
745 return this.exec_state_.frame(0).sourceLine(); 745 return this.exec_state_.frame(0).sourceLine();
746 }; 746 };
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
839 o.body.breakpoints.push(number); 839 o.body.breakpoints.push(number);
840 } 840 }
841 } 841 }
842 842
843 return SimpleObjectToJSON_(o); 843 return SimpleObjectToJSON_(o);
844 }; 844 };
845 845
846 846
847 function MakeExceptionEvent(exec_state, exception, uncaught) { 847 function MakeExceptionEvent(exec_state, exception, uncaught) {
848 return new ExceptionEvent(exec_state, exception, uncaught); 848 return new ExceptionEvent(exec_state, exception, uncaught);
849 }; 849 }
850 850
851 function ExceptionEvent(exec_state, exception, uncaught) { 851 function ExceptionEvent(exec_state, exception, uncaught) {
852 this.exec_state_ = exec_state; 852 this.exec_state_ = exec_state;
853 this.exception_ = exception; 853 this.exception_ = exception;
854 this.uncaught_ = uncaught; 854 this.uncaught_ = uncaught;
855 }; 855 }
856 856
857 ExceptionEvent.prototype.uncaught = function() { 857 ExceptionEvent.prototype.uncaught = function() {
858 return this.uncaught_; 858 return this.uncaught_;
859 } 859 }
860 860
861 ExceptionEvent.prototype.func = function() { 861 ExceptionEvent.prototype.func = function() {
862 return this.exec_state_.frame(0).func(); 862 return this.exec_state_.frame(0).func();
863 }; 863 };
864 864
865 865
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
924 columnOffset: script.columnOffset(), 924 columnOffset: script.columnOffset(),
925 lineCount: script.lineCount() 925 lineCount: script.lineCount()
926 }; 926 };
927 } 927 }
928 928
929 return SimpleObjectToJSON_(o); 929 return SimpleObjectToJSON_(o);
930 }; 930 };
931 931
932 function MakeCompileEvent(script_source, script_name, script_function) { 932 function MakeCompileEvent(script_source, script_name, script_function) {
933 return new CompileEvent(script_source, script_name, script_function); 933 return new CompileEvent(script_source, script_name, script_function);
934 }; 934 }
935 935
936 function CompileEvent(script_source, script_name, script_function) { 936 function CompileEvent(script_source, script_name, script_function) {
937 this.scriptSource = script_source; 937 this.scriptSource = script_source;
938 this.scriptName = script_name; 938 this.scriptName = script_name;
939 this.scriptFunction = script_function; 939 this.scriptFunction = script_function;
940 }; 940 }
941 941
942 CompileEvent.prototype.details = function() { 942 CompileEvent.prototype.details = function() {
943 var result = ""; 943 var result = "";
944 result = "Script added" 944 result = "Script added"
945 if (this.scriptData) { 945 if (this.scriptData) {
946 result += ": '"; 946 result += ": '";
947 result += this.scriptData; 947 result += this.scriptData;
948 result += "'"; 948 result += "'";
949 } 949 }
950 return result; 950 return result;
951 }; 951 };
952 952
953 CompileEvent.prototype.debugPrompt = function() { 953 CompileEvent.prototype.debugPrompt = function() {
954 var result = "source" 954 var result = "source"
955 if (this.scriptData) { 955 if (this.scriptData) {
956 result += " '"; 956 result += " '";
957 result += this.scriptData; 957 result += this.scriptData;
958 result += "'"; 958 result += "'";
959 } 959 }
960 if (this.func) { 960 if (this.func) {
961 result += " added"; 961 result += " added";
962 } else { 962 } else {
963 result += " compiled"; 963 result += " compiled";
964 } 964 }
965 return result; 965 return result;
966 }; 966 };
967 967
968 function MakeNewFunctionEvent(func) { 968 function MakeNewFunctionEvent(func) {
969 return new NewFunctionEvent(func); 969 return new NewFunctionEvent(func);
970 }; 970 }
971 971
972 function NewFunctionEvent(func) { 972 function NewFunctionEvent(func) {
973 this.func = func; 973 this.func = func;
974 }; 974 }
975 975
976 NewFunctionEvent.prototype.details = function() { 976 NewFunctionEvent.prototype.details = function() {
977 var result = ""; 977 var result = "";
978 result = "Function added: "; 978 result = "Function added: ";
979 result += this.func.name; 979 result += this.func.name;
980 return result; 980 return result;
981 }; 981 };
982 982
983 NewFunctionEvent.prototype.debugPrompt = function() { 983 NewFunctionEvent.prototype.debugPrompt = function() {
984 var result = "function"; 984 var result = "function";
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
1307 if (source_text[i] == '\t') { 1307 if (source_text[i] == '\t') {
1308 underline += '\t'; 1308 underline += '\t';
1309 } else { 1309 } else {
1310 underline += ' '; 1310 underline += ' ';
1311 } 1311 }
1312 } 1312 }
1313 underline += '^'; 1313 underline += '^';
1314 1314
1315 // Return the source line text with the underline beneath. 1315 // Return the source line text with the underline beneath.
1316 return source_text + '\n' + underline; 1316 return source_text + '\n' + underline;
1317 }; 1317 }
1318 1318
1319 1319
1320 function FrameSourceUnderline(frame) { 1320 function FrameSourceUnderline(frame) {
1321 var location = frame.sourceLocation(); 1321 var location = frame.sourceLocation();
1322 if (location) { 1322 if (location) {
1323 return SourceUnderline(location.sourceText(), location.position - location.s tart); 1323 return SourceUnderline(location.sourceText(), location.position - location.s tart);
1324 } 1324 }
1325 }; 1325 }
1326 1326
1327 1327
1328 function RequestPacket(command) { 1328 function RequestPacket(command) {
1329 this.seq = 0; 1329 this.seq = 0;
1330 this.type = 'request'; 1330 this.type = 'request';
1331 this.command = command; 1331 this.command = command;
1332 }; 1332 }
1333 1333
1334 1334
1335 RequestPacket.prototype.toJSONProtocol = function() { 1335 RequestPacket.prototype.toJSONProtocol = function() {
1336 // Encode the protocol header. 1336 // Encode the protocol header.
1337 var json = '{'; 1337 var json = '{';
1338 json += '"seq":' + this.seq; 1338 json += '"seq":' + this.seq;
1339 json += ',"type":"' + this.type + '"'; 1339 json += ',"type":"' + this.type + '"';
1340 if (this.command) { 1340 if (this.command) {
1341 json += ',"command":' + StringToJSON_(this.command); 1341 json += ',"command":' + StringToJSON_(this.command);
1342 } 1342 }
(...skipping 17 matching lines...) Expand all
1360 1360
1361 1361
1362 function ResponsePacket(request) { 1362 function ResponsePacket(request) {
1363 // Build the initial response from the request. 1363 // Build the initial response from the request.
1364 this.seq = next_response_seq++; 1364 this.seq = next_response_seq++;
1365 this.type = 'response'; 1365 this.type = 'response';
1366 if (request) this.request_seq = request.seq; 1366 if (request) this.request_seq = request.seq;
1367 if (request) this.command = request.command; 1367 if (request) this.command = request.command;
1368 this.success = true; 1368 this.success = true;
1369 this.running = false; 1369 this.running = false;
1370 }; 1370 }
1371 1371
1372 1372
1373 ResponsePacket.prototype.failed = function(message) { 1373 ResponsePacket.prototype.failed = function(message) {
1374 this.success = false; 1374 this.success = false;
1375 this.message = message; 1375 this.message = message;
1376 } 1376 }
1377 1377
1378 1378
1379 ResponsePacket.prototype.toJSONProtocol = function() { 1379 ResponsePacket.prototype.toJSONProtocol = function() {
1380 // Encode the protocol header. 1380 // Encode the protocol header.
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after
1988 1988
1989 // Add the property if relevant. 1989 // Add the property if relevant.
1990 if (property_value_json) { 1990 if (property_value_json) {
1991 content.push(StringToJSON_(key) + ':' + property_value_json); 1991 content.push(StringToJSON_(key) + ':' + property_value_json);
1992 } 1992 }
1993 } 1993 }
1994 } 1994 }
1995 1995
1996 // Make JSON object representation. 1996 // Make JSON object representation.
1997 return '{' + content.join(',') + '}'; 1997 return '{' + content.join(',') + '}';
1998 }; 1998 }
1999 1999
2000 /** 2000 /**
2001 * Convert an array to its JSON representation. This is a VERY simple 2001 * Convert an array to its JSON representation. This is a VERY simple
2002 * implementation just to support what is needed for the debugger. 2002 * implementation just to support what is needed for the debugger.
2003 * @param {Array} arrya The array to format as JSON 2003 * @param {Array} arrya The array to format as JSON
2004 * @return {string} JSON formatted array value 2004 * @return {string} JSON formatted array value
2005 */ 2005 */
2006 function SimpleArrayToJSON_(array) { 2006 function SimpleArrayToJSON_(array) {
2007 // Make JSON array representation. 2007 // Make JSON array representation.
2008 var json = '['; 2008 var json = '[';
(...skipping 11 matching lines...) Expand all
2020 } else if (IS_NUMBER(elem)) { 2020 } else if (IS_NUMBER(elem)) {
2021 json += NumberToJSON_(elem); 2021 json += NumberToJSON_(elem);
2022 } else if (IS_STRING(elem)) { 2022 } else if (IS_STRING(elem)) {
2023 json += StringToJSON_(elem); 2023 json += StringToJSON_(elem);
2024 } else { 2024 } else {
2025 json += elem; 2025 json += elem;
2026 } 2026 }
2027 } 2027 }
2028 json += ']'; 2028 json += ']';
2029 return json; 2029 return json;
2030 }; 2030 }
OLDNEW
« no previous file with comments | « src/date-delay.js ('k') | src/math.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698