Chromium Code Reviews| Index: test/cctest/interpreter/test-source-positions.cc |
| diff --git a/test/cctest/interpreter/test-source-positions.cc b/test/cctest/interpreter/test-source-positions.cc |
| index d50bb62b2b31ca9c4de77d112dd27c0020695419..19be47fa8e141192d67258203045158ead5f4e60 100644 |
| --- a/test/cctest/interpreter/test-source-positions.cc |
| +++ b/test/cctest/interpreter/test-source-positions.cc |
| @@ -19,11 +19,12 @@ namespace interpreter { |
| // Flags enabling optimizations that change generated bytecode array. |
| // Format is <command-line flag> <flag name> <bit index> |
| -#define OPTIMIZATION_FLAGS(V) \ |
| - V(FLAG_ignition_reo, kUseReo, 0) \ |
| - V(FLAG_ignition_peephole, kUsePeephole, 1) \ |
| - V(FLAG_ignition_filter_expression_positions, \ |
| - kUseUseFilterExpressionPositions, 2) |
| +#define OPTIMIZATION_FLAGS(V) \ |
| + V(FLAG_ignition_reo, kUseReo, 0) \ |
| + V(FLAG_ignition_peephole, kUsePeephole, 1) \ |
| + V(FLAG_ignition_filter_expression_positions, kUseFilterExpressionPositions, \ |
| + 2) \ |
| + V(FLAG_ignition_deadcode, kUseDeadCode, 3) |
| #define DECLARE_BIT(_, Name, BitIndex) static const int Name = 1 << BitIndex; |
| OPTIMIZATION_FLAGS(DECLARE_BIT) |
| @@ -32,17 +33,22 @@ OPTIMIZATION_FLAGS(DECLARE_BIT) |
| // Test cases source positions are checked for. Please ensure all |
| // combinations of flags are present here. This is done manually |
| // because it provides easier to comprehend failure case for humans. |
| -#define TEST_CASES(V) \ |
| - V(UsingReo, kUseReo) \ |
| - V(UsingPeephole, kUsePeephole) \ |
| - V(UsingReoAndPeephole, kUseReo | kUsePeephole) \ |
| - V(UsingUseFilterExpressionPositions, kUseUseFilterExpressionPositions) \ |
| - V(UsingReoAndUseFilterExpressionPositions, \ |
| - kUseReo | kUseUseFilterExpressionPositions) \ |
| - V(UsingPeepholeAndUseFilterExpressionPositions, \ |
| - kUsePeephole | kUseUseFilterExpressionPositions) \ |
| - V(UsingAllOptimizations, \ |
| - kUseReo | kUsePeephole | kUseUseFilterExpressionPositions) |
| +#define TEST_CASES(V) \ |
| + V(UsingReo, kUseReo) \ |
| + V(UsingPeephole, kUsePeephole) \ |
| + V(UsingDeadCode, kUseDeadCode) \ |
| + V(UsingFilterExpressionPositions, kUseFilterExpressionPositions) \ |
| + V(UsingReoAndPeephole, kUseReo | kUsePeephole) \ |
| + V(UsingReoAndFilterExpressionPositions, \ |
| + kUseReo | kUseFilterExpressionPositions) \ |
| + V(UsingReoAndDeadCode, kUseReo | kUseDeadCode) \ |
| + V(UsingPeepholeAndFilterExpressionPositions, \ |
| + kUsePeephole | kUseFilterExpressionPositions) \ |
| + V(UsingPeepholeAndDeadCode, kUsePeephole | kUseDeadCode) \ |
| + V(UsingFilterExpressionPositionsAndDeadCode, \ |
| + kUseFilterExpressionPositions | kUseDeadCode) \ |
|
rmcilroy
2016/06/21 10:25:19
Since adding all the combinations quickly becomes
oth
2016/06/21 11:03:56
Okay here. I preferred using a counter to sweep th
|
| + V(UsingAllOptimizations, \ |
| + kUseReo | kUsePeephole | kUseFilterExpressionPositions | kUseDeadCode) |
| struct TestCaseData { |
| TestCaseData(const char* const script, |
| @@ -142,9 +148,7 @@ class OptimizedBytecodeSourcePositionTester final { |
| const char* function_body, |
| const char* function_decl_params, |
| const char* function_args); |
| - static std::string MakeFunctionName(int optimization_bitmap); |
| - static std::string MakeScript(const char* function_name, |
| - const char* function_body, |
| + static std::string MakeScript(const char* function_body, |
| const char* function_decl_params, |
| const char* function_args); |
| @@ -161,39 +165,30 @@ class OptimizedBytecodeSourcePositionTester final { |
| }; |
| // static |
| -std::string OptimizedBytecodeSourcePositionTester::MakeFunctionName( |
| - int optimization_bitmap) { |
| - std::ostringstream os; |
| - os << "test_function_" << optimization_bitmap; |
| - return os.str(); |
| -} |
| - |
| -// static |
| std::string OptimizedBytecodeSourcePositionTester::MakeScript( |
| - const char* function_name, const char* function_body, |
| - const char* function_decl_params, const char* function_args) { |
| + const char* function_body, const char* function_decl_params, |
| + const char* function_args) { |
| std::ostringstream os; |
| - os << "function " << function_name << "(" << function_decl_params << ") {"; |
| + os << "function test_function" |
| + << "(" << function_decl_params << ") {"; |
| os << function_body; |
| os << "}"; |
| - os << function_name << "(" << function_args << ");"; |
| + os << "test_function(" << function_args << ");"; |
| return os.str(); |
| } |
| Handle<BytecodeArray> OptimizedBytecodeSourcePositionTester::MakeBytecode( |
| int optimization_bitmap, const char* function_body, |
| const char* function_decl_params, const char* function_args) { |
| - std::string function_name = MakeFunctionName(optimization_bitmap); |
|
rmcilroy
2016/06/21 10:25:19
It turned out this was the issue with the source p
oth
2016/06/21 11:03:56
Ouch, mea culpa! Sorry!
|
| - std::string script = MakeScript(function_name.c_str(), function_body, |
| - function_decl_params, function_args); |
| + std::string script = |
| + MakeScript(function_body, function_decl_params, function_args); |
| SetOptimizationFlags(optimization_bitmap); |
| CompileRun(script.c_str()); |
| - Local<Function> api_function = |
| - Local<Function>::Cast(CcTest::global() |
| - ->Get(CcTest::isolate()->GetCurrentContext(), |
| - v8_str(function_name.c_str())) |
| - .ToLocalChecked()); |
| + Local<Function> api_function = Local<Function>::Cast( |
| + CcTest::global() |
| + ->Get(CcTest::isolate()->GetCurrentContext(), v8_str("test_function")) |
| + .ToLocalChecked()); |
| Handle<JSFunction> function = |
| Handle<JSFunction>::cast(v8::Utils::OpenHandle(*api_function)); |
| return handle(function->shared()->bytecode_array()); |