Chromium Code Reviews| 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 6210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6221 B(Return), // | 6221 B(Return), // |
| 6222 }, | 6222 }, |
| 6223 1, | 6223 1, |
| 6224 {"x"}}, | 6224 {"x"}}, |
| 6225 }; | 6225 }; |
| 6226 | 6226 |
| 6227 for (size_t i = 0; i < arraysize(snippets); i++) { | 6227 for (size_t i = 0; i < arraysize(snippets); i++) { |
| 6228 std::string script = std::string(function_prologue) + | 6228 std::string script = std::string(function_prologue) + |
| 6229 std::string(snippets[i].code_snippet) + | 6229 std::string(snippets[i].code_snippet) + |
| 6230 std::string(function_epilogue); | 6230 std::string(function_epilogue); |
| 6231 // TODO(mythria): use * as filter when function declarations are supported | |
| 6232 // inside eval. | |
| 6233 Handle<BytecodeArray> bytecode_array = | 6231 Handle<BytecodeArray> bytecode_array = |
| 6234 helper.MakeBytecode(script.c_str(), "t", "f"); | 6232 helper.MakeBytecode(script.c_str(), "*", "f"); |
| 6235 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 6233 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| 6236 } | 6234 } |
| 6237 } | 6235 } |
| 6238 | 6236 |
| 6239 | 6237 |
| 6240 TEST(LookupSlotWideInEval) { | 6238 TEST(LookupSlotWideInEval) { |
| 6241 InitializedHandleScope handle_scope; | 6239 InitializedHandleScope handle_scope; |
| 6242 BytecodeGeneratorHelper helper; | 6240 BytecodeGeneratorHelper helper; |
| 6243 | 6241 |
| 6244 const char* function_prologue = | 6242 const char* function_prologue = |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6318 }, | 6316 }, |
| 6319 257, | 6317 257, |
| 6320 {REPEAT_256(COMMA, InstanceType::HEAP_NUMBER_TYPE), | 6318 {REPEAT_256(COMMA, InstanceType::HEAP_NUMBER_TYPE), |
| 6321 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}}, | 6319 InstanceType::ONE_BYTE_INTERNALIZED_STRING_TYPE}}, |
| 6322 }; | 6320 }; |
| 6323 | 6321 |
| 6324 for (size_t i = 0; i < arraysize(snippets); i++) { | 6322 for (size_t i = 0; i < arraysize(snippets); i++) { |
| 6325 std::string script = std::string(function_prologue) + | 6323 std::string script = std::string(function_prologue) + |
| 6326 std::string(snippets[i].code_snippet) + | 6324 std::string(snippets[i].code_snippet) + |
| 6327 std::string(function_epilogue); | 6325 std::string(function_epilogue); |
| 6328 // TODO(mythria): use * as filter when function declarations are supported | |
| 6329 // inside eval. | |
| 6330 Handle<BytecodeArray> bytecode_array = | 6326 Handle<BytecodeArray> bytecode_array = |
| 6331 helper.MakeBytecode(script.c_str(), "t", "f"); | 6327 helper.MakeBytecode(script.c_str(), "*", "f"); |
| 6332 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 6328 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| 6333 } | 6329 } |
| 6334 } | 6330 } |
| 6335 | 6331 |
| 6336 | 6332 |
| 6333 TEST(LookupSlotVariableDecl) { | |
| 6334 InitializedHandleScope handle_scope; | |
| 6335 BytecodeGeneratorHelper helper; | |
|
rmcilroy
2016/01/14 11:21:12
no need for these variables (I thought the compile
mythria
2016/01/15 11:27:04
Done.
| |
| 6336 // TODO(mythria): tests for variable/function declaration in lookup slots. | |
| 6337 } | |
| 6338 | |
| 6339 | |
| 6337 TEST(DeleteLookupSlotInEval) { | 6340 TEST(DeleteLookupSlotInEval) { |
| 6338 InitializedHandleScope handle_scope; | 6341 InitializedHandleScope handle_scope; |
| 6339 BytecodeGeneratorHelper helper; | 6342 BytecodeGeneratorHelper helper; |
| 6340 | 6343 |
| 6341 const char* function_prologue = "var f;" | 6344 const char* function_prologue = "var f;" |
| 6342 "var x = 1;" | 6345 "var x = 1;" |
| 6343 "z = 10;" | 6346 "z = 10;" |
| 6344 "function f1() {" | 6347 "function f1() {" |
| 6345 " var y;" | 6348 " var y;" |
| 6346 " eval(\"function t() {"; | 6349 " eval(\"function t() {"; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6381 }, | 6384 }, |
| 6382 1, | 6385 1, |
| 6383 {"z"}}, | 6386 {"z"}}, |
| 6384 }; | 6387 }; |
| 6385 | 6388 |
| 6386 for (size_t i = 0; i < arraysize(snippets); i++) { | 6389 for (size_t i = 0; i < arraysize(snippets); i++) { |
| 6387 std::string script = std::string(function_prologue) + | 6390 std::string script = std::string(function_prologue) + |
| 6388 std::string(snippets[i].code_snippet) + | 6391 std::string(snippets[i].code_snippet) + |
| 6389 std::string(function_epilogue); | 6392 std::string(function_epilogue); |
| 6390 Handle<BytecodeArray> bytecode_array = | 6393 Handle<BytecodeArray> bytecode_array = |
| 6391 helper.MakeBytecode(script.c_str(), "t", "f"); | 6394 helper.MakeBytecode(script.c_str(), "*", "f"); |
| 6392 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 6395 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| 6393 } | 6396 } |
| 6394 } | 6397 } |
| 6395 | 6398 |
| 6396 } // namespace interpreter | 6399 } // namespace interpreter |
| 6397 } // namespace internal | 6400 } // namespace internal |
| 6398 } // namespace v8 | 6401 } // namespace v8 |
| OLD | NEW |