@@ -90,7 +90,7 @@ TEST(analysis, jump1)
9090 const auto code = jump (add (4 , 2 )) + OP_JUMPDEST + mstore (0 , 3 ) + ret (0 , 0x20 ) + jump (6 );
9191 const auto analysis = analyze (rev, &code[0 ], code.size ());
9292
93- ASSERT_EQ (analysis.blocks .size (), 3 );
93+ ASSERT_EQ (analysis.blocks .size (), 4 );
9494 ASSERT_EQ (analysis.jumpdest_offsets .size (), 1 );
9595 ASSERT_EQ (analysis.jumpdest_targets .size (), 1 );
9696 EXPECT_EQ (analysis.jumpdest_offsets [0 ], 6 );
@@ -105,9 +105,10 @@ TEST(analysis, empty)
105105 bytes code;
106106 auto analysis = evmone::analyze (rev, &code[0 ], code.size ());
107107
108- EXPECT_EQ (analysis.blocks .size (), 0 );
109- ASSERT_EQ (analysis.instrs .size (), 1 );
110- EXPECT_EQ (analysis.instrs [0 ].fn , op_table[OP_STOP]);
108+ EXPECT_EQ (analysis.blocks .size (), 1 );
109+ ASSERT_EQ (analysis.instrs .size (), 2 );
110+ EXPECT_EQ (analysis.instrs [0 ].fn , op_table[OPX_BEGINBLOCK]);
111+ EXPECT_EQ (analysis.instrs [1 ].fn , op_table[OP_STOP]);
111112}
112113
113114TEST (analysis, only_jumpdest)
@@ -127,11 +128,12 @@ TEST(analysis, jumpi_at_the_end)
127128 const auto code = bytecode{OP_JUMPI};
128129 auto analysis = evmone::analyze (rev, &code[0 ], code.size ());
129130
130- EXPECT_EQ (analysis.blocks .size (), 1 );
131- ASSERT_EQ (analysis.instrs .size (), 3 );
131+ EXPECT_EQ (analysis.blocks .size (), 2 );
132+ ASSERT_EQ (analysis.instrs .size (), 4 );
132133 EXPECT_EQ (analysis.instrs [0 ].fn , op_table[OPX_BEGINBLOCK]);
133134 EXPECT_EQ (analysis.instrs [1 ].fn , op_table[OP_JUMPI]);
134- EXPECT_EQ (analysis.instrs [2 ].fn , op_table[OP_STOP]);
135+ EXPECT_EQ (analysis.instrs [2 ].fn , op_table[OPX_BEGINBLOCK]);
136+ EXPECT_EQ (analysis.instrs [3 ].fn , op_table[OP_STOP]);
135137}
136138
137139TEST (analysis, terminated_last_block)
@@ -141,19 +143,21 @@ TEST(analysis, terminated_last_block)
141143 const auto code = ret (0 , 0 );
142144 auto analysis = evmone::analyze (rev, &code[0 ], code.size ());
143145
144- EXPECT_EQ (analysis.blocks .size (), 1 );
145- ASSERT_EQ (analysis.instrs .size (), 4 );
146+ EXPECT_EQ (analysis.blocks .size (), 2 );
147+ ASSERT_EQ (analysis.instrs .size (), 6 );
146148 EXPECT_EQ (analysis.instrs [0 ].fn , op_table[OPX_BEGINBLOCK]);
147149 EXPECT_EQ (analysis.instrs [3 ].fn , op_table[OP_RETURN]);
150+ EXPECT_EQ (analysis.instrs [4 ].fn , op_table[OPX_BEGINBLOCK]);
151+ EXPECT_EQ (analysis.instrs [5 ].fn , op_table[OP_STOP]);
148152}
149153
150154TEST (analysis, jumpdests_groups)
151155{
152156 const auto code = 3 * OP_JUMPDEST + push (1 ) + 3 * OP_JUMPDEST + push (2 ) + OP_JUMPI;
153157 auto analysis = evmone::analyze (rev, &code[0 ], code.size ());
154158
155- EXPECT_EQ (analysis.blocks .size (), 6 );
156- ASSERT_EQ (analysis.instrs .size (), 10 );
159+ EXPECT_EQ (analysis.blocks .size (), 7 );
160+ ASSERT_EQ (analysis.instrs .size (), 11 );
157161 EXPECT_EQ (analysis.instrs [0 ].fn , op_table[OP_JUMPDEST]);
158162 EXPECT_EQ (analysis.instrs [1 ].fn , op_table[OP_JUMPDEST]);
159163 EXPECT_EQ (analysis.instrs [2 ].fn , op_table[OP_JUMPDEST]);
@@ -163,7 +167,8 @@ TEST(analysis, jumpdests_groups)
163167 EXPECT_EQ (analysis.instrs [6 ].fn , op_table[OP_JUMPDEST]);
164168 EXPECT_EQ (analysis.instrs [7 ].fn , op_table[OP_PUSH1]);
165169 EXPECT_EQ (analysis.instrs [8 ].fn , op_table[OP_JUMPI]);
166- EXPECT_EQ (analysis.instrs [9 ].fn , op_table[OP_STOP]);
170+ EXPECT_EQ (analysis.instrs [9 ].fn , op_table[OPX_BEGINBLOCK]);
171+ EXPECT_EQ (analysis.instrs [10 ].fn , op_table[OP_STOP]);
167172
168173
169174 ASSERT_EQ (analysis.jumpdest_offsets .size (), 6 );
0 commit comments