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

Side by Side Diff: src/mirror-debugger.js

Issue 8701006: Clean up JavaScript files to better follow coding standard. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Remove more empty statments and fix bug. 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 | « src/messages.js ('k') | src/regexp.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 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 // - ScriptMirror 218 // - ScriptMirror
219 219
220 220
221 /** 221 /**
222 * Base class for all mirror objects. 222 * Base class for all mirror objects.
223 * @param {string} type The type of the mirror 223 * @param {string} type The type of the mirror
224 * @constructor 224 * @constructor
225 */ 225 */
226 function Mirror(type) { 226 function Mirror(type) {
227 this.type_ = type; 227 this.type_ = type;
228 }; 228 }
229 229
230 230
231 Mirror.prototype.type = function() { 231 Mirror.prototype.type = function() {
232 return this.type_; 232 return this.type_;
233 }; 233 };
234 234
235 235
236 /** 236 /**
237 * Check whether the mirror reflects a value. 237 * Check whether the mirror reflects a value.
238 * @returns {boolean} True if the mirror reflects a value. 238 * @returns {boolean} True if the mirror reflects a value.
239 */ 239 */
240 Mirror.prototype.isValue = function() { 240 Mirror.prototype.isValue = function() {
241 return this instanceof ValueMirror; 241 return this instanceof ValueMirror;
242 } 242 };
243 243
244 244
245 /** 245 /**
246 * Check whether the mirror reflects the undefined value. 246 * Check whether the mirror reflects the undefined value.
247 * @returns {boolean} True if the mirror reflects the undefined value. 247 * @returns {boolean} True if the mirror reflects the undefined value.
248 */ 248 */
249 Mirror.prototype.isUndefined = function() { 249 Mirror.prototype.isUndefined = function() {
250 return this instanceof UndefinedMirror; 250 return this instanceof UndefinedMirror;
251 } 251 };
252 252
253 253
254 /** 254 /**
255 * Check whether the mirror reflects the null value. 255 * Check whether the mirror reflects the null value.
256 * @returns {boolean} True if the mirror reflects the null value 256 * @returns {boolean} True if the mirror reflects the null value
257 */ 257 */
258 Mirror.prototype.isNull = function() { 258 Mirror.prototype.isNull = function() {
259 return this instanceof NullMirror; 259 return this instanceof NullMirror;
260 } 260 };
261 261
262 262
263 /** 263 /**
264 * Check whether the mirror reflects a boolean value. 264 * Check whether the mirror reflects a boolean value.
265 * @returns {boolean} True if the mirror reflects a boolean value 265 * @returns {boolean} True if the mirror reflects a boolean value
266 */ 266 */
267 Mirror.prototype.isBoolean = function() { 267 Mirror.prototype.isBoolean = function() {
268 return this instanceof BooleanMirror; 268 return this instanceof BooleanMirror;
269 } 269 };
270 270
271 271
272 /** 272 /**
273 * Check whether the mirror reflects a number value. 273 * Check whether the mirror reflects a number value.
274 * @returns {boolean} True if the mirror reflects a number value 274 * @returns {boolean} True if the mirror reflects a number value
275 */ 275 */
276 Mirror.prototype.isNumber = function() { 276 Mirror.prototype.isNumber = function() {
277 return this instanceof NumberMirror; 277 return this instanceof NumberMirror;
278 } 278 };
279 279
280 280
281 /** 281 /**
282 * Check whether the mirror reflects a string value. 282 * Check whether the mirror reflects a string value.
283 * @returns {boolean} True if the mirror reflects a string value 283 * @returns {boolean} True if the mirror reflects a string value
284 */ 284 */
285 Mirror.prototype.isString = function() { 285 Mirror.prototype.isString = function() {
286 return this instanceof StringMirror; 286 return this instanceof StringMirror;
287 } 287 };
288 288
289 289
290 /** 290 /**
291 * Check whether the mirror reflects an object. 291 * Check whether the mirror reflects an object.
292 * @returns {boolean} True if the mirror reflects an object 292 * @returns {boolean} True if the mirror reflects an object
293 */ 293 */
294 Mirror.prototype.isObject = function() { 294 Mirror.prototype.isObject = function() {
295 return this instanceof ObjectMirror; 295 return this instanceof ObjectMirror;
296 } 296 };
297 297
298 298
299 /** 299 /**
300 * Check whether the mirror reflects a function. 300 * Check whether the mirror reflects a function.
301 * @returns {boolean} True if the mirror reflects a function 301 * @returns {boolean} True if the mirror reflects a function
302 */ 302 */
303 Mirror.prototype.isFunction = function() { 303 Mirror.prototype.isFunction = function() {
304 return this instanceof FunctionMirror; 304 return this instanceof FunctionMirror;
305 } 305 };
306 306
307 307
308 /** 308 /**
309 * Check whether the mirror reflects an unresolved function. 309 * Check whether the mirror reflects an unresolved function.
310 * @returns {boolean} True if the mirror reflects an unresolved function 310 * @returns {boolean} True if the mirror reflects an unresolved function
311 */ 311 */
312 Mirror.prototype.isUnresolvedFunction = function() { 312 Mirror.prototype.isUnresolvedFunction = function() {
313 return this instanceof UnresolvedFunctionMirror; 313 return this instanceof UnresolvedFunctionMirror;
314 } 314 };
315 315
316 316
317 /** 317 /**
318 * Check whether the mirror reflects an array. 318 * Check whether the mirror reflects an array.
319 * @returns {boolean} True if the mirror reflects an array 319 * @returns {boolean} True if the mirror reflects an array
320 */ 320 */
321 Mirror.prototype.isArray = function() { 321 Mirror.prototype.isArray = function() {
322 return this instanceof ArrayMirror; 322 return this instanceof ArrayMirror;
323 } 323 };
324 324
325 325
326 /** 326 /**
327 * Check whether the mirror reflects a date. 327 * Check whether the mirror reflects a date.
328 * @returns {boolean} True if the mirror reflects a date 328 * @returns {boolean} True if the mirror reflects a date
329 */ 329 */
330 Mirror.prototype.isDate = function() { 330 Mirror.prototype.isDate = function() {
331 return this instanceof DateMirror; 331 return this instanceof DateMirror;
332 } 332 };
333 333
334 334
335 /** 335 /**
336 * Check whether the mirror reflects a regular expression. 336 * Check whether the mirror reflects a regular expression.
337 * @returns {boolean} True if the mirror reflects a regular expression 337 * @returns {boolean} True if the mirror reflects a regular expression
338 */ 338 */
339 Mirror.prototype.isRegExp = function() { 339 Mirror.prototype.isRegExp = function() {
340 return this instanceof RegExpMirror; 340 return this instanceof RegExpMirror;
341 } 341 };
342 342
343 343
344 /** 344 /**
345 * Check whether the mirror reflects an error. 345 * Check whether the mirror reflects an error.
346 * @returns {boolean} True if the mirror reflects an error 346 * @returns {boolean} True if the mirror reflects an error
347 */ 347 */
348 Mirror.prototype.isError = function() { 348 Mirror.prototype.isError = function() {
349 return this instanceof ErrorMirror; 349 return this instanceof ErrorMirror;
350 } 350 };
351 351
352 352
353 /** 353 /**
354 * Check whether the mirror reflects a property. 354 * Check whether the mirror reflects a property.
355 * @returns {boolean} True if the mirror reflects a property 355 * @returns {boolean} True if the mirror reflects a property
356 */ 356 */
357 Mirror.prototype.isProperty = function() { 357 Mirror.prototype.isProperty = function() {
358 return this instanceof PropertyMirror; 358 return this instanceof PropertyMirror;
359 } 359 };
360 360
361 361
362 /** 362 /**
363 * Check whether the mirror reflects a stack frame. 363 * Check whether the mirror reflects a stack frame.
364 * @returns {boolean} True if the mirror reflects a stack frame 364 * @returns {boolean} True if the mirror reflects a stack frame
365 */ 365 */
366 Mirror.prototype.isFrame = function() { 366 Mirror.prototype.isFrame = function() {
367 return this instanceof FrameMirror; 367 return this instanceof FrameMirror;
368 } 368 };
369 369
370 370
371 /** 371 /**
372 * Check whether the mirror reflects a script. 372 * Check whether the mirror reflects a script.
373 * @returns {boolean} True if the mirror reflects a script 373 * @returns {boolean} True if the mirror reflects a script
374 */ 374 */
375 Mirror.prototype.isScript = function() { 375 Mirror.prototype.isScript = function() {
376 return this instanceof ScriptMirror; 376 return this instanceof ScriptMirror;
377 } 377 };
378 378
379 379
380 /** 380 /**
381 * Check whether the mirror reflects a context. 381 * Check whether the mirror reflects a context.
382 * @returns {boolean} True if the mirror reflects a context 382 * @returns {boolean} True if the mirror reflects a context
383 */ 383 */
384 Mirror.prototype.isContext = function() { 384 Mirror.prototype.isContext = function() {
385 return this instanceof ContextMirror; 385 return this instanceof ContextMirror;
386 } 386 };
387 387
388 388
389 /** 389 /**
390 * Check whether the mirror reflects a scope. 390 * Check whether the mirror reflects a scope.
391 * @returns {boolean} True if the mirror reflects a scope 391 * @returns {boolean} True if the mirror reflects a scope
392 */ 392 */
393 Mirror.prototype.isScope = function() { 393 Mirror.prototype.isScope = function() {
394 return this instanceof ScopeMirror; 394 return this instanceof ScopeMirror;
395 } 395 };
396 396
397 397
398 /** 398 /**
399 * Allocate a handle id for this object. 399 * Allocate a handle id for this object.
400 */ 400 */
401 Mirror.prototype.allocateHandle_ = function() { 401 Mirror.prototype.allocateHandle_ = function() {
402 this.handle_ = next_handle_++; 402 this.handle_ = next_handle_++;
403 } 403 };
404 404
405 405
406 /** 406 /**
407 * Allocate a transient handle id for this object. Transient handles are 407 * Allocate a transient handle id for this object. Transient handles are
408 * negative. 408 * negative.
409 */ 409 */
410 Mirror.prototype.allocateTransientHandle_ = function() { 410 Mirror.prototype.allocateTransientHandle_ = function() {
411 this.handle_ = next_transient_handle_--; 411 this.handle_ = next_transient_handle_--;
412 } 412 };
413 413
414 414
415 Mirror.prototype.toText = function() { 415 Mirror.prototype.toText = function() {
416 // Simpel to text which is used when on specialization in subclass. 416 // Simpel to text which is used when on specialization in subclass.
417 return "#<" + this.constructor.name + ">"; 417 return "#<" + this.constructor.name + ">";
418 } 418 };
419 419
420 420
421 /** 421 /**
422 * Base class for all value mirror objects. 422 * Base class for all value mirror objects.
423 * @param {string} type The type of the mirror 423 * @param {string} type The type of the mirror
424 * @param {value} value The value reflected by this mirror 424 * @param {value} value The value reflected by this mirror
425 * @param {boolean} transient indicate whether this object is transient with a 425 * @param {boolean} transient indicate whether this object is transient with a
426 * transient handle 426 * transient handle
427 * @constructor 427 * @constructor
428 * @extends Mirror 428 * @extends Mirror
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 * @extends ValueMirror 473 * @extends ValueMirror
474 */ 474 */
475 function UndefinedMirror() { 475 function UndefinedMirror() {
476 %_CallFunction(this, UNDEFINED_TYPE, void 0, ValueMirror); 476 %_CallFunction(this, UNDEFINED_TYPE, void 0, ValueMirror);
477 } 477 }
478 inherits(UndefinedMirror, ValueMirror); 478 inherits(UndefinedMirror, ValueMirror);
479 479
480 480
481 UndefinedMirror.prototype.toText = function() { 481 UndefinedMirror.prototype.toText = function() {
482 return 'undefined'; 482 return 'undefined';
483 } 483 };
484 484
485 485
486 /** 486 /**
487 * Mirror object for null. 487 * Mirror object for null.
488 * @constructor 488 * @constructor
489 * @extends ValueMirror 489 * @extends ValueMirror
490 */ 490 */
491 function NullMirror() { 491 function NullMirror() {
492 %_CallFunction(this, NULL_TYPE, null, ValueMirror); 492 %_CallFunction(this, NULL_TYPE, null, ValueMirror);
493 } 493 }
494 inherits(NullMirror, ValueMirror); 494 inherits(NullMirror, ValueMirror);
495 495
496 496
497 NullMirror.prototype.toText = function() { 497 NullMirror.prototype.toText = function() {
498 return 'null'; 498 return 'null';
499 } 499 };
500 500
501 501
502 /** 502 /**
503 * Mirror object for boolean values. 503 * Mirror object for boolean values.
504 * @param {boolean} value The boolean value reflected by this mirror 504 * @param {boolean} value The boolean value reflected by this mirror
505 * @constructor 505 * @constructor
506 * @extends ValueMirror 506 * @extends ValueMirror
507 */ 507 */
508 function BooleanMirror(value) { 508 function BooleanMirror(value) {
509 %_CallFunction(this, BOOLEAN_TYPE, value, ValueMirror); 509 %_CallFunction(this, BOOLEAN_TYPE, value, ValueMirror);
510 } 510 }
511 inherits(BooleanMirror, ValueMirror); 511 inherits(BooleanMirror, ValueMirror);
512 512
513 513
514 BooleanMirror.prototype.toText = function() { 514 BooleanMirror.prototype.toText = function() {
515 return this.value_ ? 'true' : 'false'; 515 return this.value_ ? 'true' : 'false';
516 } 516 };
517 517
518 518
519 /** 519 /**
520 * Mirror object for number values. 520 * Mirror object for number values.
521 * @param {number} value The number value reflected by this mirror 521 * @param {number} value The number value reflected by this mirror
522 * @constructor 522 * @constructor
523 * @extends ValueMirror 523 * @extends ValueMirror
524 */ 524 */
525 function NumberMirror(value) { 525 function NumberMirror(value) {
526 %_CallFunction(this, NUMBER_TYPE, value, ValueMirror); 526 %_CallFunction(this, NUMBER_TYPE, value, ValueMirror);
527 } 527 }
528 inherits(NumberMirror, ValueMirror); 528 inherits(NumberMirror, ValueMirror);
529 529
530 530
531 NumberMirror.prototype.toText = function() { 531 NumberMirror.prototype.toText = function() {
532 return %NumberToString(this.value_); 532 return %NumberToString(this.value_);
533 } 533 };
534 534
535 535
536 /** 536 /**
537 * Mirror object for string values. 537 * Mirror object for string values.
538 * @param {string} value The string value reflected by this mirror 538 * @param {string} value The string value reflected by this mirror
539 * @constructor 539 * @constructor
540 * @extends ValueMirror 540 * @extends ValueMirror
541 */ 541 */
542 function StringMirror(value) { 542 function StringMirror(value) {
543 %_CallFunction(this, STRING_TYPE, value, ValueMirror); 543 %_CallFunction(this, STRING_TYPE, value, ValueMirror);
544 } 544 }
545 inherits(StringMirror, ValueMirror); 545 inherits(StringMirror, ValueMirror);
546 546
547 547
548 StringMirror.prototype.length = function() { 548 StringMirror.prototype.length = function() {
549 return this.value_.length; 549 return this.value_.length;
550 }; 550 };
551 551
552 StringMirror.prototype.getTruncatedValue = function(maxLength) { 552 StringMirror.prototype.getTruncatedValue = function(maxLength) {
553 if (maxLength != -1 && this.length() > maxLength) { 553 if (maxLength != -1 && this.length() > maxLength) {
554 return this.value_.substring(0, maxLength) + 554 return this.value_.substring(0, maxLength) +
555 '... (length: ' + this.length() + ')'; 555 '... (length: ' + this.length() + ')';
556 } 556 }
557 return this.value_; 557 return this.value_;
558 } 558 };
559 559
560 StringMirror.prototype.toText = function() { 560 StringMirror.prototype.toText = function() {
561 return this.getTruncatedValue(kMaxProtocolStringLength); 561 return this.getTruncatedValue(kMaxProtocolStringLength);
562 } 562 };
563 563
564 564
565 /** 565 /**
566 * Mirror object for objects. 566 * Mirror object for objects.
567 * @param {object} value The object reflected by this mirror 567 * @param {object} value The object reflected by this mirror
568 * @param {boolean} transient indicate whether this object is transient with a 568 * @param {boolean} transient indicate whether this object is transient with a
569 * transient handle 569 * transient handle
570 * @constructor 570 * @constructor
571 * @extends ValueMirror 571 * @extends ValueMirror
572 */ 572 */
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
891 891
892 return result; 892 return result;
893 } else { 893 } else {
894 return []; 894 return [];
895 } 895 }
896 }; 896 };
897 897
898 898
899 FunctionMirror.prototype.toText = function() { 899 FunctionMirror.prototype.toText = function() {
900 return this.source(); 900 return this.source();
901 } 901 };
902 902
903 903
904 /** 904 /**
905 * Mirror object for unresolved functions. 905 * Mirror object for unresolved functions.
906 * @param {string} value The name for the unresolved function reflected by this 906 * @param {string} value The name for the unresolved function reflected by this
907 * mirror. 907 * mirror.
908 * @constructor 908 * @constructor
909 * @extends ObjectMirror 909 * @extends ObjectMirror
910 */ 910 */
911 function UnresolvedFunctionMirror(value) { 911 function UnresolvedFunctionMirror(value) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 }; 944 };
945 945
946 946
947 UnresolvedFunctionMirror.prototype.inferredName = function() { 947 UnresolvedFunctionMirror.prototype.inferredName = function() {
948 return undefined; 948 return undefined;
949 }; 949 };
950 950
951 951
952 UnresolvedFunctionMirror.prototype.propertyNames = function(kind, limit) { 952 UnresolvedFunctionMirror.prototype.propertyNames = function(kind, limit) {
953 return []; 953 return [];
954 } 954 };
955 955
956 956
957 /** 957 /**
958 * Mirror object for arrays. 958 * Mirror object for arrays.
959 * @param {Array} value The Array object reflected by this mirror 959 * @param {Array} value The Array object reflected by this mirror
960 * @constructor 960 * @constructor
961 * @extends ObjectMirror 961 * @extends ObjectMirror
962 */ 962 */
963 function ArrayMirror(value) { 963 function ArrayMirror(value) {
964 %_CallFunction(this, value, ObjectMirror); 964 %_CallFunction(this, value, ObjectMirror);
965 } 965 }
966 inherits(ArrayMirror, ObjectMirror); 966 inherits(ArrayMirror, ObjectMirror);
967 967
968 968
969 ArrayMirror.prototype.length = function() { 969 ArrayMirror.prototype.length = function() {
970 return this.value_.length; 970 return this.value_.length;
971 }; 971 };
972 972
973 973
974 ArrayMirror.prototype.indexedPropertiesFromRange = function(opt_from_index, opt_ to_index) { 974 ArrayMirror.prototype.indexedPropertiesFromRange = function(opt_from_index,
975 opt_to_index) {
975 var from_index = opt_from_index || 0; 976 var from_index = opt_from_index || 0;
976 var to_index = opt_to_index || this.length() - 1; 977 var to_index = opt_to_index || this.length() - 1;
977 if (from_index > to_index) return new Array(); 978 if (from_index > to_index) return new Array();
978 var values = new Array(to_index - from_index + 1); 979 var values = new Array(to_index - from_index + 1);
979 for (var i = from_index; i <= to_index; i++) { 980 for (var i = from_index; i <= to_index; i++) {
980 var details = %DebugGetPropertyDetails(this.value_, %ToString(i)); 981 var details = %DebugGetPropertyDetails(this.value_, %ToString(i));
981 var value; 982 var value;
982 if (details) { 983 if (details) {
983 value = new PropertyMirror(this, i, details); 984 value = new PropertyMirror(this, i, details);
984 } else { 985 } else {
985 value = GetUndefinedMirror(); 986 value = GetUndefinedMirror();
986 } 987 }
987 values[i - from_index] = value; 988 values[i - from_index] = value;
988 } 989 }
989 return values; 990 return values;
990 } 991 };
991 992
992 993
993 /** 994 /**
994 * Mirror object for dates. 995 * Mirror object for dates.
995 * @param {Date} value The Date object reflected by this mirror 996 * @param {Date} value The Date object reflected by this mirror
996 * @constructor 997 * @constructor
997 * @extends ObjectMirror 998 * @extends ObjectMirror
998 */ 999 */
999 function DateMirror(value) { 1000 function DateMirror(value) {
1000 %_CallFunction(this, value, ObjectMirror); 1001 %_CallFunction(this, value, ObjectMirror);
1001 } 1002 }
1002 inherits(DateMirror, ObjectMirror); 1003 inherits(DateMirror, ObjectMirror);
1003 1004
1004 1005
1005 DateMirror.prototype.toText = function() { 1006 DateMirror.prototype.toText = function() {
1006 var s = JSON.stringify(this.value_); 1007 var s = JSON.stringify(this.value_);
1007 return s.substring(1, s.length - 1); // cut quotes 1008 return s.substring(1, s.length - 1); // cut quotes
1008 } 1009 };
1009 1010
1010 1011
1011 /** 1012 /**
1012 * Mirror object for regular expressions. 1013 * Mirror object for regular expressions.
1013 * @param {RegExp} value The RegExp object reflected by this mirror 1014 * @param {RegExp} value The RegExp object reflected by this mirror
1014 * @constructor 1015 * @constructor
1015 * @extends ObjectMirror 1016 * @extends ObjectMirror
1016 */ 1017 */
1017 function RegExpMirror(value) { 1018 function RegExpMirror(value) {
1018 %_CallFunction(this, value, REGEXP_TYPE, ObjectMirror); 1019 %_CallFunction(this, value, REGEXP_TYPE, ObjectMirror);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
1052 * @return {boolean} Value of the multiline flag 1053 * @return {boolean} Value of the multiline flag
1053 */ 1054 */
1054 RegExpMirror.prototype.multiline = function() { 1055 RegExpMirror.prototype.multiline = function() {
1055 return this.value_.multiline; 1056 return this.value_.multiline;
1056 }; 1057 };
1057 1058
1058 1059
1059 RegExpMirror.prototype.toText = function() { 1060 RegExpMirror.prototype.toText = function() {
1060 // Simpel to text which is used when on specialization in subclass. 1061 // Simpel to text which is used when on specialization in subclass.
1061 return "/" + this.source() + "/"; 1062 return "/" + this.source() + "/";
1062 } 1063 };
1063 1064
1064 1065
1065 /** 1066 /**
1066 * Mirror object for error objects. 1067 * Mirror object for error objects.
1067 * @param {Error} value The error object reflected by this mirror 1068 * @param {Error} value The error object reflected by this mirror
1068 * @constructor 1069 * @constructor
1069 * @extends ObjectMirror 1070 * @extends ObjectMirror
1070 */ 1071 */
1071 function ErrorMirror(value) { 1072 function ErrorMirror(value) {
1072 %_CallFunction(this, value, ERROR_TYPE, ObjectMirror); 1073 %_CallFunction(this, value, ERROR_TYPE, ObjectMirror);
(...skipping 12 matching lines...) Expand all
1085 1086
1086 ErrorMirror.prototype.toText = function() { 1087 ErrorMirror.prototype.toText = function() {
1087 // Use the same text representation as in messages.js. 1088 // Use the same text representation as in messages.js.
1088 var text; 1089 var text;
1089 try { 1090 try {
1090 str = %_CallFunction(this.value_, builtins.ErrorToString); 1091 str = %_CallFunction(this.value_, builtins.ErrorToString);
1091 } catch (e) { 1092 } catch (e) {
1092 str = '#<Error>'; 1093 str = '#<Error>';
1093 } 1094 }
1094 return str; 1095 return str;
1095 } 1096 };
1096 1097
1097 1098
1098 /** 1099 /**
1099 * Base mirror object for properties. 1100 * Base mirror object for properties.
1100 * @param {ObjectMirror} mirror The mirror object having this property 1101 * @param {ObjectMirror} mirror The mirror object having this property
1101 * @param {string} name The name of the property 1102 * @param {string} name The name of the property
1102 * @param {Array} details Details about the property 1103 * @param {Array} details Details about the property
1103 * @constructor 1104 * @constructor
1104 * @extends Mirror 1105 * @extends Mirror
1105 */ 1106 */
1106 function PropertyMirror(mirror, name, details) { 1107 function PropertyMirror(mirror, name, details) {
1107 %_CallFunction(this, PROPERTY_TYPE, Mirror); 1108 %_CallFunction(this, PROPERTY_TYPE, Mirror);
1108 this.mirror_ = mirror; 1109 this.mirror_ = mirror;
1109 this.name_ = name; 1110 this.name_ = name;
1110 this.value_ = details[0]; 1111 this.value_ = details[0];
1111 this.details_ = details[1]; 1112 this.details_ = details[1];
1112 if (details.length > 2) { 1113 if (details.length > 2) {
1113 this.exception_ = details[2] 1114 this.exception_ = details[2];
1114 this.getter_ = details[3]; 1115 this.getter_ = details[3];
1115 this.setter_ = details[4]; 1116 this.setter_ = details[4];
1116 } 1117 }
1117 } 1118 }
1118 inherits(PropertyMirror, Mirror); 1119 inherits(PropertyMirror, Mirror);
1119 1120
1120 1121
1121 PropertyMirror.prototype.isReadOnly = function() { 1122 PropertyMirror.prototype.isReadOnly = function() {
1122 return (this.attributes() & PropertyAttribute.ReadOnly) != 0; 1123 return (this.attributes() & PropertyAttribute.ReadOnly) != 0;
1123 } 1124 };
1124 1125
1125 1126
1126 PropertyMirror.prototype.isEnum = function() { 1127 PropertyMirror.prototype.isEnum = function() {
1127 return (this.attributes() & PropertyAttribute.DontEnum) == 0; 1128 return (this.attributes() & PropertyAttribute.DontEnum) == 0;
1128 } 1129 };
1129 1130
1130 1131
1131 PropertyMirror.prototype.canDelete = function() { 1132 PropertyMirror.prototype.canDelete = function() {
1132 return (this.attributes() & PropertyAttribute.DontDelete) == 0; 1133 return (this.attributes() & PropertyAttribute.DontDelete) == 0;
1133 } 1134 };
1134 1135
1135 1136
1136 PropertyMirror.prototype.name = function() { 1137 PropertyMirror.prototype.name = function() {
1137 return this.name_; 1138 return this.name_;
1138 } 1139 };
1139 1140
1140 1141
1141 PropertyMirror.prototype.isIndexed = function() { 1142 PropertyMirror.prototype.isIndexed = function() {
1142 for (var i = 0; i < this.name_.length; i++) { 1143 for (var i = 0; i < this.name_.length; i++) {
1143 if (this.name_[i] < '0' || '9' < this.name_[i]) { 1144 if (this.name_[i] < '0' || '9' < this.name_[i]) {
1144 return false; 1145 return false;
1145 } 1146 }
1146 } 1147 }
1147 return true; 1148 return true;
1148 } 1149 };
1149 1150
1150 1151
1151 PropertyMirror.prototype.value = function() { 1152 PropertyMirror.prototype.value = function() {
1152 return MakeMirror(this.value_, false); 1153 return MakeMirror(this.value_, false);
1153 } 1154 };
1154 1155
1155 1156
1156 /** 1157 /**
1157 * Returns whether this property value is an exception. 1158 * Returns whether this property value is an exception.
1158 * @return {booolean} True if this property value is an exception 1159 * @return {booolean} True if this property value is an exception
1159 */ 1160 */
1160 PropertyMirror.prototype.isException = function() { 1161 PropertyMirror.prototype.isException = function() {
1161 return this.exception_ ? true : false; 1162 return this.exception_ ? true : false;
1162 } 1163 };
1163 1164
1164 1165
1165 PropertyMirror.prototype.attributes = function() { 1166 PropertyMirror.prototype.attributes = function() {
1166 return %DebugPropertyAttributesFromDetails(this.details_); 1167 return %DebugPropertyAttributesFromDetails(this.details_);
1167 } 1168 };
1168 1169
1169 1170
1170 PropertyMirror.prototype.propertyType = function() { 1171 PropertyMirror.prototype.propertyType = function() {
1171 return %DebugPropertyTypeFromDetails(this.details_); 1172 return %DebugPropertyTypeFromDetails(this.details_);
1172 } 1173 };
1173 1174
1174 1175
1175 PropertyMirror.prototype.insertionIndex = function() { 1176 PropertyMirror.prototype.insertionIndex = function() {
1176 return %DebugPropertyIndexFromDetails(this.details_); 1177 return %DebugPropertyIndexFromDetails(this.details_);
1177 } 1178 };
1178 1179
1179 1180
1180 /** 1181 /**
1181 * Returns whether this property has a getter defined through __defineGetter__. 1182 * Returns whether this property has a getter defined through __defineGetter__.
1182 * @return {booolean} True if this property has a getter 1183 * @return {booolean} True if this property has a getter
1183 */ 1184 */
1184 PropertyMirror.prototype.hasGetter = function() { 1185 PropertyMirror.prototype.hasGetter = function() {
1185 return this.getter_ ? true : false; 1186 return this.getter_ ? true : false;
1186 } 1187 };
1187 1188
1188 1189
1189 /** 1190 /**
1190 * Returns whether this property has a setter defined through __defineSetter__. 1191 * Returns whether this property has a setter defined through __defineSetter__.
1191 * @return {booolean} True if this property has a setter 1192 * @return {booolean} True if this property has a setter
1192 */ 1193 */
1193 PropertyMirror.prototype.hasSetter = function() { 1194 PropertyMirror.prototype.hasSetter = function() {
1194 return this.setter_ ? true : false; 1195 return this.setter_ ? true : false;
1195 } 1196 };
1196 1197
1197 1198
1198 /** 1199 /**
1199 * Returns the getter for this property defined through __defineGetter__. 1200 * Returns the getter for this property defined through __defineGetter__.
1200 * @return {Mirror} FunctionMirror reflecting the getter function or 1201 * @return {Mirror} FunctionMirror reflecting the getter function or
1201 * UndefinedMirror if there is no getter for this property 1202 * UndefinedMirror if there is no getter for this property
1202 */ 1203 */
1203 PropertyMirror.prototype.getter = function() { 1204 PropertyMirror.prototype.getter = function() {
1204 if (this.hasGetter()) { 1205 if (this.hasGetter()) {
1205 return MakeMirror(this.getter_); 1206 return MakeMirror(this.getter_);
1206 } else { 1207 } else {
1207 return GetUndefinedMirror(); 1208 return GetUndefinedMirror();
1208 } 1209 }
1209 } 1210 };
1210 1211
1211 1212
1212 /** 1213 /**
1213 * Returns the setter for this property defined through __defineSetter__. 1214 * Returns the setter for this property defined through __defineSetter__.
1214 * @return {Mirror} FunctionMirror reflecting the setter function or 1215 * @return {Mirror} FunctionMirror reflecting the setter function or
1215 * UndefinedMirror if there is no setter for this property 1216 * UndefinedMirror if there is no setter for this property
1216 */ 1217 */
1217 PropertyMirror.prototype.setter = function() { 1218 PropertyMirror.prototype.setter = function() {
1218 if (this.hasSetter()) { 1219 if (this.hasSetter()) {
1219 return MakeMirror(this.setter_); 1220 return MakeMirror(this.setter_);
1220 } else { 1221 } else {
1221 return GetUndefinedMirror(); 1222 return GetUndefinedMirror();
1222 } 1223 }
1223 } 1224 };
1224 1225
1225 1226
1226 /** 1227 /**
1227 * Returns whether this property is natively implemented by the host or a set 1228 * Returns whether this property is natively implemented by the host or a set
1228 * through JavaScript code. 1229 * through JavaScript code.
1229 * @return {boolean} True if the property is 1230 * @return {boolean} True if the property is
1230 * UndefinedMirror if there is no setter for this property 1231 * UndefinedMirror if there is no setter for this property
1231 */ 1232 */
1232 PropertyMirror.prototype.isNative = function() { 1233 PropertyMirror.prototype.isNative = function() {
1233 return (this.propertyType() == PropertyType.Interceptor) || 1234 return (this.propertyType() == PropertyType.Interceptor) ||
1234 ((this.propertyType() == PropertyType.Callbacks) && 1235 ((this.propertyType() == PropertyType.Callbacks) &&
1235 !this.hasGetter() && !this.hasSetter()); 1236 !this.hasGetter() && !this.hasSetter());
1236 } 1237 };
1237 1238
1238 1239
1239 const kFrameDetailsFrameIdIndex = 0; 1240 const kFrameDetailsFrameIdIndex = 0;
1240 const kFrameDetailsReceiverIndex = 1; 1241 const kFrameDetailsReceiverIndex = 1;
1241 const kFrameDetailsFunctionIndex = 2; 1242 const kFrameDetailsFunctionIndex = 2;
1242 const kFrameDetailsArgumentCountIndex = 3; 1243 const kFrameDetailsArgumentCountIndex = 3;
1243 const kFrameDetailsLocalCountIndex = 4; 1244 const kFrameDetailsLocalCountIndex = 4;
1244 const kFrameDetailsSourcePositionIndex = 5; 1245 const kFrameDetailsSourcePositionIndex = 5;
1245 const kFrameDetailsConstructCallIndex = 6; 1246 const kFrameDetailsConstructCallIndex = 6;
1246 const kFrameDetailsAtReturnIndex = 7; 1247 const kFrameDetailsAtReturnIndex = 7;
(...skipping 30 matching lines...) Expand all
1277 */ 1278 */
1278 function FrameDetails(break_id, index) { 1279 function FrameDetails(break_id, index) {
1279 this.break_id_ = break_id; 1280 this.break_id_ = break_id;
1280 this.details_ = %GetFrameDetails(break_id, index); 1281 this.details_ = %GetFrameDetails(break_id, index);
1281 } 1282 }
1282 1283
1283 1284
1284 FrameDetails.prototype.frameId = function() { 1285 FrameDetails.prototype.frameId = function() {
1285 %CheckExecutionState(this.break_id_); 1286 %CheckExecutionState(this.break_id_);
1286 return this.details_[kFrameDetailsFrameIdIndex]; 1287 return this.details_[kFrameDetailsFrameIdIndex];
1287 } 1288 };
1288 1289
1289 1290
1290 FrameDetails.prototype.receiver = function() { 1291 FrameDetails.prototype.receiver = function() {
1291 %CheckExecutionState(this.break_id_); 1292 %CheckExecutionState(this.break_id_);
1292 return this.details_[kFrameDetailsReceiverIndex]; 1293 return this.details_[kFrameDetailsReceiverIndex];
1293 } 1294 };
1294 1295
1295 1296
1296 FrameDetails.prototype.func = function() { 1297 FrameDetails.prototype.func = function() {
1297 %CheckExecutionState(this.break_id_); 1298 %CheckExecutionState(this.break_id_);
1298 return this.details_[kFrameDetailsFunctionIndex]; 1299 return this.details_[kFrameDetailsFunctionIndex];
1299 } 1300 };
1300 1301
1301 1302
1302 FrameDetails.prototype.isConstructCall = function() { 1303 FrameDetails.prototype.isConstructCall = function() {
1303 %CheckExecutionState(this.break_id_); 1304 %CheckExecutionState(this.break_id_);
1304 return this.details_[kFrameDetailsConstructCallIndex]; 1305 return this.details_[kFrameDetailsConstructCallIndex];
1305 } 1306 };
1306 1307
1307 1308
1308 FrameDetails.prototype.isAtReturn = function() { 1309 FrameDetails.prototype.isAtReturn = function() {
1309 %CheckExecutionState(this.break_id_); 1310 %CheckExecutionState(this.break_id_);
1310 return this.details_[kFrameDetailsAtReturnIndex]; 1311 return this.details_[kFrameDetailsAtReturnIndex];
1311 } 1312 };
1312 1313
1313 1314
1314 FrameDetails.prototype.isDebuggerFrame = function() { 1315 FrameDetails.prototype.isDebuggerFrame = function() {
1315 %CheckExecutionState(this.break_id_); 1316 %CheckExecutionState(this.break_id_);
1316 var f = kFrameDetailsFlagDebuggerFrameMask; 1317 var f = kFrameDetailsFlagDebuggerFrameMask;
1317 return (this.details_[kFrameDetailsFlagsIndex] & f) == f; 1318 return (this.details_[kFrameDetailsFlagsIndex] & f) == f;
1318 } 1319 };
1319 1320
1320 1321
1321 FrameDetails.prototype.isOptimizedFrame = function() { 1322 FrameDetails.prototype.isOptimizedFrame = function() {
1322 %CheckExecutionState(this.break_id_); 1323 %CheckExecutionState(this.break_id_);
1323 var f = kFrameDetailsFlagOptimizedFrameMask; 1324 var f = kFrameDetailsFlagOptimizedFrameMask;
1324 return (this.details_[kFrameDetailsFlagsIndex] & f) == f; 1325 return (this.details_[kFrameDetailsFlagsIndex] & f) == f;
1325 } 1326 };
1326 1327
1327 1328
1328 FrameDetails.prototype.isInlinedFrame = function() { 1329 FrameDetails.prototype.isInlinedFrame = function() {
1329 return this.inlinedFrameIndex() > 0; 1330 return this.inlinedFrameIndex() > 0;
1330 } 1331 };
1331 1332
1332 1333
1333 FrameDetails.prototype.inlinedFrameIndex = function() { 1334 FrameDetails.prototype.inlinedFrameIndex = function() {
1334 %CheckExecutionState(this.break_id_); 1335 %CheckExecutionState(this.break_id_);
1335 var f = kFrameDetailsFlagInlinedFrameIndexMask; 1336 var f = kFrameDetailsFlagInlinedFrameIndexMask;
1336 return (this.details_[kFrameDetailsFlagsIndex] & f) >> 2 1337 return (this.details_[kFrameDetailsFlagsIndex] & f) >> 2;
1337 } 1338 };
1338 1339
1339 1340
1340 FrameDetails.prototype.argumentCount = function() { 1341 FrameDetails.prototype.argumentCount = function() {
1341 %CheckExecutionState(this.break_id_); 1342 %CheckExecutionState(this.break_id_);
1342 return this.details_[kFrameDetailsArgumentCountIndex]; 1343 return this.details_[kFrameDetailsArgumentCountIndex];
1343 } 1344 };
1344 1345
1345 1346
1346 FrameDetails.prototype.argumentName = function(index) { 1347 FrameDetails.prototype.argumentName = function(index) {
1347 %CheckExecutionState(this.break_id_); 1348 %CheckExecutionState(this.break_id_);
1348 if (index >= 0 && index < this.argumentCount()) { 1349 if (index >= 0 && index < this.argumentCount()) {
1349 return this.details_[kFrameDetailsFirstDynamicIndex + 1350 return this.details_[kFrameDetailsFirstDynamicIndex +
1350 index * kFrameDetailsNameValueSize + 1351 index * kFrameDetailsNameValueSize +
1351 kFrameDetailsNameIndex] 1352 kFrameDetailsNameIndex];
1352 } 1353 }
1353 } 1354 };
1354 1355
1355 1356
1356 FrameDetails.prototype.argumentValue = function(index) { 1357 FrameDetails.prototype.argumentValue = function(index) {
1357 %CheckExecutionState(this.break_id_); 1358 %CheckExecutionState(this.break_id_);
1358 if (index >= 0 && index < this.argumentCount()) { 1359 if (index >= 0 && index < this.argumentCount()) {
1359 return this.details_[kFrameDetailsFirstDynamicIndex + 1360 return this.details_[kFrameDetailsFirstDynamicIndex +
1360 index * kFrameDetailsNameValueSize + 1361 index * kFrameDetailsNameValueSize +
1361 kFrameDetailsValueIndex] 1362 kFrameDetailsValueIndex];
1362 } 1363 }
1363 } 1364 };
1364 1365
1365 1366
1366 FrameDetails.prototype.localCount = function() { 1367 FrameDetails.prototype.localCount = function() {
1367 %CheckExecutionState(this.break_id_); 1368 %CheckExecutionState(this.break_id_);
1368 return this.details_[kFrameDetailsLocalCountIndex]; 1369 return this.details_[kFrameDetailsLocalCountIndex];
1369 } 1370 };
1370 1371
1371 1372
1372 FrameDetails.prototype.sourcePosition = function() { 1373 FrameDetails.prototype.sourcePosition = function() {
1373 %CheckExecutionState(this.break_id_); 1374 %CheckExecutionState(this.break_id_);
1374 return this.details_[kFrameDetailsSourcePositionIndex]; 1375 return this.details_[kFrameDetailsSourcePositionIndex];
1375 } 1376 };
1376 1377
1377 1378
1378 FrameDetails.prototype.localName = function(index) { 1379 FrameDetails.prototype.localName = function(index) {
1379 %CheckExecutionState(this.break_id_); 1380 %CheckExecutionState(this.break_id_);
1380 if (index >= 0 && index < this.localCount()) { 1381 if (index >= 0 && index < this.localCount()) {
1381 var locals_offset = kFrameDetailsFirstDynamicIndex + 1382 var locals_offset = kFrameDetailsFirstDynamicIndex +
1382 this.argumentCount() * kFrameDetailsNameValueSize 1383 this.argumentCount() * kFrameDetailsNameValueSize;
1383 return this.details_[locals_offset + 1384 return this.details_[locals_offset +
1384 index * kFrameDetailsNameValueSize + 1385 index * kFrameDetailsNameValueSize +
1385 kFrameDetailsNameIndex] 1386 kFrameDetailsNameIndex];
1386 } 1387 }
1387 } 1388 };
1388 1389
1389 1390
1390 FrameDetails.prototype.localValue = function(index) { 1391 FrameDetails.prototype.localValue = function(index) {
1391 %CheckExecutionState(this.break_id_); 1392 %CheckExecutionState(this.break_id_);
1392 if (index >= 0 && index < this.localCount()) { 1393 if (index >= 0 && index < this.localCount()) {
1393 var locals_offset = kFrameDetailsFirstDynamicIndex + 1394 var locals_offset = kFrameDetailsFirstDynamicIndex +
1394 this.argumentCount() * kFrameDetailsNameValueSize 1395 this.argumentCount() * kFrameDetailsNameValueSize;
1395 return this.details_[locals_offset + 1396 return this.details_[locals_offset +
1396 index * kFrameDetailsNameValueSize + 1397 index * kFrameDetailsNameValueSize +
1397 kFrameDetailsValueIndex] 1398 kFrameDetailsValueIndex];
1398 } 1399 }
1399 } 1400 };
1400 1401
1401 1402
1402 FrameDetails.prototype.returnValue = function() { 1403 FrameDetails.prototype.returnValue = function() {
1403 %CheckExecutionState(this.break_id_); 1404 %CheckExecutionState(this.break_id_);
1404 var return_value_offset = 1405 var return_value_offset =
1405 kFrameDetailsFirstDynamicIndex + 1406 kFrameDetailsFirstDynamicIndex +
1406 (this.argumentCount() + this.localCount()) * kFrameDetailsNameValueSize; 1407 (this.argumentCount() + this.localCount()) * kFrameDetailsNameValueSize;
1407 if (this.details_[kFrameDetailsAtReturnIndex]) { 1408 if (this.details_[kFrameDetailsAtReturnIndex]) {
1408 return this.details_[return_value_offset]; 1409 return this.details_[return_value_offset];
1409 } 1410 }
1410 } 1411 };
1411 1412
1412 1413
1413 FrameDetails.prototype.scopeCount = function() { 1414 FrameDetails.prototype.scopeCount = function() {
1414 return %GetScopeCount(this.break_id_, this.frameId()); 1415 return %GetScopeCount(this.break_id_, this.frameId());
1415 } 1416 };
1416 1417
1417 1418
1418 /** 1419 /**
1419 * Mirror object for stack frames. 1420 * Mirror object for stack frames.
1420 * @param {number} break_id The break id in the VM for which this frame is 1421 * @param {number} break_id The break id in the VM for which this frame is
1421 valid 1422 valid
1422 * @param {number} index The frame index (top frame is index 0) 1423 * @param {number} index The frame index (top frame is index 0)
1423 * @constructor 1424 * @constructor
1424 * @extends Mirror 1425 * @extends Mirror
1425 */ 1426 */
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
1568 FrameMirror.prototype.scopeCount = function() { 1569 FrameMirror.prototype.scopeCount = function() {
1569 return this.details_.scopeCount(); 1570 return this.details_.scopeCount();
1570 }; 1571 };
1571 1572
1572 1573
1573 FrameMirror.prototype.scope = function(index) { 1574 FrameMirror.prototype.scope = function(index) {
1574 return new ScopeMirror(this, index); 1575 return new ScopeMirror(this, index);
1575 }; 1576 };
1576 1577
1577 1578
1578 FrameMirror.prototype.evaluate = function(source, disable_break, opt_context_obj ect) { 1579 FrameMirror.prototype.evaluate = function(source, disable_break,
1580 opt_context_object) {
1579 var result = %DebugEvaluate(this.break_id_, 1581 var result = %DebugEvaluate(this.break_id_,
1580 this.details_.frameId(), 1582 this.details_.frameId(),
1581 this.details_.inlinedFrameIndex(), 1583 this.details_.inlinedFrameIndex(),
1582 source, 1584 source,
1583 Boolean(disable_break), 1585 Boolean(disable_break),
1584 opt_context_object); 1586 opt_context_object);
1585 return MakeMirror(result); 1587 return MakeMirror(result);
1586 }; 1588 };
1587 1589
1588 1590
1589 FrameMirror.prototype.invocationText = function() { 1591 FrameMirror.prototype.invocationText = function() {
1590 // Format frame invoaction (receiver, function and arguments). 1592 // Format frame invoaction (receiver, function and arguments).
1591 var result = ''; 1593 var result = '';
1592 var func = this.func(); 1594 var func = this.func();
1593 var receiver = this.receiver(); 1595 var receiver = this.receiver();
1594 if (this.isConstructCall()) { 1596 if (this.isConstructCall()) {
1595 // For constructor frames display new followed by the function name. 1597 // For constructor frames display new followed by the function name.
1596 result += 'new '; 1598 result += 'new ';
1597 result += func.name() ? func.name() : '[anonymous]'; 1599 result += func.name() ? func.name() : '[anonymous]';
1598 } else if (this.isDebuggerFrame()) { 1600 } else if (this.isDebuggerFrame()) {
1599 result += '[debugger]'; 1601 result += '[debugger]';
1600 } else { 1602 } else {
1601 // If the receiver has a className which is 'global' don't display it. 1603 // If the receiver has a className which is 'global' don't display it.
1602 var display_receiver = !receiver.className || receiver.className() != 'globa l'; 1604 var display_receiver =
1605 !receiver.className || (receiver.className() != 'global');
1603 if (display_receiver) { 1606 if (display_receiver) {
1604 result += receiver.toText(); 1607 result += receiver.toText();
1605 } 1608 }
1606 // Try to find the function as a property in the receiver. Include the 1609 // Try to find the function as a property in the receiver. Include the
1607 // prototype chain in the lookup. 1610 // prototype chain in the lookup.
1608 var property = GetUndefinedMirror(); 1611 var property = GetUndefinedMirror();
1609 if (receiver.isObject()) { 1612 if (receiver.isObject()) {
1610 for (var r = receiver; 1613 for (var r = receiver;
1611 !r.isNull() && property.isUndefined(); 1614 !r.isNull() && property.isUndefined();
1612 r = r.protoObject()) { 1615 r = r.protoObject()) {
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1654 } 1657 }
1655 result += ')'; 1658 result += ')';
1656 } 1659 }
1657 1660
1658 if (this.isAtReturn()) { 1661 if (this.isAtReturn()) {
1659 result += ' returning '; 1662 result += ' returning ';
1660 result += this.returnValue().toText(); 1663 result += this.returnValue().toText();
1661 } 1664 }
1662 1665
1663 return result; 1666 return result;
1664 } 1667 };
1665 1668
1666 1669
1667 FrameMirror.prototype.sourceAndPositionText = function() { 1670 FrameMirror.prototype.sourceAndPositionText = function() {
1668 // Format source and position. 1671 // Format source and position.
1669 var result = ''; 1672 var result = '';
1670 var func = this.func(); 1673 var func = this.func();
1671 if (func.resolved()) { 1674 if (func.resolved()) {
1672 if (func.script()) { 1675 if (func.script()) {
1673 if (func.script().name()) { 1676 if (func.script().name()) {
1674 result += func.script().name(); 1677 result += func.script().name();
(...skipping 11 matching lines...) Expand all
1686 } 1689 }
1687 } 1690 }
1688 } else { 1691 } else {
1689 result += '[no source]'; 1692 result += '[no source]';
1690 } 1693 }
1691 } else { 1694 } else {
1692 result += '[unresolved]'; 1695 result += '[unresolved]';
1693 } 1696 }
1694 1697
1695 return result; 1698 return result;
1696 } 1699 };
1697 1700
1698 1701
1699 FrameMirror.prototype.localsText = function() { 1702 FrameMirror.prototype.localsText = function() {
1700 // Format local variables. 1703 // Format local variables.
1701 var result = ''; 1704 var result = '';
1702 var locals_count = this.localCount() 1705 var locals_count = this.localCount();
1703 if (locals_count > 0) { 1706 if (locals_count > 0) {
1704 for (var i = 0; i < locals_count; ++i) { 1707 for (var i = 0; i < locals_count; ++i) {
1705 result += ' var '; 1708 result += ' var ';
1706 result += this.localName(i); 1709 result += this.localName(i);
1707 result += ' = '; 1710 result += ' = ';
1708 result += this.localValue(i).toText(); 1711 result += this.localValue(i).toText();
1709 if (i < locals_count - 1) result += '\n'; 1712 if (i < locals_count - 1) result += '\n';
1710 } 1713 }
1711 } 1714 }
1712 1715
1713 return result; 1716 return result;
1714 } 1717 };
1715 1718
1716 1719
1717 FrameMirror.prototype.toText = function(opt_locals) { 1720 FrameMirror.prototype.toText = function(opt_locals) {
1718 var result = ''; 1721 var result = '';
1719 result += '#' + (this.index() <= 9 ? '0' : '') + this.index(); 1722 result += '#' + (this.index() <= 9 ? '0' : '') + this.index();
1720 result += ' '; 1723 result += ' ';
1721 result += this.invocationText(); 1724 result += this.invocationText();
1722 result += ' '; 1725 result += ' ';
1723 result += this.sourceAndPositionText(); 1726 result += this.sourceAndPositionText();
1724 if (opt_locals) { 1727 if (opt_locals) {
1725 result += '\n'; 1728 result += '\n';
1726 result += this.localsText(); 1729 result += this.localsText();
1727 } 1730 }
1728 return result; 1731 return result;
1729 } 1732 };
1730 1733
1731 1734
1732 const kScopeDetailsTypeIndex = 0; 1735 const kScopeDetailsTypeIndex = 0;
1733 const kScopeDetailsObjectIndex = 1; 1736 const kScopeDetailsObjectIndex = 1;
1734 1737
1735 function ScopeDetails(frame, index) { 1738 function ScopeDetails(frame, index) {
1736 this.break_id_ = frame.break_id_; 1739 this.break_id_ = frame.break_id_;
1737 this.details_ = %GetScopeDetails(frame.break_id_, 1740 this.details_ = %GetScopeDetails(frame.break_id_,
1738 frame.details_.frameId(), 1741 frame.details_.frameId(),
1739 frame.details_.inlinedFrameIndex(), 1742 frame.details_.inlinedFrameIndex(),
1740 index); 1743 index);
1741 } 1744 }
1742 1745
1743 1746
1744 ScopeDetails.prototype.type = function() { 1747 ScopeDetails.prototype.type = function() {
1745 %CheckExecutionState(this.break_id_); 1748 %CheckExecutionState(this.break_id_);
1746 return this.details_[kScopeDetailsTypeIndex]; 1749 return this.details_[kScopeDetailsTypeIndex];
1747 } 1750 };
1748 1751
1749 1752
1750 ScopeDetails.prototype.object = function() { 1753 ScopeDetails.prototype.object = function() {
1751 %CheckExecutionState(this.break_id_); 1754 %CheckExecutionState(this.break_id_);
1752 return this.details_[kScopeDetailsObjectIndex]; 1755 return this.details_[kScopeDetailsObjectIndex];
1753 } 1756 };
1754 1757
1755 1758
1756 /** 1759 /**
1757 * Mirror object for scope. 1760 * Mirror object for scope.
1758 * @param {FrameMirror} frame The frame this scope is a part of 1761 * @param {FrameMirror} frame The frame this scope is a part of
1759 * @param {number} index The scope index in the frame 1762 * @param {number} index The scope index in the frame
1760 * @constructor 1763 * @constructor
1761 * @extends Mirror 1764 * @extends Mirror
1762 */ 1765 */
1763 function ScopeMirror(frame, index) { 1766 function ScopeMirror(frame, index) {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
1855 1858
1856 1859
1857 ScriptMirror.prototype.lineCount = function() { 1860 ScriptMirror.prototype.lineCount = function() {
1858 return this.script_.lineCount(); 1861 return this.script_.lineCount();
1859 }; 1862 };
1860 1863
1861 1864
1862 ScriptMirror.prototype.locationFromPosition = function( 1865 ScriptMirror.prototype.locationFromPosition = function(
1863 position, include_resource_offset) { 1866 position, include_resource_offset) {
1864 return this.script_.locationFromPosition(position, include_resource_offset); 1867 return this.script_.locationFromPosition(position, include_resource_offset);
1865 } 1868 };
1866 1869
1867 1870
1868 ScriptMirror.prototype.sourceSlice = function (opt_from_line, opt_to_line) { 1871 ScriptMirror.prototype.sourceSlice = function (opt_from_line, opt_to_line) {
1869 return this.script_.sourceSlice(opt_from_line, opt_to_line); 1872 return this.script_.sourceSlice(opt_from_line, opt_to_line);
1870 } 1873 };
1871 1874
1872 1875
1873 ScriptMirror.prototype.context = function() { 1876 ScriptMirror.prototype.context = function() {
1874 return this.context_; 1877 return this.context_;
1875 }; 1878 };
1876 1879
1877 1880
1878 ScriptMirror.prototype.evalFromScript = function() { 1881 ScriptMirror.prototype.evalFromScript = function() {
1879 return MakeMirror(this.script_.eval_from_script); 1882 return MakeMirror(this.script_.eval_from_script);
1880 }; 1883 };
(...skipping 19 matching lines...) Expand all
1900 result += ' (lines: '; 1903 result += ' (lines: ';
1901 if (this.lineOffset() > 0) { 1904 if (this.lineOffset() > 0) {
1902 result += this.lineOffset(); 1905 result += this.lineOffset();
1903 result += '-'; 1906 result += '-';
1904 result += this.lineOffset() + this.lineCount() - 1; 1907 result += this.lineOffset() + this.lineCount() - 1;
1905 } else { 1908 } else {
1906 result += this.lineCount(); 1909 result += this.lineCount();
1907 } 1910 }
1908 result += ')'; 1911 result += ')';
1909 return result; 1912 return result;
1910 } 1913 };
1911 1914
1912 1915
1913 /** 1916 /**
1914 * Mirror object for context. 1917 * Mirror object for context.
1915 * @param {Object} data The context data 1918 * @param {Object} data The context data
1916 * @constructor 1919 * @constructor
1917 * @extends Mirror 1920 * @extends Mirror
1918 */ 1921 */
1919 function ContextMirror(data) { 1922 function ContextMirror(data) {
1920 %_CallFunction(this, CONTEXT_TYPE, Mirror); 1923 %_CallFunction(this, CONTEXT_TYPE, Mirror);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1958 1961
1959 /** 1962 /**
1960 * Returns a serialization of an object reference. The referenced object are 1963 * Returns a serialization of an object reference. The referenced object are
1961 * added to the serialization state. 1964 * added to the serialization state.
1962 * 1965 *
1963 * @param {Mirror} mirror The mirror to serialize 1966 * @param {Mirror} mirror The mirror to serialize
1964 * @returns {String} JSON serialization 1967 * @returns {String} JSON serialization
1965 */ 1968 */
1966 JSONProtocolSerializer.prototype.serializeReference = function(mirror) { 1969 JSONProtocolSerializer.prototype.serializeReference = function(mirror) {
1967 return this.serialize_(mirror, true, true); 1970 return this.serialize_(mirror, true, true);
1968 } 1971 };
1969 1972
1970 1973
1971 /** 1974 /**
1972 * Returns a serialization of an object value. The referenced objects are 1975 * Returns a serialization of an object value. The referenced objects are
1973 * added to the serialization state. 1976 * added to the serialization state.
1974 * 1977 *
1975 * @param {Mirror} mirror The mirror to serialize 1978 * @param {Mirror} mirror The mirror to serialize
1976 * @returns {String} JSON serialization 1979 * @returns {String} JSON serialization
1977 */ 1980 */
1978 JSONProtocolSerializer.prototype.serializeValue = function(mirror) { 1981 JSONProtocolSerializer.prototype.serializeValue = function(mirror) {
1979 var json = this.serialize_(mirror, false, true); 1982 var json = this.serialize_(mirror, false, true);
1980 return json; 1983 return json;
1981 } 1984 };
1982 1985
1983 1986
1984 /** 1987 /**
1985 * Returns a serialization of all the objects referenced. 1988 * Returns a serialization of all the objects referenced.
1986 * 1989 *
1987 * @param {Mirror} mirror The mirror to serialize. 1990 * @param {Mirror} mirror The mirror to serialize.
1988 * @returns {Array.<Object>} Array of the referenced objects converted to 1991 * @returns {Array.<Object>} Array of the referenced objects converted to
1989 * protcol objects. 1992 * protcol objects.
1990 */ 1993 */
1991 JSONProtocolSerializer.prototype.serializeReferencedObjects = function() { 1994 JSONProtocolSerializer.prototype.serializeReferencedObjects = function() {
1992 // Collect the protocol representation of the referenced objects in an array. 1995 // Collect the protocol representation of the referenced objects in an array.
1993 var content = []; 1996 var content = [];
1994 1997
1995 // Get the number of referenced objects. 1998 // Get the number of referenced objects.
1996 var count = this.mirrors_.length; 1999 var count = this.mirrors_.length;
1997 2000
1998 for (var i = 0; i < count; i++) { 2001 for (var i = 0; i < count; i++) {
1999 content.push(this.serialize_(this.mirrors_[i], false, false)); 2002 content.push(this.serialize_(this.mirrors_[i], false, false));
2000 } 2003 }
2001 2004
2002 return content; 2005 return content;
2003 } 2006 };
2004 2007
2005 2008
2006 JSONProtocolSerializer.prototype.includeSource_ = function() { 2009 JSONProtocolSerializer.prototype.includeSource_ = function() {
2007 return this.options_ && this.options_.includeSource; 2010 return this.options_ && this.options_.includeSource;
2008 } 2011 };
2009 2012
2010 2013
2011 JSONProtocolSerializer.prototype.inlineRefs_ = function() { 2014 JSONProtocolSerializer.prototype.inlineRefs_ = function() {
2012 return this.options_ && this.options_.inlineRefs; 2015 return this.options_ && this.options_.inlineRefs;
2013 } 2016 };
2014 2017
2015 2018
2016 JSONProtocolSerializer.prototype.maxStringLength_ = function() { 2019 JSONProtocolSerializer.prototype.maxStringLength_ = function() {
2017 if (IS_UNDEFINED(this.options_) || 2020 if (IS_UNDEFINED(this.options_) ||
2018 IS_UNDEFINED(this.options_.maxStringLength)) { 2021 IS_UNDEFINED(this.options_.maxStringLength)) {
2019 return kMaxProtocolStringLength; 2022 return kMaxProtocolStringLength;
2020 } 2023 }
2021 return this.options_.maxStringLength; 2024 return this.options_.maxStringLength;
2022 } 2025 };
2023 2026
2024 2027
2025 JSONProtocolSerializer.prototype.add_ = function(mirror) { 2028 JSONProtocolSerializer.prototype.add_ = function(mirror) {
2026 // If this mirror is already in the list just return. 2029 // If this mirror is already in the list just return.
2027 for (var i = 0; i < this.mirrors_.length; i++) { 2030 for (var i = 0; i < this.mirrors_.length; i++) {
2028 if (this.mirrors_[i] === mirror) { 2031 if (this.mirrors_[i] === mirror) {
2029 return; 2032 return;
2030 } 2033 }
2031 } 2034 }
2032 2035
2033 // Add the mirror to the list of mirrors to be serialized. 2036 // Add the mirror to the list of mirrors to be serialized.
2034 this.mirrors_.push(mirror); 2037 this.mirrors_.push(mirror);
2035 } 2038 };
2036 2039
2037 2040
2038 /** 2041 /**
2039 * Formats mirror object to protocol reference object with some data that can 2042 * Formats mirror object to protocol reference object with some data that can
2040 * be used to display the value in debugger. 2043 * be used to display the value in debugger.
2041 * @param {Mirror} mirror Mirror to serialize. 2044 * @param {Mirror} mirror Mirror to serialize.
2042 * @return {Object} Protocol reference object. 2045 * @return {Object} Protocol reference object.
2043 */ 2046 */
2044 JSONProtocolSerializer.prototype.serializeReferenceWithDisplayData_ = 2047 JSONProtocolSerializer.prototype.serializeReferenceWithDisplayData_ =
2045 function(mirror) { 2048 function(mirror) {
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
2132 2135
2133 case OBJECT_TYPE: 2136 case OBJECT_TYPE:
2134 case FUNCTION_TYPE: 2137 case FUNCTION_TYPE:
2135 case ERROR_TYPE: 2138 case ERROR_TYPE:
2136 case REGEXP_TYPE: 2139 case REGEXP_TYPE:
2137 // Add object representation. 2140 // Add object representation.
2138 this.serializeObject_(mirror, content, details); 2141 this.serializeObject_(mirror, content, details);
2139 break; 2142 break;
2140 2143
2141 case PROPERTY_TYPE: 2144 case PROPERTY_TYPE:
2142 throw new Error('PropertyMirror cannot be serialized independeltly') 2145 throw new Error('PropertyMirror cannot be serialized independeltly');
2143 break; 2146 break;
2144 2147
2145 case FRAME_TYPE: 2148 case FRAME_TYPE:
2146 // Add object representation. 2149 // Add object representation.
2147 this.serializeFrame_(mirror, content); 2150 this.serializeFrame_(mirror, content);
2148 break; 2151 break;
2149 2152
2150 case SCOPE_TYPE: 2153 case SCOPE_TYPE:
2151 // Add object representation. 2154 // Add object representation.
2152 this.serializeScope_(mirror, content); 2155 this.serializeScope_(mirror, content);
(...skipping 19 matching lines...) Expand all
2172 } 2175 }
2173 content.sourceLength = mirror.source().length; 2176 content.sourceLength = mirror.source().length;
2174 content.scriptType = mirror.scriptType(); 2177 content.scriptType = mirror.scriptType();
2175 content.compilationType = mirror.compilationType(); 2178 content.compilationType = mirror.compilationType();
2176 // For compilation type eval emit information on the script from which 2179 // For compilation type eval emit information on the script from which
2177 // eval was called if a script is present. 2180 // eval was called if a script is present.
2178 if (mirror.compilationType() == 1 && 2181 if (mirror.compilationType() == 1 &&
2179 mirror.evalFromScript()) { 2182 mirror.evalFromScript()) {
2180 content.evalFromScript = 2183 content.evalFromScript =
2181 this.serializeReference(mirror.evalFromScript()); 2184 this.serializeReference(mirror.evalFromScript());
2182 var evalFromLocation = mirror.evalFromLocation() 2185 var evalFromLocation = mirror.evalFromLocation();
2183 if (evalFromLocation) { 2186 if (evalFromLocation) {
2184 content.evalFromLocation = { line: evalFromLocation.line, 2187 content.evalFromLocation = { line: evalFromLocation.line,
2185 column: evalFromLocation.column }; 2188 column: evalFromLocation.column };
2186 } 2189 }
2187 if (mirror.evalFromFunctionName()) { 2190 if (mirror.evalFromFunctionName()) {
2188 content.evalFromFunctionName = mirror.evalFromFunctionName(); 2191 content.evalFromFunctionName = mirror.evalFromFunctionName();
2189 } 2192 }
2190 } 2193 }
2191 if (mirror.context()) { 2194 if (mirror.context()) {
2192 content.context = this.serializeReference(mirror.context()); 2195 content.context = this.serializeReference(mirror.context());
2193 } 2196 }
2194 break; 2197 break;
2195 2198
2196 case CONTEXT_TYPE: 2199 case CONTEXT_TYPE:
2197 content.data = mirror.data(); 2200 content.data = mirror.data();
2198 break; 2201 break;
2199 } 2202 }
2200 2203
2201 // Always add the text representation. 2204 // Always add the text representation.
2202 content.text = mirror.toText(); 2205 content.text = mirror.toText();
2203 2206
2204 // Create and return the JSON string. 2207 // Create and return the JSON string.
2205 return content; 2208 return content;
2206 } 2209 };
2207 2210
2208 2211
2209 /** 2212 /**
2210 * Serialize object information to the following JSON format. 2213 * Serialize object information to the following JSON format.
2211 * 2214 *
2212 * {"className":"<class name>", 2215 * {"className":"<class name>",
2213 * "constructorFunction":{"ref":<number>}, 2216 * "constructorFunction":{"ref":<number>},
2214 * "protoObject":{"ref":<number>}, 2217 * "protoObject":{"ref":<number>},
2215 * "prototypeObject":{"ref":<number>}, 2218 * "prototypeObject":{"ref":<number>},
2216 * "namedInterceptor":<boolean>, 2219 * "namedInterceptor":<boolean>,
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
2271 } 2274 }
2272 } 2275 }
2273 for (var i = 0; i < propertyIndexes.length; i++) { 2276 for (var i = 0; i < propertyIndexes.length; i++) {
2274 var propertyMirror = mirror.property(propertyIndexes[i]); 2277 var propertyMirror = mirror.property(propertyIndexes[i]);
2275 p[propertyNames.length + i] = this.serializeProperty_(propertyMirror); 2278 p[propertyNames.length + i] = this.serializeProperty_(propertyMirror);
2276 if (details) { 2279 if (details) {
2277 this.add_(propertyMirror.value()); 2280 this.add_(propertyMirror.value());
2278 } 2281 }
2279 } 2282 }
2280 content.properties = p; 2283 content.properties = p;
2281 } 2284 };
2282 2285
2283 2286
2284 /** 2287 /**
2285 * Serialize location information to the following JSON format: 2288 * Serialize location information to the following JSON format:
2286 * 2289 *
2287 * "position":"<position>", 2290 * "position":"<position>",
2288 * "line":"<line>", 2291 * "line":"<line>",
2289 * "column":"<column>", 2292 * "column":"<column>",
2290 * 2293 *
2291 * @param {SourceLocation} location The location to serialize, may be undefined. 2294 * @param {SourceLocation} location The location to serialize, may be undefined.
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2335 } else { 2338 } else {
2336 if (propertyMirror.attributes() != PropertyAttribute.None) { 2339 if (propertyMirror.attributes() != PropertyAttribute.None) {
2337 result.attributes = propertyMirror.attributes(); 2340 result.attributes = propertyMirror.attributes();
2338 } 2341 }
2339 if (propertyMirror.propertyType() != PropertyType.Normal) { 2342 if (propertyMirror.propertyType() != PropertyType.Normal) {
2340 result.propertyType = propertyMirror.propertyType(); 2343 result.propertyType = propertyMirror.propertyType();
2341 } 2344 }
2342 result.ref = propertyValue.handle(); 2345 result.ref = propertyValue.handle();
2343 } 2346 }
2344 return result; 2347 return result;
2345 } 2348 };
2346 2349
2347 2350
2348 JSONProtocolSerializer.prototype.serializeFrame_ = function(mirror, content) { 2351 JSONProtocolSerializer.prototype.serializeFrame_ = function(mirror, content) {
2349 content.index = mirror.index(); 2352 content.index = mirror.index();
2350 content.receiver = this.serializeReference(mirror.receiver()); 2353 content.receiver = this.serializeReference(mirror.receiver());
2351 var func = mirror.func(); 2354 var func = mirror.func();
2352 content.func = this.serializeReference(func); 2355 content.func = this.serializeReference(func);
2353 if (func.script()) { 2356 if (func.script()) {
2354 content.script = this.serializeReference(func.script()); 2357 content.script = this.serializeReference(func.script());
2355 } 2358 }
2356 content.constructCall = mirror.isConstructCall(); 2359 content.constructCall = mirror.isConstructCall();
2357 content.atReturn = mirror.isAtReturn(); 2360 content.atReturn = mirror.isAtReturn();
2358 if (mirror.isAtReturn()) { 2361 if (mirror.isAtReturn()) {
2359 content.returnValue = this.serializeReference(mirror.returnValue()); 2362 content.returnValue = this.serializeReference(mirror.returnValue());
2360 } 2363 }
2361 content.debuggerFrame = mirror.isDebuggerFrame(); 2364 content.debuggerFrame = mirror.isDebuggerFrame();
2362 var x = new Array(mirror.argumentCount()); 2365 var x = new Array(mirror.argumentCount());
2363 for (var i = 0; i < mirror.argumentCount(); i++) { 2366 for (var i = 0; i < mirror.argumentCount(); i++) {
2364 var arg = {}; 2367 var arg = {};
2365 var argument_name = mirror.argumentName(i) 2368 var argument_name = mirror.argumentName(i);
2366 if (argument_name) { 2369 if (argument_name) {
2367 arg.name = argument_name; 2370 arg.name = argument_name;
2368 } 2371 }
2369 arg.value = this.serializeReference(mirror.argumentValue(i)); 2372 arg.value = this.serializeReference(mirror.argumentValue(i));
2370 x[i] = arg; 2373 x[i] = arg;
2371 } 2374 }
2372 content.arguments = x; 2375 content.arguments = x;
2373 var x = new Array(mirror.localCount()); 2376 var x = new Array(mirror.localCount());
2374 for (var i = 0; i < mirror.localCount(); i++) { 2377 for (var i = 0; i < mirror.localCount(); i++) {
2375 var local = {}; 2378 var local = {};
2376 local.name = mirror.localName(i); 2379 local.name = mirror.localName(i);
2377 local.value = this.serializeReference(mirror.localValue(i)); 2380 local.value = this.serializeReference(mirror.localValue(i));
2378 x[i] = local; 2381 x[i] = local;
2379 } 2382 }
2380 content.locals = x; 2383 content.locals = x;
2381 serializeLocationFields(mirror.sourceLocation(), content); 2384 serializeLocationFields(mirror.sourceLocation(), content);
2382 var source_line_text = mirror.sourceLineText(); 2385 var source_line_text = mirror.sourceLineText();
2383 if (!IS_UNDEFINED(source_line_text)) { 2386 if (!IS_UNDEFINED(source_line_text)) {
2384 content.sourceLineText = source_line_text; 2387 content.sourceLineText = source_line_text;
2385 } 2388 }
2386 2389
2387 content.scopes = []; 2390 content.scopes = [];
2388 for (var i = 0; i < mirror.scopeCount(); i++) { 2391 for (var i = 0; i < mirror.scopeCount(); i++) {
2389 var scope = mirror.scope(i); 2392 var scope = mirror.scope(i);
2390 content.scopes.push({ 2393 content.scopes.push({
2391 type: scope.scopeType(), 2394 type: scope.scopeType(),
2392 index: i 2395 index: i
2393 }); 2396 });
2394 } 2397 }
2395 } 2398 };
2396 2399
2397 2400
2398 JSONProtocolSerializer.prototype.serializeScope_ = function(mirror, content) { 2401 JSONProtocolSerializer.prototype.serializeScope_ = function(mirror, content) {
2399 content.index = mirror.scopeIndex(); 2402 content.index = mirror.scopeIndex();
2400 content.frameIndex = mirror.frameIndex(); 2403 content.frameIndex = mirror.frameIndex();
2401 content.type = mirror.scopeType(); 2404 content.type = mirror.scopeType();
2402 content.object = this.inlineRefs_() ? 2405 content.object = this.inlineRefs_() ?
2403 this.serializeValue(mirror.scopeObject()) : 2406 this.serializeValue(mirror.scopeObject()) :
2404 this.serializeReference(mirror.scopeObject()); 2407 this.serializeReference(mirror.scopeObject());
2405 } 2408 };
2406 2409
2407 2410
2408 /** 2411 /**
2409 * Convert a number to a protocol value. For all finite numbers the number 2412 * Convert a number to a protocol value. For all finite numbers the number
2410 * itself is returned. For non finite numbers NaN, Infinite and 2413 * itself is returned. For non finite numbers NaN, Infinite and
2411 * -Infinite the string representation "NaN", "Infinite" or "-Infinite" 2414 * -Infinite the string representation "NaN", "Infinite" or "-Infinite"
2412 * (not including the quotes) is returned. 2415 * (not including the quotes) is returned.
2413 * 2416 *
2414 * @param {number} value The number value to convert to a protocol value. 2417 * @param {number} value The number value to convert to a protocol value.
2415 * @returns {number|string} Protocol value. 2418 * @returns {number|string} Protocol value.
2416 */ 2419 */
2417 function NumberToJSON_(value) { 2420 function NumberToJSON_(value) {
2418 if (isNaN(value)) { 2421 if (isNaN(value)) {
2419 return 'NaN'; 2422 return 'NaN';
2420 } 2423 }
2421 if (!NUMBER_IS_FINITE(value)) { 2424 if (!NUMBER_IS_FINITE(value)) {
2422 if (value > 0) { 2425 if (value > 0) {
2423 return 'Infinity'; 2426 return 'Infinity';
2424 } else { 2427 } else {
2425 return '-Infinity'; 2428 return '-Infinity';
2426 } 2429 }
2427 } 2430 }
2428 return value; 2431 return value;
2429 } 2432 }
OLDNEW
« no previous file with comments | « src/messages.js ('k') | src/regexp.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698