1 // Copyright 2015 the V8 project authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Flags: --expose-debug-as debug --allow-natives-syntax 6 7 var Debug = debug.Debug; 8 9 var exception = null; 10 11 function listener(event, exec_state, event_data, data) { 12 if (event != Debug.DebugEvent.Break) return; 13 try { 14 var scopes = exec_state.frame().allScopes(); 15 assertEquals(4, scopes.length); 16 assertEquals(debug.ScopeType.With, scopes[0].scopeType()); 17 assertEquals(debug.ScopeType.Local, scopes[1].scopeType()); 18 assertEquals(debug.ScopeType.Script, scopes[2].scopeType()); 19 assertEquals(debug.ScopeType.Global, scopes[3].scopeType()); 20 } catch (e) { 21 exception = e; 22 } 23 } 24 25 function f() { 26 with({}) { 27 debugger; 28 } 29 } 30 31 f(); 32 f(); 33 34 %OptimizeFunctionOnNextCall(f); 35 Debug.setListener(listener); 36 37 f(); 38 39 assertNull(exception); 40