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

Side by Side Diff: test/cctest/interpreter/test-bytecode-generator.cc

Issue 1678903003: [interpreter] Re-enable test-interpreter/ClassDeclarations. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 10 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 8992 matching lines...) Expand 10 before | Expand all | Expand 10 after
9003 }; 9003 };
9004 // clang-format on 9004 // clang-format on
9005 9005
9006 Handle<BytecodeArray> bytecode_array = 9006 Handle<BytecodeArray> bytecode_array =
9007 helper.MakeBytecodeForFunctionBody(snippet.code_snippet); 9007 helper.MakeBytecodeForFunctionBody(snippet.code_snippet);
9008 CheckBytecodeArrayEqual(snippet, bytecode_array); 9008 CheckBytecodeArrayEqual(snippet, bytecode_array);
9009 } 9009 }
9010 9010
9011 // TODO(rmcilroy): Update expectations after switch to 9011 // TODO(rmcilroy): Update expectations after switch to
9012 // Runtime::kDefineDataPropertyInLiteral. 9012 // Runtime::kDefineDataPropertyInLiteral.
9013 DISABLED_TEST(ClassDeclarations) { 9013 TEST(ClassDeclarations) {
9014 InitializedHandleScope handle_scope; 9014 InitializedHandleScope handle_scope;
9015 BytecodeGeneratorHelper helper; 9015 BytecodeGeneratorHelper helper;
9016 9016
9017 int closure = Register::function_closure().index(); 9017 int closure = Register::function_closure().index();
9018 int context = Register::current_context().index(); 9018 int context = Register::current_context().index();
9019 9019
9020 // clang-format off 9020 // clang-format off
9021 ExpectedSnippet<InstanceType, 12> snippets[] = { 9021 ExpectedSnippet<InstanceType, 12> snippets[] = {
9022 {"class Person {\n" 9022 {"class Person {\n"
9023 " constructor(name) { this.name = name; }\n" 9023 " constructor(name) { this.name = name; }\n"
9024 " speak() { console.log(this.name + ' is speaking.'); }\n" 9024 " speak() { console.log(this.name + ' is speaking.'); }\n"
9025 "}\n", 9025 "}\n",
9026 8 * kPointerSize, 9026 9 * kPointerSize,
9027 1, 9027 1,
9028 61, 9028 71,
9029 { 9029 {
9030 B(LdaTheHole), // 9030 B(LdaTheHole), //
9031 B(Star), R(1), // 9031 B(Star), R(1), //
9032 B(StackCheck), // 9032 B(StackCheck), //
9033 B(LdaTheHole), // 9033 B(LdaTheHole), //
9034 B(Star), R(0), // 9034 B(Star), R(0), //
9035 B(LdaTheHole), // 9035 B(LdaTheHole), //
9036 B(Star), R(2), // 9036 B(Star), R(2), //
9037 B(CreateClosure), U8(0), U8(0), // 9037 B(CreateClosure), U8(0), U8(0), //
9038 B(Star), R(3), // 9038 B(Star), R(3), //
9039 B(LdaSmi8), U8(15), // 9039 B(LdaSmi8), U8(15), //
9040 B(Star), R(4), // 9040 B(Star), R(4), //
9041 B(LdaConstant), U8(1), // 9041 B(LdaConstant), U8(1), //
9042 B(Star), R(5), // 9042 B(Star), R(5), //
9043 B(CallRuntime), U16(Runtime::kDefineClass), R(2), U8(4), // 9043 B(CallRuntime), U16(Runtime::kDefineClass), R(2), U8(4), //
9044 B(Star), R(2), // 9044 B(Star), R(2), //
9045 B(LoadICSloppy), // 9045 B(LoadICSloppy), R(2), U8(2), U8(1), //
9046 B(Star), R(3), // 9046 B(Star), R(3), //
9047 B(Mov), R(3), R(4), // 9047 B(Mov), R(3), R(4), //
9048 B(LdaConstant), U8(2), // 9048 B(LdaConstant), U8(3), //
9049 B(Star), R(5), // 9049 B(Star), R(5), //
9050 B(CreateClosure), U8(3), U8(0), // 9050 B(CreateClosure), U8(4), U8(0), //
9051 B(Star), R(6), // 9051 B(Star), R(6), //
9052 B(CallRuntime), U16(Runtime::kDefineDataPropertyInLiteral), R(4), U8(3), 9052 B(LdaSmi8), U8(2), //
9053 B(Star), R(7), //
9054 B(LdaZero), //
9055 B(Star), R(8), //
9056 B(CallRuntime), U16(Runtime::kDefineDataPropertyInLiteral), R(4), U8(5),
9053 B(CallRuntime), U16(Runtime::kFinalizeClassDefinition), R(2), U8(2), // 9057 B(CallRuntime), U16(Runtime::kFinalizeClassDefinition), R(2), U8(2), //
9054 B(Star), R(0), // 9058 B(Star), R(0), //
9055 B(Star), R(1), // 9059 B(Star), R(1), //
9056 B(LdaUndefined), // 9060 B(LdaUndefined), //
9057 B(Return) // 9061 B(Return) //
9058 }, 9062 },
9059 4, 9063 5,
9060 { InstanceType::SHARED_FUNCTION_INFO_TYPE, kInstanceTypeDontCare, 9064 { InstanceType::SHARED_FUNCTION_INFO_TYPE, kInstanceTypeDontCare,
9061 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE, 9065 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
9066 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
9062 InstanceType::SHARED_FUNCTION_INFO_TYPE}}, 9067 InstanceType::SHARED_FUNCTION_INFO_TYPE}},
9063 {"class person {\n" 9068 {"class person {\n"
9064 " constructor(name) { this.name = name; }\n" 9069 " constructor(name) { this.name = name; }\n"
9065 " speak() { console.log(this.name + ' is speaking.'); }\n" 9070 " speak() { console.log(this.name + ' is speaking.'); }\n"
9066 "}\n", 9071 "}\n",
9067 8 * kPointerSize, 9072 9 * kPointerSize,
9068 1, 9073 1,
9069 61, 9074 71,
9070 { 9075 {
9071 B(LdaTheHole), // 9076 B(LdaTheHole), //
9072 B(Star), R(1), // 9077 B(Star), R(1), //
9073 B(StackCheck), // 9078 B(StackCheck), //
9074 B(LdaTheHole), // 9079 B(LdaTheHole), //
9075 B(Star), R(0), // 9080 B(Star), R(0), //
9076 B(LdaTheHole), // 9081 B(LdaTheHole), //
9077 B(Star), R(2), // 9082 B(Star), R(2), //
9078 B(CreateClosure), U8(0), U8(0), // 9083 B(CreateClosure), U8(0), U8(0), //
9079 B(Star), R(3), // 9084 B(Star), R(3), //
9080 B(LdaSmi8), U8(15), // 9085 B(LdaSmi8), U8(15), //
9081 B(Star), R(4), // 9086 B(Star), R(4), //
9082 B(LdaConstant), U8(1), // 9087 B(LdaConstant), U8(1), //
9083 B(Star), R(5), // 9088 B(Star), R(5), //
9084 B(CallRuntime), U16(Runtime::kDefineClass), R(2), U8(4), // 9089 B(CallRuntime), U16(Runtime::kDefineClass), R(2), U8(4), //
9085 B(Star), R(2), // 9090 B(Star), R(2), //
9086 B(LoadICSloppy), // 9091 B(LoadICSloppy), R(2), U8(2), U8(1), //
9087 B(Star), R(3), // 9092 B(Star), R(3), //
9088 B(Mov), R(3), R(4), // 9093 B(Mov), R(3), R(4), //
9089 B(LdaConstant), U8(2), // 9094 B(LdaConstant), U8(3), //
9090 B(Star), R(5), // 9095 B(Star), R(5), //
9091 B(CreateClosure), U8(3), U8(0), // 9096 B(CreateClosure), U8(4), U8(0), //
9092 B(Star), R(6), // 9097 B(Star), R(6), //
9093 B(CallRuntime), U16(Runtime::kDefineDataPropertyInLiteral), R(4), U8(3), 9098 B(LdaSmi8), U8(2), //
9099 B(Star), R(7), //
9100 B(LdaZero), //
9101 B(Star), R(8), //
9102 B(CallRuntime), U16(Runtime::kDefineDataPropertyInLiteral), R(4), U8(5),
9094 B(CallRuntime), U16(Runtime::kFinalizeClassDefinition), R(2), U8(2), // 9103 B(CallRuntime), U16(Runtime::kFinalizeClassDefinition), R(2), U8(2), //
9095 B(Star), R(0), // 9104 B(Star), R(0), //
9096 B(Star), R(1), // 9105 B(Star), R(1), //
9097 B(LdaUndefined), // 9106 B(LdaUndefined), //
9098 B(Return) // 9107 B(Return) //
9099 }, 9108 },
9100 4, 9109 5,
9101 { InstanceType::SHARED_FUNCTION_INFO_TYPE, kInstanceTypeDontCare, 9110 { InstanceType::SHARED_FUNCTION_INFO_TYPE, kInstanceTypeDontCare,
9102 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE, 9111 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
9112 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
9103 InstanceType::SHARED_FUNCTION_INFO_TYPE}}, 9113 InstanceType::SHARED_FUNCTION_INFO_TYPE}},
9104 {"var n0 = 'a';" 9114 {"var n0 = 'a';"
9105 "var n1 = 'b';" 9115 "var n1 = 'b';"
9106 "class N {\n" 9116 "class N {\n"
9107 " [n0]() { return n0; }\n" 9117 " [n0]() { return n0; }\n"
9108 " static [n1]() { return n1; }\n" 9118 " static [n1]() { return n1; }\n"
9109 "}\n", 9119 "}\n",
9110 9 * kPointerSize, 9120 10 * kPointerSize,
9111 1, 9121 1,
9112 110, 9122 125,
9113 { 9123 {
9114 B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), // 9124 B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), //
9115 /* */ U8(1), // 9125 /* */ U8(1), //
9116 B(PushContext), R(2), // 9126 B(PushContext), R(2), //
9117 B(LdaTheHole), // 9127 B(LdaTheHole), //
9118 B(Star), R(1), // 9128 B(Star), R(1), //
9119 B(StackCheck), // 9129 B(StackCheck), //
9120 B(LdaConstant), U8(0), // 9130 B(LdaConstant), U8(0), //
9121 B(StaContextSlot), R(context), U8(4), // 9131 B(StaContextSlot), R(context), U8(4), //
9122 B(LdaConstant), U8(1), // 9132 B(LdaConstant), U8(1), //
9123 B(StaContextSlot), R(context), U8(5), // 9133 B(StaContextSlot), R(context), U8(5), //
9124 B(LdaTheHole), // 9134 B(LdaTheHole), //
9125 B(Star), R(0), // 9135 B(Star), R(0), //
9126 B(LdaTheHole), // 9136 B(LdaTheHole), //
9127 B(Star), R(3), // 9137 B(Star), R(3), //
9128 B(CreateClosure), U8(2), U8(0), // 9138 B(CreateClosure), U8(2), U8(0), //
9129 B(Star), R(4), // 9139 B(Star), R(4), //
9130 B(LdaSmi8), U8(41), // 9140 B(LdaSmi8), U8(41), //
9131 B(Star), R(5), // 9141 B(Star), R(5), //
9132 B(LdaSmi8), U8(107), // 9142 B(LdaSmi8), U8(107), //
9133 B(Star), R(6), // 9143 B(Star), R(6), //
9134 B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(4), // 9144 B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(4), //
9135 B(Star), R(3), // 9145 B(Star), R(3), //
9136 B(LoadICSloppy), // 9146 B(LoadICSloppy), R(3), U8(3), U8(1), //
9137 B(Star), R(4), // 9147 B(Star), R(4), //
9138 B(Mov), R(4), R(5), // 9148 B(Mov), R(4), R(5), //
9139 B(LdaContextSlot), R(context), U8(4), // 9149 B(LdaContextSlot), R(context), U8(4), //
9140 B(ToName), // 9150 B(ToName), //
9141 B(Star), R(6), // 9151 B(Star), R(6), //
9142 B(CreateClosure), U8(3), U8(0), // 9152 B(CreateClosure), U8(4), U8(0), //
9143 B(Star), R(7), // 9153 B(Star), R(7), //
9144 B(CallRuntime), U16(Runtime::kDefineDataPropertyInLiteral), R(5), U8(3), 9154 B(LdaSmi8), U8(2), //
9155 B(Star), R(8), //
9156 B(LdaSmi8), U8(1), //
9157 B(Star), R(9), //
9158 B(CallRuntime), U16(Runtime::kDefineDataPropertyInLiteral), R(5), U8(5),
9145 B(Mov), R(3), R(5), // 9159 B(Mov), R(3), R(5), //
9146 B(LdaContextSlot), R(context), U8(5), // 9160 B(LdaContextSlot), R(context), U8(5), //
9147 B(ToName), // 9161 B(ToName), //
9148 B(Star), R(6), // 9162 B(Star), R(6), //
9149 B(LdaConstant), U8(4), // 9163 B(LdaConstant), U8(3), //
9150 B(TestEqualStrict), R(6), // 9164 B(TestEqualStrict), R(6), //
9151 B(JumpIfFalse), U8(7), // 9165 B(JumpIfFalse), U8(7), //
9152 B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), // 9166 B(CallRuntime), U16(Runtime::kThrowStaticPrototypeError), //
9153 /* */ R(0), U8(0), // 9167 /* */ R(0), U8(0), //
9154 B(CreateClosure), U8(5), U8(0), // 9168 B(CreateClosure), U8(5), U8(0), //
9155 B(Star), R(7), // 9169 B(Star), R(7), //
9156 B(CallRuntime), U16(Runtime::kDefineDataPropertyInLiteral), R(5), U8(3), 9170 B(LdaSmi8), U8(1), //
9171 B(Star), R(9), //
9172 B(CallRuntime), U16(Runtime::kDefineDataPropertyInLiteral), R(5), U8(5),
9157 B(CallRuntime), U16(Runtime::kFinalizeClassDefinition), R(3), U8(2), // 9173 B(CallRuntime), U16(Runtime::kFinalizeClassDefinition), R(3), U8(2), //
9158 B(Star), R(0), // 9174 B(Star), R(0), //
9159 B(Star), R(1), // 9175 B(Star), R(1), //
9160 B(LdaUndefined), // 9176 B(LdaUndefined), //
9161 B(Return), // 9177 B(Return), //
9162 }, 9178 },
9163 6, 9179 6,
9164 { InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE, 9180 { InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
9165 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE, 9181 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
9166 InstanceType::SHARED_FUNCTION_INFO_TYPE, 9182 InstanceType::SHARED_FUNCTION_INFO_TYPE,
9183 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
9167 InstanceType::SHARED_FUNCTION_INFO_TYPE, 9184 InstanceType::SHARED_FUNCTION_INFO_TYPE,
9168 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
9169 InstanceType::SHARED_FUNCTION_INFO_TYPE}}, 9185 InstanceType::SHARED_FUNCTION_INFO_TYPE}},
9170 {"var count = 0;\n" 9186 {"var count = 0;\n"
9171 "class C { constructor() { count++; }}\n" 9187 "class C { constructor() { count++; }}\n"
9172 "return new C();\n", 9188 "return new C();\n",
9173 9 * kPointerSize, 9189 10 * kPointerSize,
9174 1, 9190 1,
9175 60, 9191 74,
9176 { 9192 {
9177 B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), U8(1), // 9193 B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), U8(1), //
9178 B(PushContext), R(2), // 9194 B(PushContext), R(2), //
9179 B(LdaTheHole), // 9195 B(LdaTheHole), //
9180 B(Star), R(1), // 9196 B(Star), R(1), //
9181 B(StackCheck), // 9197 B(StackCheck), //
9182 B(LdaZero), // 9198 B(LdaZero), //
9183 B(StaContextSlot), R(context), U8(4), // 9199 B(StaContextSlot), R(context), U8(4), //
9184 B(LdaTheHole), // 9200 B(LdaTheHole), //
9185 B(Star), R(0), // 9201 B(Star), R(0), //
9186 B(LdaTheHole), // 9202 B(LdaTheHole), //
9187 B(Star), R(3), // 9203 B(Star), R(3), //
9188 B(CreateClosure), U8(0), U8(0), // 9204 B(CreateClosure), U8(0), U8(0), //
9189 B(Star), R(4), // 9205 B(Star), R(4), //
9190 B(LdaSmi8), U8(30), // 9206 B(LdaSmi8), U8(30), //
9191 B(Star), R(5), // 9207 B(Star), R(5), //
9192 B(LdaSmi8), U8(67), // 9208 B(LdaSmi8), U8(67), //
9193 B(Star), R(6), // 9209 B(Star), R(6), //
9194 B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(4), // 9210 B(CallRuntime), U16(Runtime::kDefineClass), R(3), U8(4), //
9195 B(Star), R(3), // 9211 B(Star), R(3), //
9196 B(LoadICSloppy), // 9212 B(LoadICSloppy), R(3), U8(1), U8(1), //
9197 B(Star), R(4), // 9213 B(Star), R(4), //
9198 B(CallRuntime), U16(Runtime::kFinalizeClassDefinition), R(3), U8(2), // 9214 B(CallRuntime), U16(Runtime::kFinalizeClassDefinition), R(3), U8(2), //
9199 B(Star), R(0), // 9215 B(Star), R(0), //
9200 B(Star), R(1), // 9216 B(Star), R(1), //
9217 B(JumpIfNotHole), U8(11), //
9218 B(LdaConstant), U8(2), //
9219 B(Star), R(4), //
9220 B(CallRuntime), U16(Runtime::kThrowReferenceError), R(4), U8(1), //
9201 B(Star), R(3), // 9221 B(Star), R(3), //
9202 B(New), R(3), R(0), U8(0), // 9222 B(New), R(3), R(0), U8(0), //
9203 B(Return), // 9223 B(Return), //
9204 }, 9224 },
9205 1, 9225 3,
9206 { InstanceType::SHARED_FUNCTION_INFO_TYPE}}, 9226 { InstanceType::SHARED_FUNCTION_INFO_TYPE,
9227 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE,
9228 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}},
9207 }; 9229 };
9208 // clang-format on 9230 // clang-format on
9209 9231
9210 for (size_t i = 0; i < arraysize(snippets); i++) { 9232 for (size_t i = 0; i < arraysize(snippets); i++) {
9211 Handle<BytecodeArray> bytecode_array = 9233 Handle<BytecodeArray> bytecode_array =
9212 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); 9234 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet);
9213 CheckBytecodeArrayEqual(snippets[i], bytecode_array); 9235 CheckBytecodeArrayEqual(snippets[i], bytecode_array);
9214 } 9236 }
9215 } 9237 }
9216 9238
9217 } // namespace interpreter 9239 } // namespace interpreter
9218 } // namespace internal 9240 } // namespace internal
9219 } // namespace v8 9241 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698