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 6 7 Debug = debug.Debug 8 9 var exception = null; 10 var log = []; 11 12 function listener(event, exec_state, event_data, data) { 13 if (event != Debug.DebugEvent.Break) return; 14 try { 15 print(event_data.sourceLineText()); 16 var entry = ""; 17 for (var i = 0; i < exec_state.frameCount(); i++) { 18 entry += exec_state.frame(i).sourceLineText().substr(-1); 19 entry += exec_state.frame(i).sourceColumn(); 20 } 21 log.push(entry); 22 exec_state.prepareStep(Debug.StepAction.StepIn); 23 } catch (e) { 24 exception = e; 25 } 26 }; 27 28 var target = {}; 29 var handler = { 30 has: function(target, name) { 31 return true; // h 32 }, // i 33 get: function(target, name) { 34 return 42; // j 35 }, // k 36 set: function(target, name, value) { 37 return false; // l 38 }, // m 39 } 40 41 var proxy = new Proxy(target, handler); 42 43 Debug.setListener(listener); 44 debugger; // a 45 var has = "step" in proxy; // b 46 var get = proxy.step; // c 47 proxy.step = 43; // d 48 49 Debug.setListener(null); // g 50 51 assertNull(exception); 52 assertTrue(has); 53 assertEquals(42, get); 54 55 assertEquals([ 56 "a0", 57 "b17", "h4b17", "i2b17", // [[Has]] 58 "c15", "j4c15", "k2c15", // [[Get]] 59 "d0", "l4d11", "m2d11", // [[Set]] 60 "g0" 61 ], log); 62