| Index: src/mirror-debugger.js
|
| diff --git a/src/mirror-debugger.js b/src/mirror-debugger.js
|
| index e1fd872f3b980f0224bb3b1741989ea3dcea2718..6e2281d6511c61662479b8bf6aded60a5be9d769 100644
|
| --- a/src/mirror-debugger.js
|
| +++ b/src/mirror-debugger.js
|
| @@ -1671,13 +1671,30 @@ FrameMirror.prototype.scope = function(index) {
|
|
|
| FrameMirror.prototype.evaluate = function(source, 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);
|
| + var result_array = %DebugEvaluate(this.break_id_,
|
| + this.details_.frameId(),
|
| + this.details_.inlinedFrameIndex(),
|
| + source,
|
| + Boolean(disable_break),
|
| + opt_context_object);
|
| + // Silently ignore local variables changes if the frame is optimized.
|
| + if (!this.isOptimizedFrame()) {
|
| + var local_scope_before = result_array[1];
|
| + var local_scope_after = result_array[2];
|
| + for (var n in local_scope_after) {
|
| + var value_before = local_scope_before[n];
|
| + var value_after = local_scope_after[n];
|
| + if (value_before !== value_after) {
|
| + %SetScopeVariableValue(this.break_id_,
|
| + this.details_.frameId(),
|
| + this.details_.inlinedFrameIndex(),
|
| + 0,
|
| + n,
|
| + value_after);
|
| + }
|
| + }
|
| + }
|
| + return MakeMirror(result_array[0]);
|
| };
|
|
|
|
|
|
|