1f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// Copyright 2012 the V8 project authors. All rights reserved.
2f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// Redistribution and use in source and binary forms, with or without
3f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// modification, are permitted provided that the following conditions are
4f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// met:
5f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com//
6f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com//     * Redistributions of source code must retain the above copyright
7f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com//       notice, this list of conditions and the following disclaimer.
8f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com//     * Redistributions in binary form must reproduce the above
9f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com//       copyright notice, this list of conditions and the following
10f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com//       disclaimer in the documentation and/or other materials provided
11f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com//       with the distribution.
12f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com//     * Neither the name of Google Inc. nor the names of its
13f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com//       contributors may be used to endorse or promote products derived
14f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com//       from this software without specific prior written permission.
15f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com//
16f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com
28f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com// Flags: --expose-debug-as debug
29f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.comvar Debug = debug.Debug;
30f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com
31f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.comfunction listener(event, exec_state, event_data, data) {
32f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com  for (var i = 0, n = exec_state.frameCount(); i < n; i++) {
33f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com    exec_state.frame().scopeCount(i);
34f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com  }
35f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com  exec_state.prepareStep(Debug.StepAction.Continue, 1);
36f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com}
37f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com
38f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.comDebug.setListener(listener);
39f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com
40f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.comvar F = function () {
41f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com  1, function () {
42f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com    var d = 0;
43f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com    (function () { d; });
44f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com    debugger;
45f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com  }();
46f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com};
47f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com
48f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.comvar src = "(" + F.toString() + ")()";
49f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.comeval(src);
50f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com
51f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.comFunction.prototype.__defineGetter__("f", function () {
52f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com  debugger;
53f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com  return 0;
54f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com});
55f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com
56f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.comvar G = function () {
57f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com  1, function () {
58f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com    var d = 0;
59f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com    (function () { d; });
60f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com    debugger;
61f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com  }['f'];
62f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com};
63f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.com
64f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.comvar src = "(" + G.toString() + ")()";
65f2038fb01417bcf7698b87a5dfaa4a861539618aerik.corry@gmail.comeval(src);
66