290 lines
4.1 KiB
JavaScript
290 lines
4.1 KiB
JavaScript
|
// 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);
|