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

Unified Diff: test/cctest/interpreter/test-bytecode-generator.cc

Issue 1369123002: [Interpreter] Add interpreter support for compare ops and ToBoolean. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Compilation fix. Created 5 years, 3 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 side-by-side diff with in-line comments
Download patch
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..fa20534bc0cc3cbf2cd1d47ee9d323cff46ccf0c 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,7 +781,8 @@ 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,
@@ -801,7 +801,8 @@ TEST(IfConditions) {
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,
@@ -853,8 +838,7 @@ TEST(IfConditions) {
#define X B(Ldar), R(0), B(Star), R(1), B(Ldar), R(1), B(Star), R(0),
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
- B(LdaConstant),
- U8(1), //
+ B(LdaConstant), U8(1), //
B(Return), //
B(Jump), U8(5), // TODO(oth): Unreachable jump after return
B(LdaConstant), U8(3), //
@@ -865,11 +849,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"
+ "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);",
+ 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(TestLessThanEqual) //
+ IF_CONDITION_RETURN(TestGreaterThanEqual) //
+ 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);
}
}

Powered by Google App Engine
This is Rietveld 408576698