Chromium Code Reviews| Index: test/cctest/interpreter/test-bytecode-generator.cc |
| diff --git a/test/cctest/interpreter/test-bytecode-generator.cc b/test/cctest/interpreter/test-bytecode-generator.cc |
| index b8ee068f37507cededb3c7426bea41f9c86bfb2b..fb3843f220a1ea40d06c5d393a970577dd9ad654 100644 |
| --- a/test/cctest/interpreter/test-bytecode-generator.cc |
| +++ b/test/cctest/interpreter/test-bytecode-generator.cc |
| @@ -18,7 +18,7 @@ class BytecodeGeneratorHelper { |
| public: |
| const char* kFunctionName = "f"; |
| - const int kLastParamIndex = |
| + static const int kLastParamIndex = |
| -InterpreterFrameConstants::kLastParamFromRegisterPointer / kPointerSize; |
| BytecodeGeneratorHelper() { |
| @@ -469,7 +469,7 @@ TEST(PropertyLoads) { |
| {"name"}}}; |
| for (size_t i = 0; i < arraysize(snippets); i++) { |
| Handle<BytecodeArray> bytecode_array = |
| - helper.MakeBytecode(snippets[i].code_snippet, "f"); |
| + helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); |
| CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| } |
| } |
| @@ -571,7 +571,7 @@ TEST(PropertyStores) { |
| {"name"}}}; |
| for (size_t i = 0; i < arraysize(snippets); i++) { |
| Handle<BytecodeArray> bytecode_array = |
| - helper.MakeBytecode(snippets[i].code_snippet, "f"); |
| + helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); |
| CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| } |
| } |
| @@ -648,7 +648,7 @@ TEST(PropertyCall) { |
| {"func"}}}; |
| for (size_t i = 0; i < arraysize(snippets); i++) { |
| Handle<BytecodeArray> bytecode_array = |
| - helper.MakeBytecode(snippets[i].code_snippet, "f"); |
| + helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); |
| CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| } |
| } |
| @@ -678,7 +678,6 @@ TEST(LoadGlobal) { |
| for (size_t i = 0; i < arraysize(snippets); i++) { |
| Handle<BytecodeArray> bytecode_array = |
| helper.MakeBytecode(snippets[i].code_snippet, "f"); |
| - bytecode_array->Print(); |
| CheckBytecodeArrayEqual(snippets[i], bytecode_array, true); |
| } |
| } |
| @@ -734,7 +733,7 @@ TEST(IfConditions) { |
| Handle<Object> unused = helper.factory()->undefined_value(); |
| ExpectedSnippet<Handle<Object>> snippets[] = { |
| - {"function f() { if (0) { return 1; } else { return -1; } }", |
| + {"function f() { if (0) { return 1; } else { return -1; } } f()", |
| 0, |
| 1, |
| 14, |
| @@ -750,7 +749,7 @@ TEST(IfConditions) { |
| B(Return)}, // |
| 0, |
| {unused, unused, unused, unused}}, |
| - {"function f() { if ('lucky') { return 1; } else { return -1; } }", |
| + {"function f() { if ('lucky') { return 1; } else { return -1; } } f();", |
| 0, |
| 1, |
| 15, |
| @@ -765,9 +764,9 @@ TEST(IfConditions) { |
| B(LdaUndefined), // |
| B(Return)}, // |
| 1, |
| - {helper.factory()->NewStringFromStaticChars("lucky"), unused, |
| - unused, unused}}, |
| - {"function f() { if (false) { return 1; } else { return -1; } }", |
| + {helper.factory()->NewStringFromStaticChars("lucky"), unused, unused, |
| + unused}}, |
| + {"function f() { if (false) { return 1; } else { return -1; } } f();", |
| 0, |
| 1, |
| 13, |
| @@ -782,26 +781,28 @@ TEST(IfConditions) { |
| B(Return)}, // |
| 0, |
| {unused, unused, unused, unused}}, |
| - {"function f(a) { if (a <= 0) { return 200; } else { return -200; } }", |
| + {"function f(a) { if (a <= 0) { return 200; } else { return -200; } }" |
| + "f(99);", |
| kPointerSize, |
| 2, |
| 19, |
| - {B(Ldar), R(-5), // |
| - B(Star), R(0), // |
| - B(LdaZero), // |
| - B(TestLessThanEqual), R(0), // |
| - B(JumpIfFalse), U8(7), // |
| - B(LdaConstant), U8(0), // |
| - B(Return), // |
| - B(Jump), U8(5), // TODO(oth): Unreachable jump after return |
| - B(LdaConstant), U8(1), // |
| - B(Return), // |
| - B(LdaUndefined), // |
| - B(Return)}, // |
| + {B(Ldar), R(-5), // |
| + B(Star), R(0), // |
| + B(LdaZero), // |
| + B(TestLessThanOrEqual), R(0), // |
| + B(JumpIfFalse), U8(7), // |
| + B(LdaConstant), U8(0), // |
| + B(Return), // |
| + B(Jump), U8(5), // TODO(oth): Unreachable jump after return |
| + B(LdaConstant), U8(1), // |
| + B(Return), // |
| + B(LdaUndefined), // |
| + B(Return)}, // |
| 2, |
| {helper.factory()->NewNumberFromInt(200), |
| helper.factory()->NewNumberFromInt(-200), unused, unused}}, |
| - {"function f(a, b) { if (a in b) { return 200; } }", |
| + {"function f(a, b) { if (a in b) { return 200; } }" |
| + "f('prop', { prop: 'yes'});", |
| kPointerSize, |
| 3, |
| 17, |
| @@ -817,27 +818,11 @@ TEST(IfConditions) { |
| B(Return)}, // |
| 1, |
| {helper.factory()->NewNumberFromInt(200), unused, unused, unused}}, |
| - {"function f(a, b) { if (a instanceof b) { return 200; } }", |
| - kPointerSize, |
| - 3, |
| - 17, |
| - {B(Ldar), R(-6), // |
| - B(Star), R(0), // |
| - B(Ldar), R(-5), // |
| - B(TestInstanceOf), R(0), // |
| - B(JumpIfFalse), U8(7), // |
| - B(LdaConstant), U8(0), // |
| - B(Return), // |
| - B(Jump), U8(2), // TODO(oth): Unreachable jump after return |
| - B(LdaUndefined), // |
| - B(Return)}, // |
| - 1, |
| - {helper.factory()->NewNumberFromInt(200), unused, unused, unused}}, |
| {"function f(z) { var a = 0; var b = 0; if (a === 0.01) { " |
| #define X "b = a; a = b; " |
| X X X X X X X X X X X X X X X X X X X X X X X X |
| #undef X |
| - " return 200; } else { return -200; } }", |
| + " return 200; } else { return -200; } } f(0.001)", |
| 3 * kPointerSize, |
| 2, |
| 218, |
| @@ -865,11 +850,51 @@ TEST(IfConditions) { |
| {helper.factory()->NewHeapNumber(0.01), |
| helper.factory()->NewNumberFromInt(200), |
| helper.factory()->NewNumberFromInt(199), |
| - helper.factory()->NewNumberFromInt(-200)}}}; |
| + helper.factory()->NewNumberFromInt(-200)}}, |
| + {"function f(a, b) {\n" |
| + "if (a == b) { return 1; }\n" |
|
rmcilroy
2015/09/28 14:30:39
nit - indent by two spaces - i.e.:
" if (a..."
oth
2015/09/28 15:05:38
Done.
|
| + "if (a === b) { return 1; }\n" |
| + "if (a < b) { return 1; }\n" |
| + "if (a > b) { return 1; }\n" |
| + "if (a <= b) { return 1; }\n" |
| + "if (a >= b) { return 1; }\n" |
| + "if (a in b) { return 1; }\n" |
| + "if (a instanceof b) { return 1; }\n" |
| + "/* if (a != b) { return 1; } */" // TODO(oth) Ast visitor yields unary |
| + "/* if (a !== b) { return 1; } */" // NOT, rather than not-equals ops. |
| + "return 0;\n" |
| + "} f(1,1);", |
|
rmcilroy
2015/09/28 14:30:39
nit - space between "1, 1"
oth
2015/09/28 15:05:37
Done.
|
| + kPointerSize, |
| + 3, |
| + 122, |
| + { |
| +#define IF_CONDITION_RETURN(condition) \ |
| + B(Ldar), R(-6), \ |
| + B(Star), R(0), \ |
| + B(Ldar), R(-5), \ |
| + B(condition), R(0), \ |
| + B(JumpIfFalse), U8(7), \ |
| + B(LdaSmi8), U8(1), \ |
| + B(Return), \ |
| + B(Jump), U8(2), |
| + IF_CONDITION_RETURN(TestEqual) // |
| + IF_CONDITION_RETURN(TestEqualStrict) // |
| + IF_CONDITION_RETURN(TestLessThan) // |
| + IF_CONDITION_RETURN(TestGreaterThan) // |
| + IF_CONDITION_RETURN(TestLessThanOrEqual) // |
| + IF_CONDITION_RETURN(TestGreaterThanOrEqual) // |
| + IF_CONDITION_RETURN(TestIn) // |
| + IF_CONDITION_RETURN(TestInstanceOf) // |
| +#undef IF_CONDITION_RETURN |
| + B(LdaZero), // |
| + B(Return)}, // |
| + 0, |
| + {unused, unused, unused, unused}}, |
| + }; |
| for (size_t i = 0; i < arraysize(snippets); i++) { |
| Handle<BytecodeArray> bytecode_array = |
| - helper.MakeBytecodeForFunction(snippets[i].code_snippet); |
| + helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); |
| CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| } |
| } |