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

Side by Side Diff: third_party/WebKit/Source/platform/v8_inspector/DebuggerScript.js

Issue 1653053002: Devtools: parse variables scopes and sourcemap them (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 var sourcePosition = frameDetails.sourcePosition(); 394 var sourcePosition = frameDetails.sourcePosition();
395 var thisObject = frameDetails.receiver(); 395 var thisObject = frameDetails.receiver();
396 396
397 var isAtReturn = !!frameDetails.isAtReturn(); 397 var isAtReturn = !!frameDetails.isAtReturn();
398 var returnValue = isAtReturn ? frameDetails.returnValue() : undefined; 398 var returnValue = isAtReturn ? frameDetails.returnValue() : undefined;
399 399
400 var scopeMirrors = (scopeDetailsLevel === DebuggerScript.ScopeInfoDetails.No Scopes ? [] : frameMirror.allScopes(scopeDetailsLevel === DebuggerScript.ScopeIn foDetails.FastAsyncScopes)); 400 var scopeMirrors = (scopeDetailsLevel === DebuggerScript.ScopeInfoDetails.No Scopes ? [] : frameMirror.allScopes(scopeDetailsLevel === DebuggerScript.ScopeIn foDetails.FastAsyncScopes));
401 var scopeTypes = new Array(scopeMirrors.length); 401 var scopeTypes = new Array(scopeMirrors.length);
402 var scopeObjects = new Array(scopeMirrors.length); 402 var scopeObjects = new Array(scopeMirrors.length);
403 var scopeNames = new Array(scopeMirrors.length); 403 var scopeNames = new Array(scopeMirrors.length);
404 var scopeStartPositions = new Array(scopeMirrors.length);
405 var scopeEndPositions = new Array(scopeMirrors.length);
406 var scopeFunctions = new Array(scopeMirrors.length);
404 for (var i = 0; i < scopeMirrors.length; ++i) { 407 for (var i = 0; i < scopeMirrors.length; ++i) {
405 var scopeDetails = scopeMirrors[i].details(); 408 var scopeDetails = scopeMirrors[i].details();
406 scopeTypes[i] = scopeDetails.type(); 409 scopeTypes[i] = scopeDetails.type();
407 scopeObjects[i] = scopeDetails.object(); 410 scopeObjects[i] = scopeDetails.object();
408 scopeNames[i] = scopeDetails.name(); 411 scopeNames[i] = scopeDetails.name();
412 scopeStartPositions[i] = scopeDetails.startPosition();
413 scopeEndPositions[i] = scopeDetails.endPosition();
414 scopeFunctions[i] = scopeDetails.func();
409 } 415 }
410 416
411 // Calculated lazily. 417 // Calculated lazily.
412 var scopeChain; 418 var scopeChain;
413 var funcMirror; 419 var funcMirror;
414 var location; 420 var location;
421 var scopeStartLocations;
422 var scopeEndLocations;
423
424 function createLocation(script, pos)
425 {
426 if (!script)
427 return null;
428
429 location = script.locationFromPosition(pos, true);
430 return {
431 "lineNumber": location.line,
432 "columnNumber": location.column,
433 "scriptId": String(script.id())
434 }
435 }
415 436
416 function lazyScopeChain() 437 function lazyScopeChain()
417 { 438 {
418 if (!scopeChain) { 439 if (!scopeChain) {
419 scopeChain = []; 440 scopeChain = [];
441 scopeStartLocations = [];
442 scopeEndLocations = [];
420 for (var i = 0, j = 0; i < scopeObjects.length; ++i) { 443 for (var i = 0, j = 0; i < scopeObjects.length; ++i) {
421 var scopeObject = DebuggerScript._buildScopeObject(scopeTypes[i] , scopeObjects[i], scopeNames[i]); 444 var scopeObject = DebuggerScript._buildScopeObject(scopeTypes[i] , scopeObjects[i]);
422 if (scopeObject) { 445 if (scopeObject) {
423 scopeTypes[j] = scopeTypes[i]; 446 scopeTypes[j] = scopeTypes[i];
424 scopeNames[j] = scopeNames[i]; 447 scopeNames[j] = scopeNames[i];
425 scopeChain[j] = scopeObject; 448 scopeChain[j] = scopeObject;
449
450 var funcMirror = MakeMirror(scopeFunctions[i]);
451 if (!funcMirror.isFunction())
452 funcMirror = new UnresolvedFunctionMirror(funcObject);
453
454 var script = funcMirror.script();
455 scopeStartLocations[j] = createLocation(script, scopeStartPo sitions[i]);
456 scopeEndLocations[j] = createLocation(script, scopeEndPositi ons[i]);
426 ++j; 457 ++j;
427 } 458 }
428 } 459 }
429 scopeTypes.length = scopeChain.length; 460 scopeTypes.length = scopeChain.length;
430 scopeNames.length = scopeChain.length; 461 scopeNames.length = scopeChain.length;
431 scopeObjects = null; // Free for GC. 462 scopeObjects = null; // Free for GC.
463 scopeFunctions = null;
464 scopeStartPositions = null;
465 scopeEndPositions = null;
466
dgozman 2016/02/22 17:24:56 nit: extra blank line
sergeyv 2016/02/22 21:42:54 Done.
432 } 467 }
433 return scopeChain; 468 return scopeChain;
434 } 469 }
435 470
436 function lazyScopeTypes() 471 function lazyScopeTypes()
437 { 472 {
438 if (!scopeChain) 473 if (!scopeChain)
439 lazyScopeChain(); 474 lazyScopeChain();
440 return scopeTypes; 475 return scopeTypes;
441 } 476 }
442 477
443 function lazyScopeNames() 478 function lazyScopeNames()
444 { 479 {
445 if (!scopeChain) 480 if (!scopeChain)
446 lazyScopeChain(); 481 lazyScopeChain();
447 return scopeNames; 482 return scopeNames;
448 } 483 }
449 484
485 function lazyScopeStartLocations()
486 {
487 if (!scopeChain)
488 lazyScopeChain();
489
490 return scopeStartLocations;
491 }
492
493 function lazyScopeEndLocations()
494 {
495 if (!scopeChain)
496 lazyScopeChain();
497
498 return scopeEndLocations;
499 }
500
450 function ensureFuncMirror() 501 function ensureFuncMirror()
451 { 502 {
452 if (!funcMirror) { 503 if (!funcMirror) {
453 funcMirror = MakeMirror(funcObject); 504 funcMirror = MakeMirror(funcObject);
454 if (!funcMirror.isFunction()) 505 if (!funcMirror.isFunction())
455 funcMirror = new UnresolvedFunctionMirror(funcObject); 506 funcMirror = new UnresolvedFunctionMirror(funcObject);
456 } 507 }
457 return funcMirror; 508 return funcMirror;
458 } 509 }
459 510
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 "line": line, 601 "line": line,
551 "column": column, 602 "column": column,
552 "scriptName": scriptName, 603 "scriptName": scriptName,
553 "functionName": functionName, 604 "functionName": functionName,
554 "functionLine": functionLine, 605 "functionLine": functionLine,
555 "functionColumn": functionColumn, 606 "functionColumn": functionColumn,
556 "thisObject": thisObject, 607 "thisObject": thisObject,
557 "scopeChain": lazyScopeChain, 608 "scopeChain": lazyScopeChain,
558 "scopeType": lazyScopeTypes, 609 "scopeType": lazyScopeTypes,
559 "scopeName": lazyScopeNames, 610 "scopeName": lazyScopeNames,
611 "scopeStartLocation": lazyScopeStartLocations,
612 "scopeEndLocation": lazyScopeEndLocations,
560 "evaluate": evaluate, 613 "evaluate": evaluate,
561 "caller": callerFrame, 614 "caller": callerFrame,
562 "restart": restart, 615 "restart": restart,
563 "setVariableValue": setVariableValue, 616 "setVariableValue": setVariableValue,
564 "stepInPositions": stepInPositions, 617 "stepInPositions": stepInPositions,
565 "isAtReturn": isAtReturn, 618 "isAtReturn": isAtReturn,
566 "returnValue": returnValue 619 "returnValue": returnValue
567 }; 620 };
568 } 621 }
569 622
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 "parentPromise": eventData.parentPromise().value(), 661 "parentPromise": eventData.parentPromise().value(),
609 "status": eventData.status() 662 "status": eventData.status()
610 }; 663 };
611 } 664 }
612 665
613 // We never resolve Mirror by its handle so to avoid memory leaks caused by Mirr ors in the cache we disable it. 666 // We never resolve Mirror by its handle so to avoid memory leaks caused by Mirr ors in the cache we disable it.
614 ToggleMirrorCache(false); 667 ToggleMirrorCache(false);
615 668
616 return DebuggerScript; 669 return DebuggerScript;
617 })(); 670 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698