| // Copyright 2018 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Test that stepping works correctly with bytecode scaling prefix. |
| class MyClass { f(p) { this.x += p; } }; |
| |
| let obj = new MyClass(); |
| |
| function foo() { |
| obj.f(0); |
| obj.f(1); |
| obj.f(2); |
| obj.f(3); |
| obj.f(4); |
| obj.f(5); |
| obj.f(6); |
| obj.f(7); |
| obj.f(8); |
| obj.f(9); |
| obj.f(10); |
| obj.f(11); |
| obj.f(12); |
| obj.f(13); |
| obj.f(14); |
| obj.f(15); |
| obj.f(16); |
| obj.f(17); |
| obj.f(18); |
| obj.f(19); |
| obj.f(20); |
| obj.f(21); |
| obj.f(22); |
| obj.f(23); |
| obj.f(24); |
| obj.f(25); |
| obj.f(26); |
| obj.f(27); |
| obj.f(28); |
| obj.f(29); |
| obj.f(30); |
| obj.f(31); |
| obj.f(32); |
| obj.f(33); |
| obj.f(34); |
| obj.f(35); |
| obj.f(36); |
| obj.f(37); |
| obj.f(38); |
| obj.f(39); |
| obj.f(40); |
| obj.f(41); |
| obj.f(42); |
| obj.f(43); |
| obj.f(44); |
| obj.f(45); |
| obj.f(46); |
| obj.f(47); |
| obj.f(48); |
| obj.f(49); |
| obj.f(50); |
| obj.f(51); |
| obj.f(52); |
| obj.f(53); |
| obj.f(54); |
| obj.f(55); |
| obj.f(56); |
| obj.f(57); |
| obj.f(58); |
| obj.f(59); |
| obj.f(60); |
| obj.f(61); |
| obj.f(62); |
| obj.f(63); |
| obj.f(64); |
| obj.f(65); |
| obj.f(66); |
| obj.f(67); |
| obj.f(68); |
| obj.f(69); |
| obj.f(70); |
| obj.f(71); |
| obj.f(72); |
| obj.f(73); |
| obj.f(74); |
| obj.f(75); |
| obj.f(76); |
| obj.f(77); |
| obj.f(78); |
| obj.f(79); |
| obj.f(80); |
| obj.f(81); |
| obj.f(82); |
| obj.f(83); |
| obj.f(84); |
| obj.f(85); |
| obj.f(86); |
| obj.f(87); |
| obj.f(88); |
| obj.f(89); |
| obj.f(90); |
| obj.f(91); |
| obj.f(92); |
| obj.f(93); |
| obj.f(94); |
| obj.f(95); |
| obj.f(96); |
| obj.f(97); |
| obj.f(98); |
| obj.f(99); |
| obj.f(100); |
| obj.f(101); |
| obj.f(102); |
| obj.f(103); |
| obj.f(104); |
| obj.f(105); |
| obj.f(106); |
| obj.f(107); |
| obj.f(108); |
| obj.f(109); |
| obj.f(110); |
| obj.f(111); |
| obj.f(112); |
| obj.f(113); |
| obj.f(114); |
| obj.f(115); |
| obj.f(116); |
| obj.f(117); |
| obj.f(118); |
| obj.f(119); |
| obj.f(120); |
| obj.f(121); |
| obj.f(122); |
| obj.f(123); |
| obj.f(124); |
| obj.f(125); |
| obj.f(126); |
| obj.f(127); |
| obj.f(128); |
| obj.f(129); |
| obj.f(130); |
| obj.f(131); |
| obj.f(132); |
| obj.f(133); |
| obj.f(134); |
| obj.f(135); |
| obj.f(136); |
| obj.f(137); |
| obj.f(138); |
| obj.f(139); |
| obj.f(140); |
| obj.f(141); |
| obj.f(142); |
| obj.f(143); |
| obj.f(144); |
| obj.f(145); |
| obj.f(146); |
| obj.f(147); |
| obj.f(148); |
| obj.f(149); |
| obj.f(150); |
| obj.f(151); |
| obj.f(152); |
| obj.f(153); |
| obj.f(154); |
| obj.f(155); |
| obj.f(156); |
| obj.f(157); |
| obj.f(158); |
| obj.f(159); |
| obj.f(160); |
| obj.f(161); |
| obj.f(162); |
| obj.f(163); |
| obj.f(164); |
| obj.f(165); |
| obj.f(166); |
| obj.f(167); |
| obj.f(168); |
| obj.f(169); |
| obj.f(170); |
| obj.f(171); |
| obj.f(172); |
| obj.f(173); |
| obj.f(174); |
| obj.f(175); |
| obj.f(176); |
| obj.f(177); |
| obj.f(178); |
| obj.f(179); |
| obj.f(180); |
| obj.f(181); |
| obj.f(182); |
| obj.f(183); |
| obj.f(184); |
| obj.f(185); |
| obj.f(186); |
| obj.f(187); |
| obj.f(188); |
| obj.f(189); |
| obj.f(190); |
| obj.f(191); |
| obj.f(192); |
| obj.f(193); |
| obj.f(194); |
| obj.f(195); |
| obj.f(196); |
| obj.f(197); |
| obj.f(198); |
| obj.f(199); |
| obj.f(200); |
| obj.f(201); |
| obj.f(202); |
| obj.f(203); |
| obj.f(204); |
| obj.f(205); |
| obj.f(206); |
| obj.f(207); |
| obj.f(208); |
| obj.f(209); |
| obj.f(210); |
| obj.f(211); |
| obj.f(212); |
| obj.f(213); |
| obj.f(214); |
| obj.f(215); |
| obj.f(216); |
| obj.f(217); |
| obj.f(218); |
| obj.f(219); |
| obj.f(220); |
| obj.f(221); |
| obj.f(222); |
| obj.f(223); |
| obj.f(224); |
| obj.f(225); |
| obj.f(226); |
| obj.f(227); |
| obj.f(228); |
| obj.f(229); |
| obj.f(230); |
| obj.f(231); |
| obj.f(232); |
| obj.f(233); |
| obj.f(234); |
| obj.f(235); |
| obj.f(236); |
| obj.f(237); |
| obj.f(238); |
| obj.f(239); |
| obj.f(240); |
| obj.f(241); |
| obj.f(242); |
| obj.f(243); |
| obj.f(244); |
| obj.f(245); |
| obj.f(246); |
| obj.f(247); |
| obj.f(248); |
| obj.f(249); |
| obj.f(250); |
| obj.f(251); |
| obj.f(252); |
| obj.f(253); |
| obj.f(254); |
| obj.f(255); |
| debugger; |
| obj.f(256); |
| obj.f(257); |
| obj.f(258); |
| obj.f(259); |
| } |
| |
| let break_count = 0; |
| |
| function listener(event, exec_state, event_data, data) { |
| if (event != debug.Debug.DebugEvent.Break) return; |
| try { |
| exec_state.prepareStep(debug.Debug.StepAction.StepNext); |
| break_count++; |
| } catch { |
| %AbortJS("unexpected exception"); |
| } |
| } |
| |
| debug.Debug.setListener(listener); |
| foo(); |
| debug.Debug.setListener(null); |
| assertEquals(7, break_count); |