OLD | NEW |
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 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 CHECK_EQ(CcTest::heap()->empty_fixed_array(), actual->constant_pool()); | 205 CHECK_EQ(CcTest::heap()->empty_fixed_array(), actual->constant_pool()); |
206 } else { | 206 } else { |
207 CHECK_EQ(expected.constant_count, actual->constant_pool()->length()); | 207 CHECK_EQ(expected.constant_count, actual->constant_pool()->length()); |
208 for (int i = 0; i < expected.constant_count; i++) { | 208 for (int i = 0; i < expected.constant_count; i++) { |
209 CheckConstant(expected.constants[i], actual->constant_pool()->get(i)); | 209 CheckConstant(expected.constants[i], actual->constant_pool()->get(i)); |
210 } | 210 } |
211 } | 211 } |
212 if (expected.handler_count == 0) { | 212 if (expected.handler_count == 0) { |
213 CHECK_EQ(CcTest::heap()->empty_fixed_array(), actual->handler_table()); | 213 CHECK_EQ(CcTest::heap()->empty_fixed_array(), actual->handler_table()); |
214 } else { | 214 } else { |
215 static const int kHTSize = 4; // see HandlerTable::kRangeEntrySize | |
216 static const int kHTStart = 0; // see HandlerTable::kRangeStartIndex | |
217 static const int kHTEnd = 1; // see HandlerTable::kRangeEndIndex | |
218 static const int kHTHandler = 2; // see HandlerTable::kRangeHandlerIndex | |
219 HandlerTable* table = HandlerTable::cast(actual->handler_table()); | 215 HandlerTable* table = HandlerTable::cast(actual->handler_table()); |
220 CHECK_EQ(expected.handler_count * kHTSize, table->length()); | 216 CHECK_EQ(expected.handler_count, table->NumberOfRangeEntries()); |
221 for (int i = 0; i < expected.handler_count; i++) { | 217 for (int i = 0; i < expected.handler_count; i++) { |
222 int start = Smi::cast(table->get(i * kHTSize + kHTStart))->value(); | 218 CHECK_EQ(expected.handlers[i].start, table->GetRangeStart(i)); |
223 int end = Smi::cast(table->get(i * kHTSize + kHTEnd))->value(); | 219 CHECK_EQ(expected.handlers[i].end, table->GetRangeEnd(i)); |
224 int handler = Smi::cast(table->get(i * kHTSize + kHTHandler))->value(); | 220 CHECK_EQ(expected.handlers[i].handler, table->GetRangeHandler(i)); |
225 CHECK_EQ(expected.handlers[i].start, start); | |
226 CHECK_EQ(expected.handlers[i].end, end); | |
227 CHECK_EQ(expected.handlers[i].handler, handler >> 1); | |
228 } | 221 } |
229 } | 222 } |
230 | 223 |
231 BytecodeArrayIterator iterator(actual); | 224 BytecodeArrayIterator iterator(actual); |
232 int i = 0; | 225 int i = 0; |
233 while (!iterator.done()) { | 226 while (!iterator.done()) { |
234 int bytecode_index = i++; | 227 int bytecode_index = i++; |
235 Bytecode bytecode = iterator.current_bytecode(); | 228 Bytecode bytecode = iterator.current_bytecode(); |
236 if (Bytecodes::ToByte(bytecode) != expected.bytecode[bytecode_index]) { | 229 if (Bytecodes::ToByte(bytecode) != expected.bytecode[bytecode_index]) { |
237 std::ostringstream stream; | 230 std::ostringstream stream; |
(...skipping 7328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7566 Handle<BytecodeArray> bytecode_array = | 7559 Handle<BytecodeArray> bytecode_array = |
7567 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); | 7560 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); |
7568 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 7561 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
7569 } | 7562 } |
7570 FLAG_harmony_do_expressions = old_flag; | 7563 FLAG_harmony_do_expressions = old_flag; |
7571 } | 7564 } |
7572 | 7565 |
7573 } // namespace interpreter | 7566 } // namespace interpreter |
7574 } // namespace internal | 7567 } // namespace internal |
7575 } // namespace v8 | 7568 } // namespace v8 |
OLD | NEW |