| 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 2c06da26a16b5ca2f0097f48bfb409e292b3f9dc..694e91b9c5b5ed317150f29ecb776857b0f3feca 100644
|
| --- a/test/cctest/interpreter/test-bytecode-generator.cc
|
| +++ b/test/cctest/interpreter/test-bytecode-generator.cc
|
| @@ -6233,7 +6233,6 @@ TEST(Eval) {
|
| Zone zone;
|
|
|
| int closure = Register::function_closure().index();
|
| - int context = Register::function_context().index();
|
| int new_target = Register::new_target().index();
|
|
|
| int first_context_slot = Context::MIN_CONTEXT_SLOTS;
|
| @@ -6244,34 +6243,34 @@ TEST(Eval) {
|
| 1,
|
| 67,
|
| {
|
| - B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), //
|
| - U8(1), //
|
| - B(PushContext), R(0), //
|
| - B(Ldar), THIS(1), //
|
| - B(StaContextSlot), R(0), U8(first_context_slot), //
|
| - B(CreateMappedArguments), //
|
| - B(StaContextSlot), R(0), U8(first_context_slot + 1), //
|
| - B(Ldar), R(new_target), //
|
| - B(StaContextSlot), R(0), U8(first_context_slot + 2), //
|
| - B(Mov), R(context), R(3), //
|
| - B(LdaConstant), U8(0), //
|
| - B(Star), R(4), //
|
| - B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlot), //
|
| - R(3), U8(2), R(1), //
|
| - B(LdaConstant), U8(1), //
|
| - B(Star), R(3), //
|
| - B(Mov), R(1), R(4), //
|
| - B(Mov), R(3), R(5), //
|
| - B(Mov), R(closure), R(6), //
|
| - B(LdaZero), //
|
| - B(Star), R(7), //
|
| - B(LdaSmi8), U8(10), //
|
| - B(Star), R(8), //
|
| - B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), //
|
| - U8(5), //
|
| - B(Star), R(1), //
|
| - B(Call), R(1), R(2), U8(1), U8(0), //
|
| - B(Return), //
|
| + B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), //
|
| + U8(1), //
|
| + B(PushContext), R(0), //
|
| + B(Ldar), THIS(1), //
|
| + B(StaContextSlot), R(0), U8(first_context_slot), //
|
| + B(CreateMappedArguments), //
|
| + B(StaContextSlot), R(0), U8(first_context_slot + 1), //
|
| + B(Ldar), R(new_target), //
|
| + B(StaContextSlot), R(0), U8(first_context_slot + 2), //
|
| + B(Mov), R(0), R(3), //
|
| + B(LdaConstant), U8(0), //
|
| + B(Star), R(4), //
|
| + B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlot), //
|
| + R(3), U8(2), R(1), //
|
| + B(LdaConstant), U8(1), //
|
| + B(Star), R(3), //
|
| + B(Mov), R(1), R(4), //
|
| + B(Mov), R(3), R(5), //
|
| + B(Mov), R(closure), R(6), //
|
| + B(LdaZero), //
|
| + B(Star), R(7), //
|
| + B(LdaSmi8), U8(10), //
|
| + B(Star), R(8), //
|
| + B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), //
|
| + U8(5), //
|
| + B(Star), R(1), //
|
| + B(Call), R(1), R(2), U8(1), U8(0), //
|
| + B(Return), //
|
| },
|
| 2,
|
| {"eval", "1;"}},
|
| @@ -6291,7 +6290,6 @@ TEST(LookupSlot) {
|
|
|
| int closure = Register::function_closure().index();
|
| int first_context_slot = Context::MIN_CONTEXT_SLOTS;
|
| - int context = Register::function_context().index();
|
| int new_target = Register::new_target().index();
|
|
|
| ExpectedSnippet<const char*> snippets[] = {
|
| @@ -6300,73 +6298,73 @@ TEST(LookupSlot) {
|
| 1,
|
| 69,
|
| {
|
| - B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), //
|
| - U8(1), //
|
| - B(PushContext), R(0), //
|
| - B(Ldar), THIS(1), //
|
| - B(StaContextSlot), R(0), U8(first_context_slot), //
|
| - B(CreateMappedArguments), //
|
| - B(StaContextSlot), R(0), U8(first_context_slot + 1), //
|
| - B(Ldar), R(new_target), //
|
| - B(StaContextSlot), R(0), U8(first_context_slot + 2), //
|
| - B(Mov), R(context), R(3), //
|
| - B(LdaConstant), U8(0), //
|
| - B(Star), R(4), //
|
| - B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlot), //
|
| - R(3), U8(2), R(1), //
|
| - B(LdaConstant), U8(1), //
|
| - B(Star), R(3), //
|
| - B(Mov), R(1), R(4), //
|
| - B(Mov), R(3), R(5), //
|
| - B(Mov), R(closure), R(6), //
|
| - B(LdaZero), //
|
| - B(Star), R(7), //
|
| - B(LdaSmi8), U8(10), //
|
| - B(Star), R(8), //
|
| - B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), //
|
| - U8(5), //
|
| - B(Star), R(1), //
|
| - B(Call), R(1), R(2), U8(1), U8(0), //
|
| - B(LdaLookupSlot), U8(2), //
|
| - B(Return), //
|
| + B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), //
|
| + U8(1), //
|
| + B(PushContext), R(0), //
|
| + B(Ldar), THIS(1), //
|
| + B(StaContextSlot), R(0), U8(first_context_slot), //
|
| + B(CreateMappedArguments), //
|
| + B(StaContextSlot), R(0), U8(first_context_slot + 1), //
|
| + B(Ldar), R(new_target), //
|
| + B(StaContextSlot), R(0), U8(first_context_slot + 2), //
|
| + B(Mov), R(0), R(3), //
|
| + B(LdaConstant), U8(0), //
|
| + B(Star), R(4), //
|
| + B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlot), //
|
| + R(3), U8(2), R(1), //
|
| + B(LdaConstant), U8(1), //
|
| + B(Star), R(3), //
|
| + B(Mov), R(1), R(4), //
|
| + B(Mov), R(3), R(5), //
|
| + B(Mov), R(closure), R(6), //
|
| + B(LdaZero), //
|
| + B(Star), R(7), //
|
| + B(LdaSmi8), U8(10), //
|
| + B(Star), R(8), //
|
| + B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), //
|
| + U8(5), //
|
| + B(Star), R(1), //
|
| + B(Call), R(1), R(2), U8(1), U8(0), //
|
| + B(LdaLookupSlot), U8(2), //
|
| + B(Return), //
|
| },
|
| 3,
|
| {"eval", "var x = 10;", "x"}},
|
| {"eval('var x = 10;'); return typeof x;",
|
| - 9 * kPointerSize,
|
| - 1,
|
| - 70,
|
| - {
|
| - B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), //
|
| - U8(1), //
|
| - B(PushContext), R(0), //
|
| - B(Ldar), THIS(1), //
|
| - B(StaContextSlot), R(0), U8(first_context_slot), //
|
| - B(CreateMappedArguments), //
|
| - B(StaContextSlot), R(0), U8(first_context_slot + 1), //
|
| - B(Ldar), R(new_target), //
|
| - B(StaContextSlot), R(0), U8(first_context_slot + 2), //
|
| - B(Mov), R(context), R(3), //
|
| - B(LdaConstant), U8(0), //
|
| - B(Star), R(4), //
|
| - B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlot), //
|
| - R(3), U8(2), R(1), //
|
| - B(LdaConstant), U8(1), //
|
| - B(Star), R(3), //
|
| - B(Mov), R(1), R(4), //
|
| - B(Mov), R(3), R(5), //
|
| - B(Mov), R(closure), R(6), //
|
| - B(LdaZero), //
|
| - B(Star), R(7), //
|
| - B(LdaSmi8), U8(10), //
|
| - B(Star), R(8), //
|
| - B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), //
|
| - U8(5), //
|
| - B(Star), R(1), //
|
| - B(Call), R(1), R(2), U8(1), U8(0), //
|
| - B(LdaLookupSlotInsideTypeof), U8(2), //
|
| - B(TypeOf), //
|
| - B(Return), //
|
| + 9 * kPointerSize,
|
| + 1,
|
| + 70,
|
| + {
|
| + B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), //
|
| + U8(1), //
|
| + B(PushContext), R(0), //
|
| + B(Ldar), THIS(1), //
|
| + B(StaContextSlot), R(0), U8(first_context_slot), //
|
| + B(CreateMappedArguments), //
|
| + B(StaContextSlot), R(0), U8(first_context_slot + 1), //
|
| + B(Ldar), R(new_target), //
|
| + B(StaContextSlot), R(0), U8(first_context_slot + 2), //
|
| + B(Mov), R(0), R(3), //
|
| + B(LdaConstant), U8(0), //
|
| + B(Star), R(4), //
|
| + B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlot), //
|
| + R(3), U8(2), R(1), //
|
| + B(LdaConstant), U8(1), //
|
| + B(Star), R(3), //
|
| + B(Mov), R(1), R(4), //
|
| + B(Mov), R(3), R(5), //
|
| + B(Mov), R(closure), R(6), //
|
| + B(LdaZero), //
|
| + B(Star), R(7), //
|
| + B(LdaSmi8), U8(10), //
|
| + B(Star), R(8), //
|
| + B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), //
|
| + U8(5), //
|
| + B(Star), R(1), //
|
| + B(Call), R(1), R(2), U8(1), U8(0), //
|
| + B(LdaLookupSlotInsideTypeof), U8(2), //
|
| + B(TypeOf), //
|
| + B(Return), //
|
| },
|
| 3,
|
| {"eval", "var x = 10;", "x"}},
|
| @@ -6375,36 +6373,36 @@ TEST(LookupSlot) {
|
| 1,
|
| 71,
|
| {
|
| - B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), //
|
| - U8(1), //
|
| - B(PushContext), R(0), //
|
| - B(Ldar), THIS(1), //
|
| - B(StaContextSlot), R(0), U8(first_context_slot), //
|
| - B(CreateMappedArguments), //
|
| - B(StaContextSlot), R(0), U8(first_context_slot + 1), //
|
| - B(Ldar), R(new_target), //
|
| - B(StaContextSlot), R(0), U8(first_context_slot + 2), //
|
| - B(LdaSmi8), U8(20), //
|
| - B(StaLookupSlotSloppy), U8(0), //
|
| - B(Mov), R(context), R(3), //
|
| - B(LdaConstant), U8(1), //
|
| - B(Star), R(4), //
|
| - B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlot), //
|
| - R(3), U8(2), R(1), //
|
| - B(LdaConstant), U8(2), //
|
| - B(Star), R(3), //
|
| - B(Mov), R(1), R(4), //
|
| - B(Mov), R(3), R(5), //
|
| - B(Mov), R(closure), R(6), //
|
| - B(LdaZero), //
|
| - B(Star), R(7), //
|
| - B(LdaSmi8), U8(10), //
|
| - B(Star), R(8), //
|
| - B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), //
|
| - U8(5), //
|
| - B(Star), R(1), //
|
| - B(Call), R(1), R(2), U8(1), U8(0), //
|
| - B(Return), //
|
| + B(CallRuntime), U16(Runtime::kNewFunctionContext), R(closure), //
|
| + U8(1), //
|
| + B(PushContext), R(0), //
|
| + B(Ldar), THIS(1), //
|
| + B(StaContextSlot), R(0), U8(first_context_slot), //
|
| + B(CreateMappedArguments), //
|
| + B(StaContextSlot), R(0), U8(first_context_slot + 1), //
|
| + B(Ldar), R(new_target), //
|
| + B(StaContextSlot), R(0), U8(first_context_slot + 2), //
|
| + B(LdaSmi8), U8(20), //
|
| + B(StaLookupSlotSloppy), U8(0), //
|
| + B(Mov), R(0), R(3), //
|
| + B(LdaConstant), U8(1), //
|
| + B(Star), R(4), //
|
| + B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlot), //
|
| + R(3), U8(2), R(1), //
|
| + B(LdaConstant), U8(2), //
|
| + B(Star), R(3), //
|
| + B(Mov), R(1), R(4), //
|
| + B(Mov), R(3), R(5), //
|
| + B(Mov), R(closure), R(6), //
|
| + B(LdaZero), //
|
| + B(Star), R(7), //
|
| + B(LdaSmi8), U8(10), //
|
| + B(Star), R(8), //
|
| + B(CallRuntime), U16(Runtime::kResolvePossiblyDirectEval), R(4), //
|
| + U8(5), //
|
| + B(Star), R(1), //
|
| + B(Call), R(1), R(2), U8(1), U8(0), //
|
| + B(Return), //
|
| },
|
| 3,
|
| {"x", "eval", ""}},
|
| @@ -6432,7 +6430,6 @@ TEST(CallLookupSlot) {
|
| i::NewTypeFeedbackVector(helper.isolate(), &feedback_spec);
|
|
|
| int closure = Register::function_closure().index();
|
| - int context = Register::function_context().index();
|
| int new_target = Register::new_target().index();
|
|
|
| ExpectedSnippet<InstanceType> snippets[] = {
|
| @@ -6452,7 +6449,7 @@ TEST(CallLookupSlot) {
|
| B(StaContextSlot), R(0), U8(6), //
|
| B(CreateClosure), U8(0), U8(0), //
|
| B(StaLookupSlotSloppy), U8(1), //
|
| - B(Mov), R(context), R(3), //
|
| + B(Mov), R(0), R(3), //
|
| B(LdaConstant), U8(2), //
|
| B(Star), R(4), //
|
| B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlot), //
|
| @@ -6470,7 +6467,7 @@ TEST(CallLookupSlot) {
|
| U8(5), //
|
| B(Star), R(1), //
|
| B(Call), R(1), R(2), U8(1), U8(0), //
|
| - B(Mov), R(context), R(3), //
|
| + B(Mov), R(0), R(3), //
|
| B(LdaConstant), U8(1), //
|
| B(Star), R(4), //
|
| B(CallRuntimeForPair), U16(Runtime::kLoadLookupSlot), //
|
| @@ -6493,6 +6490,8 @@ TEST(CallLookupSlot) {
|
| }
|
|
|
|
|
| +// TODO(mythria): tests for variable/function declaration in lookup slots.
|
| +
|
| TEST(LookupSlotInEval) {
|
| InitializedHandleScope handle_scope;
|
| BytecodeGeneratorHelper helper;
|
| @@ -6557,10 +6556,8 @@ TEST(LookupSlotInEval) {
|
| std::string script = std::string(function_prologue) +
|
| std::string(snippets[i].code_snippet) +
|
| std::string(function_epilogue);
|
| - // TODO(mythria): use * as filter when function declarations are supported
|
| - // inside eval.
|
| Handle<BytecodeArray> bytecode_array =
|
| - helper.MakeBytecode(script.c_str(), "t", "f");
|
| + helper.MakeBytecode(script.c_str(), "*", "f");
|
| CheckBytecodeArrayEqual(snippets[i], bytecode_array);
|
| }
|
| }
|
| @@ -6654,10 +6651,8 @@ TEST(LookupSlotWideInEval) {
|
| std::string script = std::string(function_prologue) +
|
| std::string(snippets[i].code_snippet) +
|
| std::string(function_epilogue);
|
| - // TODO(mythria): use * as filter when function declarations are supported
|
| - // inside eval.
|
| Handle<BytecodeArray> bytecode_array =
|
| - helper.MakeBytecode(script.c_str(), "t", "f");
|
| + helper.MakeBytecode(script.c_str(), "*", "f");
|
| CheckBytecodeArrayEqual(snippets[i], bytecode_array);
|
| }
|
| }
|
| @@ -6717,7 +6712,7 @@ TEST(DeleteLookupSlotInEval) {
|
| std::string(snippets[i].code_snippet) +
|
| std::string(function_epilogue);
|
| Handle<BytecodeArray> bytecode_array =
|
| - helper.MakeBytecode(script.c_str(), "t", "f");
|
| + helper.MakeBytecode(script.c_str(), "*", "f");
|
| CheckBytecodeArrayEqual(snippets[i], bytecode_array);
|
| }
|
| }
|
|
|