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

Unified Diff: test/mjsunit/debug-evaluate-closure.js

Issue 19569003: Do not materialize context-allocated values for debug-evaluate. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: test/mjsunit/debug-evaluate-closure.js
diff --git a/test/mjsunit/regress/regress-frame-details-null-receiver.js b/test/mjsunit/debug-evaluate-closure.js
similarity index 57%
copy from test/mjsunit/regress/regress-frame-details-null-receiver.js
copy to test/mjsunit/debug-evaluate-closure.js
index d15ed4d00ae774ad01406855fc42cb8c1dfbcc07..e7427eccbe13df64659c85464847f267375e115f 100644
--- a/test/mjsunit/regress/regress-frame-details-null-receiver.js
+++ b/test/mjsunit/debug-evaluate-closure.js
@@ -31,22 +31,57 @@ Debug = debug.Debug;
var listened = false;
function listener(event, exec_state, event_data, data) {
- if (event == Debug.DebugEvent.Exception) {
- for (var i = 0; i < exec_state.frameCount(); i++) {
- print(exec_state.frame(i).receiver());
- print(exec_state.frame(i).func().name());
- }
+ if (event != Debug.DebugEvent.Break) return;
+ try {
+ assertEquals("bar return", exec_state.frame(0).evaluate("bar()").value());
+ assertEquals("inner bar", exec_state.frame(0).evaluate("inner").value());
+ assertEquals("outer bar", exec_state.frame(0).evaluate("outer").value());
+ assertEquals("baz inner", exec_state.frame(0).evaluate("baz").value());
+ assertEquals("baz outer", exec_state.frame(1).evaluate("baz").value());
+ exec_state.frame(0).evaluate("w = 'w foo'").value();
+ exec_state.frame(0).evaluate("inner = 'inner foo'").value();
+ exec_state.frame(0).evaluate("outer = 'outer foo'").value();
+ exec_state.frame(0).evaluate("baz = 'baz inner foo'").value();
+ exec_state.frame(1).evaluate("baz = 'baz outer foo'").value();
+ } catch (e) {
+ print(e);
+ print(e.stack);
}
listened = true;
}
Debug.setListener(listener);
-Debug.setBreakOnException();
-assertThrows(function() { delete null['foo']; });
+var outer = "outer";
+var baz = "baz outer"
-Debug.clearBreakOnException();
-Debug.setListener(null);
+function foo() {
+ var inner = "inner";
+ var baz = "baz inner";
+ var withw = { w: "w" };
+ var withv = { v: "v" };
-assertTrue(listened);
+ with (withv) {
+ var bar = function bar() {
+ inner = "inner bar";
+ outer = "outer bar";
+ v = "v bar";
+ return "bar return";
+ };
+ }
+
+ with (withw) {
+ debugger;
+ }
+ assertEquals("inner foo", inner);
+ assertEquals("baz inner foo", baz);
+ assertEquals("w foo", withw.w);
+ assertEquals("v bar", withv.v);
+}
+
+foo();
+assertEquals("outer foo", outer);
+assertEquals("baz outer foo", baz);
+assertTrue(listened);
+Debug.setListener(null);

Powered by Google App Engine
This is Rietveld 408576698