| Index: src/mirror-debugger.js
|
| diff --git a/src/mirror-debugger.js b/src/mirror-debugger.js
|
| index 57de6c68f91f2c0bc5f57825331397ade1497436..0a32597fabb66b011b27f443a621d9cf507f1604 100644
|
| --- a/src/mirror-debugger.js
|
| +++ b/src/mirror-debugger.js
|
| @@ -1250,9 +1250,9 @@ const kFrameDetailsNameIndex = 0;
|
| const kFrameDetailsValueIndex = 1;
|
| const kFrameDetailsNameValueSize = 2;
|
|
|
| -const kFrameDetailsFlagDebuggerFrame = 1;
|
| -const kFrameDetailsFlagOptimizedFrame = 2;
|
| -const kFrameDetailsFlagInlinedFrame = 4;
|
| +const kFrameDetailsFlagDebuggerFrameMask = 1 << 0;
|
| +const kFrameDetailsFlagOptimizedFrameMask = 1 << 1;
|
| +const kFrameDetailsFlagInlinedFrameIndexMask = 7 << 2;
|
|
|
| /**
|
| * Wrapper for the frame details information retreived from the VM. The frame
|
| @@ -1266,7 +1266,7 @@ const kFrameDetailsFlagInlinedFrame = 4;
|
| * 5: Source position
|
| * 6: Construct call
|
| * 7: Is at return
|
| - * 8: Flags (debugger frame, optimized frame, inlined frame)
|
| + * 8: Flags (debugger frame, optimized frame, inlined frame index)
|
| * Arguments name, value
|
| * Locals name, value
|
| * Return value if any
|
| @@ -1312,22 +1312,27 @@ FrameDetails.prototype.isAtReturn = function() {
|
|
|
| FrameDetails.prototype.isDebuggerFrame = function() {
|
| %CheckExecutionState(this.break_id_);
|
| - var f = kFrameDetailsFlagDebuggerFrame;
|
| + var f = kFrameDetailsFlagDebuggerFrameMask;
|
| return (this.details_[kFrameDetailsFlagsIndex] & f) == f;
|
| }
|
|
|
|
|
| FrameDetails.prototype.isOptimizedFrame = function() {
|
| %CheckExecutionState(this.break_id_);
|
| - var f = kFrameDetailsFlagOptimizedFrame;
|
| + var f = kFrameDetailsFlagOptimizedFrameMask;
|
| return (this.details_[kFrameDetailsFlagsIndex] & f) == f;
|
| }
|
|
|
|
|
| FrameDetails.prototype.isInlinedFrame = function() {
|
| + return this.inlinedFrameIndex() > 0;
|
| +}
|
| +
|
| +
|
| +FrameDetails.prototype.inlinedFrameIndex = function() {
|
| %CheckExecutionState(this.break_id_);
|
| - var f = kFrameDetailsFlagInlinedFrame;
|
| - return (this.details_[kFrameDetailsFlagsIndex] & f) == f;
|
| + var f = kFrameDetailsFlagInlinedFrameIndexMask;
|
| + return (this.details_[kFrameDetailsFlagsIndex] & f) >> 2
|
| }
|
|
|
|
|
| @@ -1476,6 +1481,11 @@ FrameMirror.prototype.isInlinedFrame = function() {
|
| };
|
|
|
|
|
| +FrameMirror.prototype.inlinedFrameIndex = function() {
|
| + return this.details_.inlinedFrameIndex();
|
| +};
|
| +
|
| +
|
| FrameMirror.prototype.argumentCount = function() {
|
| return this.details_.argumentCount();
|
| };
|
| @@ -1565,8 +1575,12 @@ FrameMirror.prototype.scope = function(index) {
|
|
|
|
|
| FrameMirror.prototype.evaluate = function(source, disable_break, opt_context_object) {
|
| - var result = %DebugEvaluate(this.break_id_, this.details_.frameId(),
|
| - source, Boolean(disable_break), opt_context_object);
|
| + var result = %DebugEvaluate(this.break_id_,
|
| + this.details_.frameId(),
|
| + this.details_.inlinedFrameIndex(),
|
| + source,
|
| + Boolean(disable_break),
|
| + opt_context_object);
|
| return MakeMirror(result);
|
| };
|
|
|
| @@ -1719,6 +1733,7 @@ function ScopeDetails(frame, index) {
|
| this.break_id_ = frame.break_id_;
|
| this.details_ = %GetScopeDetails(frame.break_id_,
|
| frame.details_.frameId(),
|
| + frame.details_.inlinedFrameIndex(),
|
| index);
|
| }
|
|
|
|
|