OLD | NEW |
(Empty) | |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are |
| 4 // met: |
| 5 // |
| 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided |
| 11 // with the distribution. |
| 12 // * Neither the name of Google Inc. nor the names of its |
| 13 // contributors may be used to endorse or promote products derived |
| 14 // from this software without specific prior written permission. |
| 15 // |
| 16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| 17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| 18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| 19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| 20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| 21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 |
| 28 // Flags: --ignition-filter=f --expose-debug-as debug |
| 29 |
| 30 // This test tests that full code compiled without debug break slots |
| 31 // is recompiled with debug break slots when debugging is started. |
| 32 |
| 33 // Get the Debug object exposed from the debug context global object. |
| 34 Debug = debug.Debug |
| 35 |
| 36 var done = false; |
| 37 var step_count = 0; |
| 38 var values = []; |
| 39 |
| 40 // Debug event listener which steps until the global variable done is true. |
| 41 function listener(event, exec_state, event_data, data) { |
| 42 if (event == Debug.DebugEvent.Break) { |
| 43 if (!done) exec_state.prepareStep(Debug.StepAction.StepNext); |
| 44 step_count++; |
| 45 } |
| 46 }; |
| 47 |
| 48 // Set the global variables state to prpare the stepping test. |
| 49 function prepare_step_test() { |
| 50 done = false; |
| 51 step_count = 0; |
| 52 } |
| 53 |
| 54 // Test function to step through, uses widended bytecodes. |
| 55 function f() { |
| 56 var x = 10000000; |
| 57 var y = x + 1; |
| 58 var _aa = 0; values[_aa] = _aa; |
| 59 var _ab = 1; values[_ab] = _ab; |
| 60 var _ac = 2; values[_ac] = _ac; |
| 61 var _ad = 3; values[_ad] = _ad; |
| 62 var _ae = 4; values[_ae] = _ae; |
| 63 var _af = 5; values[_af] = _af; |
| 64 var _ag = 6; values[_ag] = _ag; |
| 65 var _ah = 7; values[_ah] = _ah; |
| 66 var _ai = 8; values[_ai] = _ai; |
| 67 var _aj = 9; values[_aj] = _aj; |
| 68 var _ak = 10; values[_ak] = _ak; |
| 69 var _al = 11; values[_al] = _al; |
| 70 var _am = 12; values[_am] = _am; |
| 71 var _an = 13; values[_an] = _an; |
| 72 var _ao = 14; values[_ao] = _ao; |
| 73 var _ap = 15; values[_ap] = _ap; |
| 74 var _ba = 16; values[_ba] = _ba; |
| 75 var _bb = 17; values[_bb] = _bb; |
| 76 var _bc = 18; values[_bc] = _bc; |
| 77 var _bd = 19; values[_bd] = _bd; |
| 78 var _be = 20; values[_be] = _be; |
| 79 var _bf = 21; values[_bf] = _bf; |
| 80 var _bg = 22; values[_bg] = _bg; |
| 81 var _bh = 23; values[_bh] = _bh; |
| 82 var _bi = 24; values[_bi] = _bi; |
| 83 var _bj = 25; values[_bj] = _bj; |
| 84 var _bk = 26; values[_bk] = _bk; |
| 85 var _bl = 27; values[_bl] = _bl; |
| 86 var _bm = 28; values[_bm] = _bm; |
| 87 var _bn = 29; values[_bn] = _bn; |
| 88 var _bo = 30; values[_bo] = _bo; |
| 89 var _bp = 31; values[_bp] = _bp; |
| 90 var _ca = 32; values[_ca] = _ca; |
| 91 var _cb = 33; values[_cb] = _cb; |
| 92 var _cc = 34; values[_cc] = _cc; |
| 93 var _cd = 35; values[_cd] = _cd; |
| 94 var _ce = 36; values[_ce] = _ce; |
| 95 var _cf = 37; values[_cf] = _cf; |
| 96 var _cg = 38; values[_cg] = _cg; |
| 97 var _ch = 39; values[_ch] = _ch; |
| 98 var _ci = 40; values[_ci] = _ci; |
| 99 var _cj = 41; values[_cj] = _cj; |
| 100 var _ck = 42; values[_ck] = _ck; |
| 101 var _cl = 43; values[_cl] = _cl; |
| 102 var _cm = 44; values[_cm] = _cm; |
| 103 var _cn = 45; values[_cn] = _cn; |
| 104 var _co = 46; values[_co] = _co; |
| 105 var _cp = 47; values[_cp] = _cp; |
| 106 var _da = 48; values[_da] = _da; |
| 107 var _db = 49; values[_db] = _db; |
| 108 var _dc = 50; values[_dc] = _dc; |
| 109 var _dd = 51; values[_dd] = _dd; |
| 110 var _de = 52; values[_de] = _de; |
| 111 var _df = 53; values[_df] = _df; |
| 112 var _dg = 54; values[_dg] = _dg; |
| 113 var _dh = 55; values[_dh] = _dh; |
| 114 var _di = 56; values[_di] = _di; |
| 115 var _dj = 57; values[_dj] = _dj; |
| 116 var _dk = 58; values[_dk] = _dk; |
| 117 var _dl = 59; values[_dl] = _dl; |
| 118 var _dm = 60; values[_dm] = _dm; |
| 119 var _dn = 61; values[_dn] = _dn; |
| 120 var _do = 62; values[_do] = _do; |
| 121 var _dp = 63; values[_dp] = _dp; |
| 122 var _ea = 64; values[_ea] = _ea; |
| 123 var _eb = 65; values[_eb] = _eb; |
| 124 var _ec = 66; values[_ec] = _ec; |
| 125 var _ed = 67; values[_ed] = _ed; |
| 126 var _ee = 68; values[_ee] = _ee; |
| 127 var _ef = 69; values[_ef] = _ef; |
| 128 var _eg = 70; values[_eg] = _eg; |
| 129 var _eh = 71; values[_eh] = _eh; |
| 130 var _ei = 72; values[_ei] = _ei; |
| 131 var _ej = 73; values[_ej] = _ej; |
| 132 var _ek = 74; values[_ek] = _ek; |
| 133 var _el = 75; values[_el] = _el; |
| 134 var _em = 76; values[_em] = _em; |
| 135 var _en = 77; values[_en] = _en; |
| 136 var _eo = 78; values[_eo] = _eo; |
| 137 var _ep = 79; values[_ep] = _ep; |
| 138 var _fa = 80; values[_fa] = _fa; |
| 139 var _fb = 81; values[_fb] = _fb; |
| 140 var _fc = 82; values[_fc] = _fc; |
| 141 var _fd = 83; values[_fd] = _fd; |
| 142 var _fe = 84; values[_fe] = _fe; |
| 143 var _ff = 85; values[_ff] = _ff; |
| 144 var _fg = 86; values[_fg] = _fg; |
| 145 var _fh = 87; values[_fh] = _fh; |
| 146 var _fi = 88; values[_fi] = _fi; |
| 147 var _fj = 89; values[_fj] = _fj; |
| 148 var _fk = 90; values[_fk] = _fk; |
| 149 var _fl = 91; values[_fl] = _fl; |
| 150 var _fm = 92; values[_fm] = _fm; |
| 151 var _fn = 93; values[_fn] = _fn; |
| 152 var _fo = 94; values[_fo] = _fo; |
| 153 var _fp = 95; values[_fp] = _fp; |
| 154 var _ga = 96; values[_ga] = _ga; |
| 155 var _gb = 97; values[_gb] = _gb; |
| 156 var _gc = 98; values[_gc] = _gc; |
| 157 var _gd = 99; values[_gd] = _gd; |
| 158 var _ge = 100; values[_ge] = _ge; |
| 159 var _gf = 101; values[_gf] = _gf; |
| 160 var _gg = 102; values[_gg] = _gg; |
| 161 var _gh = 103; values[_gh] = _gh; |
| 162 var _gi = 104; values[_gi] = _gi; |
| 163 var _gj = 105; values[_gj] = _gj; |
| 164 var _gk = 106; values[_gk] = _gk; |
| 165 var _gl = 107; values[_gl] = _gl; |
| 166 var _gm = 108; values[_gm] = _gm; |
| 167 var _gn = 109; values[_gn] = _gn; |
| 168 var _go = 110; values[_go] = _go; |
| 169 var _gp = 111; values[_gp] = _gp; |
| 170 var _ha = 112; values[_ha] = _ha; |
| 171 var _hb = 113; values[_hb] = _hb; |
| 172 var _hc = 114; values[_hc] = _hc; |
| 173 var _hd = 115; values[_hd] = _hd; |
| 174 var _he = 116; values[_he] = _he; |
| 175 var _hf = 117; values[_hf] = _hf; |
| 176 var _hg = 118; values[_hg] = _hg; |
| 177 var _hh = 119; values[_hh] = _hh; |
| 178 var _hi = 120; values[_hi] = _hi; |
| 179 var _hj = 121; values[_hj] = _hj; |
| 180 var _hk = 122; values[_hk] = _hk; |
| 181 var _hl = 123; values[_hl] = _hl; |
| 182 var _hm = 124; values[_hm] = _hm; |
| 183 var _hn = 125; values[_hn] = _hn; |
| 184 var _ho = 126; values[_ho] = _ho; |
| 185 var _hp = 127; values[_hp] = _hp; |
| 186 var _ia = 128; values[_ia] = _ia; |
| 187 var _ib = 129; values[_ib] = _ib; |
| 188 var _ic = 130; values[_ic] = _ic; |
| 189 var _id = 131; values[_id] = _id; |
| 190 var _ie = 132; values[_ie] = _ie; |
| 191 var _if = 133; values[_if] = _if; |
| 192 var _ig = 134; values[_ig] = _ig; |
| 193 var _ih = 135; values[_ih] = _ih; |
| 194 var _ii = 136; values[_ii] = _ii; |
| 195 var _ij = 137; values[_ij] = _ij; |
| 196 var _ik = 138; values[_ik] = _ik; |
| 197 var _il = 139; values[_il] = _il; |
| 198 var _im = 140; values[_im] = _im; |
| 199 var _in = 141; values[_in] = _in; |
| 200 var _io = 142; values[_io] = _io; |
| 201 var _ip = 143; values[_ip] = _ip; |
| 202 var _ja = 144; values[_ja] = _ja; |
| 203 var _jb = 145; values[_jb] = _jb; |
| 204 var _jc = 146; values[_jc] = _jc; |
| 205 var _jd = 147; values[_jd] = _jd; |
| 206 var _je = 148; values[_je] = _je; |
| 207 var _jf = 149; values[_jf] = _jf; |
| 208 var _jg = 150; values[_jg] = _jg; |
| 209 var _jh = 151; values[_jh] = _jh; |
| 210 var _ji = 152; values[_ji] = _ji; |
| 211 var _jj = 153; values[_jj] = _jj; |
| 212 var _jk = 154; values[_jk] = _jk; |
| 213 var _jl = 155; values[_jl] = _jl; |
| 214 var _jm = 156; values[_jm] = _jm; |
| 215 var _jn = 157; values[_jn] = _jn; |
| 216 var _jo = 158; values[_jo] = _jo; |
| 217 var _jp = 159; values[_jp] = _jp; |
| 218 var _ka = 160; values[_ka] = _ka; |
| 219 var _kb = 161; values[_kb] = _kb; |
| 220 var _kc = 162; values[_kc] = _kc; |
| 221 var _kd = 163; values[_kd] = _kd; |
| 222 var _ke = 164; values[_ke] = _ke; |
| 223 var _kf = 165; values[_kf] = _kf; |
| 224 var _kg = 166; values[_kg] = _kg; |
| 225 var _kh = 167; values[_kh] = _kh; |
| 226 var _ki = 168; values[_ki] = _ki; |
| 227 var _kj = 169; values[_kj] = _kj; |
| 228 var _kk = 170; values[_kk] = _kk; |
| 229 var _kl = 171; values[_kl] = _kl; |
| 230 var _km = 172; values[_km] = _km; |
| 231 var _kn = 173; values[_kn] = _kn; |
| 232 var _ko = 174; values[_ko] = _ko; |
| 233 var _kp = 175; values[_kp] = _kp; |
| 234 var _la = 176; values[_la] = _la; |
| 235 var _lb = 177; values[_lb] = _lb; |
| 236 var _lc = 178; values[_lc] = _lc; |
| 237 var _ld = 179; values[_ld] = _ld; |
| 238 var _le = 180; values[_le] = _le; |
| 239 var _lf = 181; values[_lf] = _lf; |
| 240 var _lg = 182; values[_lg] = _lg; |
| 241 var _lh = 183; values[_lh] = _lh; |
| 242 var _li = 184; values[_li] = _li; |
| 243 var _lj = 185; values[_lj] = _lj; |
| 244 var _lk = 186; values[_lk] = _lk; |
| 245 var _ll = 187; values[_ll] = _ll; |
| 246 var _lm = 188; values[_lm] = _lm; |
| 247 var _ln = 189; values[_ln] = _ln; |
| 248 var _lo = 190; values[_lo] = _lo; |
| 249 var _lp = 191; values[_lp] = _lp; |
| 250 var _ma = 192; values[_ma] = _ma; |
| 251 var _mb = 193; values[_mb] = _mb; |
| 252 var _mc = 194; values[_mc] = _mc; |
| 253 var _md = 195; values[_md] = _md; |
| 254 var _me = 196; values[_me] = _me; |
| 255 var _mf = 197; values[_mf] = _mf; |
| 256 var _mg = 198; values[_mg] = _mg; |
| 257 var _mh = 199; values[_mh] = _mh; |
| 258 var _mi = 200; values[_mi] = _mi; |
| 259 var _mj = 201; values[_mj] = _mj; |
| 260 var _mk = 202; values[_mk] = _mk; |
| 261 var _ml = 203; values[_ml] = _ml; |
| 262 var _mm = 204; values[_mm] = _mm; |
| 263 var _mn = 205; values[_mn] = _mn; |
| 264 var _mo = 206; values[_mo] = _mo; |
| 265 var _mp = 207; values[_mp] = _mp; |
| 266 var _na = 208; values[_na] = _na; |
| 267 var _nb = 209; values[_nb] = _nb; |
| 268 var _nc = 210; values[_nc] = _nc; |
| 269 var _nd = 211; values[_nd] = _nd; |
| 270 var _ne = 212; values[_ne] = _ne; |
| 271 var _nf = 213; values[_nf] = _nf; |
| 272 var _ng = 214; values[_ng] = _ng; |
| 273 var _nh = 215; values[_nh] = _nh; |
| 274 var _ni = 216; values[_ni] = _ni; |
| 275 var _nj = 217; values[_nj] = _nj; |
| 276 var _nk = 218; values[_nk] = _nk; |
| 277 var _nl = 219; values[_nl] = _nl; |
| 278 var _nm = 220; values[_nm] = _nm; |
| 279 var _nn = 221; values[_nn] = _nn; |
| 280 var _no = 222; values[_no] = _no; |
| 281 var _np = 223; values[_np] = _np; |
| 282 var _oa = 224; values[_oa] = _oa; |
| 283 var _ob = 225; values[_ob] = _ob; |
| 284 var _oc = 226; values[_oc] = _oc; |
| 285 var _od = 227; values[_od] = _od; |
| 286 var _oe = 228; values[_oe] = _oe; |
| 287 var _of = 229; values[_of] = _of; |
| 288 var _og = 230; values[_og] = _og; |
| 289 var _oh = 231; values[_oh] = _oh; |
| 290 var _oi = 232; values[_oi] = _oi; |
| 291 var _oj = 233; values[_oj] = _oj; |
| 292 var _ok = 234; values[_ok] = _ok; |
| 293 var _ol = 235; values[_ol] = _ol; |
| 294 var _om = 236; values[_om] = _om; |
| 295 var _on = 237; values[_on] = _on; |
| 296 var _oo = 238; values[_oo] = _oo; |
| 297 var _op = 239; values[_op] = _op; |
| 298 var _pa = 240; values[_pa] = _pa; |
| 299 var _pb = 241; values[_pb] = _pb; |
| 300 var _pc = 242; values[_pc] = _pc; |
| 301 var _pd = 243; values[_pd] = _pd; |
| 302 var _pe = 244; values[_pe] = _pe; |
| 303 var _pf = 245; values[_pf] = _pf; |
| 304 var _pg = 246; values[_pg] = _pg; |
| 305 var _ph = 247; values[_ph] = _ph; |
| 306 var _pi = 248; values[_pi] = _pi; |
| 307 var _pj = 249; values[_pj] = _pj; |
| 308 var _pk = 250; values[_pk] = _pk; |
| 309 var _pl = 251; values[_pl] = _pl; |
| 310 var _pm = 252; values[_pm] = _pm; |
| 311 var _pn = 253; values[_pn] = _pn; |
| 312 var _po = 254; values[_po] = _po; |
| 313 var _pp = 255; values[_pp] = _pp; |
| 314 var _qa = 256; values[_qa] = _qa; |
| 315 var _qb = 257; values[_qb] = _qb; |
| 316 var _qc = 258; values[_qc] = _qc; |
| 317 var _qd = 259; values[_qd] = _qd; |
| 318 var _qe = 260; values[_qe] = _qe; |
| 319 var _qf = 261; values[_qf] = _qf; |
| 320 var _qg = 262; values[_qg] = _qg; |
| 321 var _qh = 263; values[_qh] = _qh; |
| 322 var _qi = 264; values[_qi] = _qi; |
| 323 var _qj = 265; values[_qj] = _qj; |
| 324 var _qk = 266; values[_qk] = _qk; |
| 325 var _ql = 267; values[_ql] = _ql; |
| 326 var _qm = 268; values[_qm] = _qm; |
| 327 var _qn = 269; values[_qn] = _qn; |
| 328 var _qo = 270; values[_qo] = _qo; |
| 329 var _qp = 271; values[_qp] = _qp; |
| 330 var _ra = 272; values[_ra] = _ra; |
| 331 var _rb = 273; values[_rb] = _rb; |
| 332 var _rc = 274; values[_rc] = _rc; |
| 333 var _rd = 275; values[_rd] = _rd; |
| 334 var _re = 276; values[_re] = _re; |
| 335 var _rf = 277; values[_rf] = _rf; |
| 336 var _rg = 278; values[_rg] = _rg; |
| 337 var _rh = 279; values[_rh] = _rh; |
| 338 var _ri = 280; values[_ri] = _ri; |
| 339 var _rj = 281; values[_rj] = _rj; |
| 340 var _rk = 282; values[_rk] = _rk; |
| 341 var _rl = 283; values[_rl] = _rl; |
| 342 var _rm = 284; values[_rm] = _rm; |
| 343 var _rn = 285; values[_rn] = _rn; |
| 344 var _ro = 286; values[_ro] = _ro; |
| 345 var _rp = 287; values[_rp] = _rp; |
| 346 done = true; |
| 347 }; |
| 348 |
| 349 function check_values() { |
| 350 for (var i = 0; i < values.length; i++) { |
| 351 assertEquals(values[i], i); |
| 352 values[i] = -i; |
| 353 } |
| 354 } |
| 355 |
| 356 // Pass 1 - no debugger, no steps seen |
| 357 prepare_step_test(); |
| 358 f(); |
| 359 check_values(); |
| 360 assertEquals(0, step_count); |
| 361 |
| 362 // Pass 2 - debugger attached and stepping from BP |
| 363 Debug.setListener(listener); |
| 364 var bp = Debug.setBreakPoint(f, 1); |
| 365 prepare_step_test(); |
| 366 f(); |
| 367 check_values(); |
| 368 assertEquals(580, step_count); |
| 369 Debug.clearBreakPoint(bp); |
| 370 |
| 371 // Pass 3 - debugger attached and no BP |
| 372 prepare_step_test(); |
| 373 f(); |
| 374 check_values(); |
| 375 assertEquals(0, step_count); |
OLD | NEW |