Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(242)

Side by Side Diff: test/cctest/interpreter/test-bytecode-generator.cc

Issue 1546683002: [Interpreter] Add support for jumps using constants with wide operands. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Tweak constant-array-builder-unittest.cc. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/compiler.h" 7 #include "src/compiler.h"
8 #include "src/interpreter/bytecode-array-iterator.h" 8 #include "src/interpreter/bytecode-array-iterator.h"
9 #include "src/interpreter/bytecode-generator.h" 9 #include "src/interpreter/bytecode-generator.h"
10 #include "src/interpreter/interpreter.h" 10 #include "src/interpreter/interpreter.h"
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 Handle<BytecodeArray> MakeBytecode(const char* script, const char* filter, 58 Handle<BytecodeArray> MakeBytecode(const char* script, const char* filter,
59 const char* function_name) { 59 const char* function_name) {
60 const char* old_ignition_filter = i::FLAG_ignition_filter; 60 const char* old_ignition_filter = i::FLAG_ignition_filter;
61 i::FLAG_ignition_filter = filter; 61 i::FLAG_ignition_filter = filter;
62 Handle<BytecodeArray> return_val = MakeBytecode(script, function_name); 62 Handle<BytecodeArray> return_val = MakeBytecode(script, function_name);
63 i::FLAG_ignition_filter = old_ignition_filter; 63 i::FLAG_ignition_filter = old_ignition_filter;
64 return return_val; 64 return return_val;
65 } 65 }
66 66
67 Handle<BytecodeArray> MakeBytecodeForFunctionBody(const char* body) { 67 Handle<BytecodeArray> MakeBytecodeForFunctionBody(const char* body) {
68 ScopedVector<char> program(3072); 68 static const char kFormat[] = "function %s() { %s }\n%s();";
69 SNPrintF(program, "function %s() { %s }\n%s();", kFunctionName, body, 69 static const int kFormatLength = arraysize(kFormat);
70 kFunctionName); 70 int length = kFormatLength + 2 * StrLength(kFunctionName) + StrLength(body);
71 ScopedVector<char> program(length);
72 length = SNPrintF(program, kFormat, kFunctionName, body, kFunctionName);
73 CHECK_GT(length, 0);
71 return MakeBytecode(program.start(), kFunctionName); 74 return MakeBytecode(program.start(), kFunctionName);
72 } 75 }
73 76
74 Handle<BytecodeArray> MakeBytecodeForFunction(const char* function) { 77 Handle<BytecodeArray> MakeBytecodeForFunction(const char* function) {
75 ScopedVector<char> program(3072); 78 ScopedVector<char> program(3072);
76 SNPrintF(program, "%s\n%s();", function, kFunctionName); 79 SNPrintF(program, "%s\n%s();", function, kFunctionName);
77 return MakeBytecode(program.start(), kFunctionName); 80 return MakeBytecode(program.start(), kFunctionName);
78 } 81 }
79 82
80 Handle<BytecodeArray> MakeBytecodeForFunctionNoFilter(const char* function) { 83 Handle<BytecodeArray> MakeBytecodeForFunctionNoFilter(const char* function) {
(...skipping 2542 matching lines...) Expand 10 before | Expand all | Expand 10 after
2623 }; 2626 };
2624 2627
2625 for (size_t i = 0; i < arraysize(snippets); i++) { 2628 for (size_t i = 0; i < arraysize(snippets); i++) {
2626 Handle<BytecodeArray> bytecode_array = 2629 Handle<BytecodeArray> bytecode_array =
2627 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); 2630 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet);
2628 CheckBytecodeArrayEqual(snippets[i], bytecode_array); 2631 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
2629 } 2632 }
2630 } 2633 }
2631 2634
2632 2635
2636 TEST(JumpsRequiringConstantWideOperands) {
2637 InitializedHandleScope handle_scope;
2638 BytecodeGeneratorHelper helper;
2639 ExpectedSnippet<Handle<Object>, 315> snippets[] = {
2640 {"var a = 'a0', b = 'b0', c = 'c0', d = 'd0', e = 'e0', _ = 'f0',\n"
2641 " g = 'g0', h = 'h0', i = 'i0', j = 'j0', k = 'k0', l = 'l0',\n"
2642 " m = 'm0', n = 'n0', o = 'o0', p = 'p0', q = 'q0', r = 'r0',\n"
2643 " s = 's0', t = 't0', u = 'u0', v = 'v0', w = 'w0', x = 'x0',\n"
2644 " y = 'y0', z = 'z0', A = 'A0', B = 'B0', C = 'C0', D = 'D0',\n"
2645 " E = 'E0', F = 'F0', G = 'G0', H = 'H0', I = 'I0', J = 'J0',\n"
2646 " K = 'K0', L = 'L0', M = 'M0', N = 'N0', O = 'O0', P = 'P0',\n"
2647 " Q = 'Q0', R = 'R0', S = 'S0', T = 'T0', U = 'U0', V = 'V0',\n"
2648 " W = 'W0', X = 'X0', Y = 'Y0', Z = 'Z0';\n"
2649 "var a = 'a1', b = 'b1', c = 'c1', d = 'd1', e = 'e1', _ = 'f1',\n"
2650 " g = 'g1', h = 'h1', i = 'i1', j = 'j1', k = 'k1', l = 'l1',\n"
2651 " m = 'm1', n = 'n1', o = 'o1', p = 'p1', q = 'q1', r = 'r1',\n"
2652 " s = 's1', t = 't1', u = 'u1', v = 'v1', w = 'w1', x = 'x1',\n"
2653 " y = 'y1', z = 'z1', A = 'A1', B = 'B1', C = 'C1', D = 'D1',\n"
2654 " E = 'E1', F = 'F1', G = 'G1', H = 'H1', I = 'I1', J = 'J1',\n"
2655 " K = 'K1', L = 'L1', M = 'M1', N = 'N1', O = 'O1', P = 'P1',\n"
2656 " Q = 'Q1', R = 'R1', S = 'S1', T = 'T1', U = 'U1', V = 'V1',\n"
2657 " W = 'W1', X = 'X1', Y = 'Y1', Z = 'Z1';\n"
2658 "var a = 'a2', b = 'b2', c = 'c2', d = 'd2', e = 'e2', _ = 'f2',\n"
2659 " g = 'g2', h = 'h2', i = 'i2', j = 'j2', k = 'k2', l = 'l2',\n"
2660 " m = 'm2', n = 'n2', o = 'o2', p = 'p2', q = 'q2', r = 'r2',\n"
2661 " s = 's2', t = 't2', u = 'u2', v = 'v2', w = 'w2', x = 'x2',\n"
2662 " y = 'y2', z = 'z2', A = 'A2', B = 'B2', C = 'C2', D = 'D2',\n"
2663 " E = 'E2', F = 'F2', G = 'G2', H = 'H2', I = 'I2', J = 'J2',\n"
2664 " K = 'K2', L = 'L2', M = 'M2', N = 'N2', O = 'O2', P = 'P2',\n"
2665 " Q = 'Q2', R = 'R2', S = 'S2', T = 'T2', U = 'U2', V = 'V2',\n"
2666 " W = 'W2', X = 'X2', Y = 'Y2', Z = 'Z2';\n"
2667 "var a = 'a3', b = 'b3', c = 'c3', d = 'd3', e = 'e3', _ = 'f3',\n"
2668 " g = 'g3', h = 'h3', i = 'i3', j = 'j3', k = 'k3', l = 'l3',\n"
2669 " m = 'm3', n = 'n3', o = 'o3', p = 'p3', q = 'q3', r = 'r3',\n"
2670 " s = 's3', t = 't3', u = 'u3', v = 'v3', w = 'w3', x = 'x3',\n"
2671 " y = 'y3', z = 'z3', A = 'A3', B = 'B3', C = 'C3', D = 'D3',\n"
2672 " E = 'E3', F = 'F3', G = 'G3', H = 'H3', I = 'I3', J = 'J3',\n"
2673 " K = 'K3', L = 'L3', M = 'M3', N = 'N3', O = 'O3', P = 'P3',\n"
2674 " Q = 'Q3', R = 'R3', S = 'S3', T = 'T3', U = 'U3', V = 'V3',\n"
2675 " W = 'W3', X = 'X3', Y = 'Y3', Z = 'Z3';\n"
2676 "var a = 'a4', b = 'b4', c = 'c4', d = 'd4', e = 'e4', _ = 'f4',\n"
2677 " g = 'g4', h = 'h4', i = 'i4', j = 'j4', k = 'k4', l = 'l4',\n"
2678 " m = 'm4', n = 'n4', o = 'o4', p = 'p4', q = 'q4', r = 'r4',\n"
2679 " s = 's4', t = 't4', u = 'u4', v = 'v4', w = 'w4', x = 'x4',\n"
2680 " y = 'y4', z = 'z4', A = 'A4', B = 'B4', C = 'C4', D = 'D4',\n"
2681 " E = 'E4', F = 'F4', G = 'G4', H = 'H4', I = 'I4', J = 'J4',\n"
2682 " K = 'K4', L = 'L4', M = 'M4', N = 'N4', O = 'O4', P = 'P4',\n"
2683 " Q = 'Q4', R = 'R4', S = 'S4', T = 'T4', U = 'U4', V = 'V4',\n"
2684 " W = 'W4', X = 'X4', Y = 'Y4', Z = 'Z4';\n"
2685 "var a = 'a5', b = 'b5', c = 'c5', d = 'd5', e = 'e5', _ = 'f5',\n"
2686 " g = 'g5', h = 'h5', i = 'i5', j = 'j5', k = 'k5', l = 'l5',\n"
2687 " m = 'm5', n = 'n5', o = 'o5', p = 'p5', q = 'q5', r = 'r5',\n"
2688 " s = 's5', t = 't5', u = 'u5', v = 'v5', w = 'w5', x = 'x5',\n"
2689 " y = 'y5', z = 'z5', A = 'A5', B = 'B5', C = 'C5', D = 'D5',\n"
2690 " E = 'E5', F = 'F5', G = 'G5', H = 'H5', I = 'I5', J = 'J5',\n"
2691 " K = 'K5', L = 'L5', M = 'M5', N = 'N5', O = 'O5', P = 'P5',\n"
2692 " Q = 'Q5', R = 'R5', S = 'S5', T = 'T5', U = 'U5', V = 'V5',\n"
2693 " W = 'W5', X = 'X5', Y = 'Y5', Z = 'Z5';\n"
rmcilroy 2016/01/05 13:46:10 Optional suggestion - if you just want to fill up
oth 2016/01/05 18:31:59 Done. There are 16-bit operands U16 which means do
2694 "for (var i = 0; i < 3; i++) {\n"
2695 " if (i == 1) continue;\n"
2696 " if (i == 2) break;\n"
2697 "}\n"
2698 "return 3;",
2699 kPointerSize * 53,
2700 1,
2701 1347,
2702 {
2703 #define L(c, r) B(LdaConstant), U8(c), B(Star), R(r)
2704 #define LW(c, r) B(LdaConstantWide), U16(c), B(Star), R(r)
2705 L(0, 0), L(1, 1), L(2, 2), L(3, 3), L(4, 4), L(5, 5), L(6, 6),
2706 L(7, 7), L(8, 8), L(9, 9), L(10, 10), L(11, 11), L(12, 12),
2707 L(13, 13), L(14, 14), L(15, 15), L(16, 16), L(17, 17), L(18, 18),
2708 L(19, 19), L(20, 20), L(21, 21), L(22, 22), L(23, 23), L(24, 24),
2709 L(25, 25), L(26, 26), L(27, 27), L(28, 28), L(29, 29), L(30, 30),
2710 L(31, 31), L(32, 32), L(33, 33), L(34, 34), L(35, 35), L(36, 36),
2711 L(37, 37), L(38, 38), L(39, 39), L(40, 40), L(41, 41), L(42, 42),
2712 L(43, 43), L(44, 44), L(45, 45), L(46, 46), L(47, 47), L(48, 48),
2713 L(49, 49), L(50, 50), L(51, 51), L(52, 0), L(53, 1), L(54, 2),
2714 L(55, 3), L(56, 4), L(57, 5), L(58, 6), L(59, 7), L(60, 8), L(61, 9),
2715 L(62, 10), L(63, 11), L(64, 12), L(65, 13), L(66, 14), L(67, 15),
2716 L(68, 16), L(69, 17), L(70, 18), L(71, 19), L(72, 20), L(73, 21),
2717 L(74, 22), L(75, 23), L(76, 24), L(77, 25), L(78, 26), L(79, 27),
2718 L(80, 28), L(81, 29), L(82, 30), L(83, 31), L(84, 32), L(85, 33),
2719 L(86, 34), L(87, 35), L(88, 36), L(89, 37), L(90, 38), L(91, 39),
2720 L(92, 40), L(93, 41), L(94, 42), L(95, 43), L(96, 44), L(97, 45),
2721 L(98, 46), L(99, 47), L(100, 48), L(101, 49), L(102, 50), L(103, 51),
2722 L(104, 0), L(105, 1), L(106, 2), L(107, 3), L(108, 4), L(109, 5),
2723 L(110, 6), L(111, 7), L(112, 8), L(113, 9), L(114, 10), L(115, 11),
2724 L(116, 12), L(117, 13), L(118, 14), L(119, 15), L(120, 16),
2725 L(121, 17), L(122, 18), L(123, 19), L(124, 20), L(125, 21),
2726 L(126, 22), L(127, 23), L(128, 24), L(129, 25), L(130, 26),
2727 L(131, 27), L(132, 28), L(133, 29), L(134, 30), L(135, 31),
2728 L(136, 32), L(137, 33), L(138, 34), L(139, 35), L(140, 36),
2729 L(141, 37), L(142, 38), L(143, 39), L(144, 40), L(145, 41),
2730 L(146, 42), L(147, 43), L(148, 44), L(149, 45), L(150, 46),
2731 L(151, 47), L(152, 48), L(153, 49), L(154, 50), L(155, 51),
2732 L(156, 0), L(157, 1), L(158, 2), L(159, 3), L(160, 4), L(161, 5),
2733 L(162, 6), L(163, 7), L(164, 8), L(165, 9), L(166, 10), L(167, 11),
2734 L(168, 12), L(169, 13), L(170, 14), L(171, 15), L(172, 16),
2735 L(173, 17), L(174, 18), L(175, 19), L(176, 20), L(177, 21),
2736 L(178, 22), L(179, 23), L(180, 24), L(181, 25), L(182, 26),
2737 L(183, 27), L(184, 28), L(185, 29), L(186, 30), L(187, 31),
2738 L(188, 32), L(189, 33), L(190, 34), L(191, 35), L(192, 36),
2739 L(193, 37), L(194, 38), L(195, 39), L(196, 40), L(197, 41),
2740 L(198, 42), L(199, 43), L(200, 44), L(201, 45), L(202, 46),
2741 L(203, 47), L(204, 48), L(205, 49), L(206, 50), L(207, 51),
2742 L(208, 0), L(209, 1), L(210, 2), L(211, 3), L(212, 4), L(213, 5),
2743 L(214, 6), L(215, 7), L(216, 8), L(217, 9), L(218, 10), L(219, 11),
2744 L(220, 12), L(221, 13), L(222, 14), L(223, 15), L(224, 16),
2745 L(225, 17), L(226, 18), L(227, 19), L(228, 20), L(229, 21),
2746 L(230, 22), L(231, 23), L(232, 24), L(233, 25), L(234, 26),
2747 L(235, 27), L(236, 28), L(237, 29), L(238, 30), L(239, 31),
2748 L(240, 32), L(241, 33), L(242, 34), L(243, 35), L(244, 36),
2749 L(245, 37), L(246, 38), L(247, 39), L(248, 40), L(249, 41),
2750 L(250, 42), L(251, 43), L(252, 44), L(253, 45), L(254, 46),
2751 L(255, 47), LW(256, 48), LW(257, 49), LW(258, 50), LW(259, 51),
2752 LW(260, 0), LW(261, 1), LW(262, 2), LW(263, 3), LW(264, 4),
2753 LW(265, 5), LW(266, 6), LW(267, 7), LW(268, 8), LW(269, 9),
2754 LW(270, 10), LW(271, 11), LW(272, 12), LW(273, 13), LW(274, 14),
2755 LW(275, 15), LW(276, 16), LW(277, 17), LW(278, 18), LW(279, 19),
2756 LW(280, 20), LW(281, 21), LW(282, 22), LW(283, 23), LW(284, 24),
2757 LW(285, 25), LW(286, 26), LW(287, 27), LW(288, 28), LW(289, 29),
2758 LW(290, 30), LW(291, 31), LW(292, 32), LW(293, 33), LW(294, 34),
2759 LW(295, 35), LW(296, 36), LW(297, 37), LW(298, 38), LW(299, 39),
2760 LW(300, 40), LW(301, 41), LW(302, 42), LW(303, 43), LW(304, 44),
2761 LW(305, 45), LW(306, 46), LW(307, 47), LW(308, 48), LW(309, 49),
2762 LW(310, 50), LW(311, 51),
2763 #undef LW
2764 #undef L
2765 B(LdaZero), //
2766 B(Star), R(8), //
2767 B(LdaSmi8), U8(3), //
2768 B(TestLessThan), R(8), //
2769 B(JumpIfFalseConstantWide), U16(313), //
2770 B(LdaSmi8), U8(1), //
2771 B(TestEqual), R(8), //
2772 B(JumpIfFalseConstantWide), U16(312), //
2773 B(JumpConstantWide), U16(314), //
2774 B(LdaSmi8), U8(2), //
2775 B(TestEqual), R(8), //
2776 B(JumpIfFalseConstantWide), U16(312), //
2777 B(JumpConstantWide), U16(314), //
2778 B(Ldar), R(8), //
2779 B(ToNumber), //
2780 B(Star), R(52), //
2781 B(Inc), //
2782 B(Star), R(8), //
2783 B(Jump), U8(-35), //
2784 B(LdaSmi8), U8(3), //
2785 B(Return) //
2786 },
2787 315,
2788 {
2789 #define S(x) CcTest::i_isolate()->factory()->NewStringFromAsciiChecked(x)
2790 #define N(x) CcTest::i_isolate()->factory()->NewNumberFromInt(x)
2791 S("a0"), S("b0"), S("c0"), S("d0"), S("e0"), S("f0"), S("g0"),
2792 S("h0"), S("i0"), S("j0"), S("k0"), S("l0"), S("m0"), S("n0"),
2793 S("o0"), S("p0"), S("q0"), S("r0"), S("s0"), S("t0"), S("u0"),
2794 S("v0"), S("w0"), S("x0"), S("y0"), S("z0"), S("A0"), S("B0"),
2795 S("C0"), S("D0"), S("E0"), S("F0"), S("G0"), S("H0"), S("I0"),
2796 S("J0"), S("K0"), S("L0"), S("M0"), S("N0"), S("O0"), S("P0"),
2797 S("Q0"), S("R0"), S("S0"), S("T0"), S("U0"), S("V0"), S("W0"),
2798 S("X0"), S("Y0"), S("Z0"), S("a1"), S("b1"), S("c1"), S("d1"),
2799 S("e1"), S("f1"), S("g1"), S("h1"), S("i1"), S("j1"), S("k1"),
2800 S("l1"), S("m1"), S("n1"), S("o1"), S("p1"), S("q1"), S("r1"),
2801 S("s1"), S("t1"), S("u1"), S("v1"), S("w1"), S("x1"), S("y1"),
2802 S("z1"), S("A1"), S("B1"), S("C1"), S("D1"), S("E1"), S("F1"),
2803 S("G1"), S("H1"), S("I1"), S("J1"), S("K1"), S("L1"), S("M1"),
2804 S("N1"), S("O1"), S("P1"), S("Q1"), S("R1"), S("S1"), S("T1"),
2805 S("U1"), S("V1"), S("W1"), S("X1"), S("Y1"), S("Z1"), S("a2"),
2806 S("b2"), S("c2"), S("d2"), S("e2"), S("f2"), S("g2"), S("h2"),
2807 S("i2"), S("j2"), S("k2"), S("l2"), S("m2"), S("n2"), S("o2"),
2808 S("p2"), S("q2"), S("r2"), S("s2"), S("t2"), S("u2"), S("v2"),
2809 S("w2"), S("x2"), S("y2"), S("z2"), S("A2"), S("B2"), S("C2"),
2810 S("D2"), S("E2"), S("F2"), S("G2"), S("H2"), S("I2"), S("J2"),
2811 S("K2"), S("L2"), S("M2"), S("N2"), S("O2"), S("P2"), S("Q2"),
2812 S("R2"), S("S2"), S("T2"), S("U2"), S("V2"), S("W2"), S("X2"),
2813 S("Y2"), S("Z2"), S("a3"), S("b3"), S("c3"), S("d3"), S("e3"),
2814 S("f3"), S("g3"), S("h3"), S("i3"), S("j3"), S("k3"), S("l3"),
2815 S("m3"), S("n3"), S("o3"), S("p3"), S("q3"), S("r3"), S("s3"),
2816 S("t3"), S("u3"), S("v3"), S("w3"), S("x3"), S("y3"), S("z3"),
2817 S("A3"), S("B3"), S("C3"), S("D3"), S("E3"), S("F3"), S("G3"),
2818 S("H3"), S("I3"), S("J3"), S("K3"), S("L3"), S("M3"), S("N3"),
2819 S("O3"), S("P3"), S("Q3"), S("R3"), S("S3"), S("T3"), S("U3"),
2820 S("V3"), S("W3"), S("X3"), S("Y3"), S("Z3"), S("a4"), S("b4"),
2821 S("c4"), S("d4"), S("e4"), S("f4"), S("g4"), S("h4"), S("i4"),
2822 S("j4"), S("k4"), S("l4"), S("m4"), S("n4"), S("o4"), S("p4"),
2823 S("q4"), S("r4"), S("s4"), S("t4"), S("u4"), S("v4"), S("w4"),
2824 S("x4"), S("y4"), S("z4"), S("A4"), S("B4"), S("C4"), S("D4"),
2825 S("E4"), S("F4"), S("G4"), S("H4"), S("I4"), S("J4"), S("K4"),
2826 S("L4"), S("M4"), S("N4"), S("O4"), S("P4"), S("Q4"), S("R4"),
2827 S("S4"), S("T4"), S("U4"), S("V4"), S("W4"), S("X4"), S("Y4"),
2828 S("Z4"), S("a5"), S("b5"), S("c5"), S("d5"), S("e5"), S("f5"),
2829 S("g5"), S("h5"), S("i5"), S("j5"), S("k5"), S("l5"), S("m5"),
2830 S("n5"), S("o5"), S("p5"), S("q5"), S("r5"), S("s5"), S("t5"),
2831 S("u5"), S("v5"), S("w5"), S("x5"), S("y5"), S("z5"), S("A5"),
2832 S("B5"), S("C5"), S("D5"), S("E5"), S("F5"), S("G5"), S("H5"),
2833 S("I5"), S("J5"), S("K5"), S("L5"), S("M5"), S("N5"), S("O5"),
2834 S("P5"), S("Q5"), S("R5"), S("S5"), S("T5"), S("U5"), S("V5"),
2835 S("W5"), S("X5"), S("Y5"), S("Z5"), N(6), N(33), N(13),
2836 #undef N
2837 #undef S
2838 }}};
2839
2840 for (size_t i = 0; i < arraysize(snippets); i++) {
2841 Handle<BytecodeArray> bytecode_array =
2842 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet);
2843 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
2844 }
2845 }
2846
2847
2633 TEST(UnaryOperators) { 2848 TEST(UnaryOperators) {
2634 InitializedHandleScope handle_scope; 2849 InitializedHandleScope handle_scope;
2635 BytecodeGeneratorHelper helper; 2850 BytecodeGeneratorHelper helper;
2636 2851
2637 ExpectedSnippet<int> snippets[] = { 2852 ExpectedSnippet<int> snippets[] = {
2638 {"var x = 0;" 2853 {"var x = 0;"
2639 "while (x != 10) {" 2854 "while (x != 10) {"
2640 " x = x + 10;" 2855 " x = x + 10;"
2641 "}" 2856 "}"
2642 "return x;", 2857 "return x;",
(...skipping 3250 matching lines...) Expand 10 before | Expand all | Expand 10 after
5893 std::string(function_epilogue); 6108 std::string(function_epilogue);
5894 Handle<BytecodeArray> bytecode_array = 6109 Handle<BytecodeArray> bytecode_array =
5895 helper.MakeBytecode(script.c_str(), "t", "f"); 6110 helper.MakeBytecode(script.c_str(), "t", "f");
5896 CheckBytecodeArrayEqual(snippets[i], bytecode_array); 6111 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
5897 } 6112 }
5898 } 6113 }
5899 6114
5900 } // namespace interpreter 6115 } // namespace interpreter
5901 } // namespace internal 6116 } // namespace internal
5902 } // namespace v8 6117 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698