(frame)
| 594 | } |
| 595 | |
| 596 | execStateFrame(frame) { |
| 597 | const scriptid = parseInt(frame.location.scriptId); |
| 598 | const line = frame.location.lineNumber; |
| 599 | const column = frame.location.columnNumber; |
| 600 | const loc = %ScriptLocationFromLine2(scriptid, line, column, 0); |
| 601 | const func = { name : () => frame.functionName }; |
| 602 | const index = +frame.callFrameId.split(".")[2]; |
| 603 | |
| 604 | function allScopes() { |
| 605 | const scopes = []; |
| 606 | for (let i = 0; i < frame.scopeChain.length; i++) { |
| 607 | scopes.push(this.execStateScope(frame, i)); |
| 608 | } |
| 609 | return scopes; |
| 610 | } |
| 611 | |
| 612 | return { sourceColumn : () => column, |
| 613 | sourceLine : () => line + 1, |
| 614 | sourceLineText : () => loc.sourceText, |
| 615 | sourcePosition : () => loc.position, |
| 616 | evaluate : (expr, throw_on_side_effect) => |
| 617 | this.evaluateOnCallFrame(frame, expr, throw_on_side_effect), |
| 618 | functionName : () => frame.functionName, |
| 619 | func : () => func, |
| 620 | index : () => index, |
| 621 | localCount : () => this.execStateFrameLocalCount(frame), |
| 622 | localName : (ix) => this.execStateFrameLocalName(frame, ix), |
| 623 | localValue: (ix) => this.execStateFrameLocalValue(frame, ix), |
| 624 | receiver : () => this.frameReceiver(frame), |
| 625 | restart : () => this.execStateFrameRestart(frame), |
| 626 | returnValue : () => this.frameReturnValue(frame), |
| 627 | scopeCount : () => frame.scopeChain.length, |
| 628 | scope : (index) => this.execStateScope(frame, index), |
| 629 | allScopes : allScopes.bind(this) |
| 630 | }; |
| 631 | } |
| 632 | |
| 633 | evaluateGlobal(expr, throw_on_side_effect) { |
| 634 | const {msgid, msg} = this.createMessage( |
no test coverage detected