| Index: test/unittests/interpreter/bytecode-array-builder-unittest.cc
|
| diff --git a/test/unittests/interpreter/bytecode-array-builder-unittest.cc b/test/unittests/interpreter/bytecode-array-builder-unittest.cc
|
| index 259931ec7d65868fe62187ae95e3a88c2a419889..2647fcac6a121a29ff78fa4846f5b07ea74bb641 100644
|
| --- a/test/unittests/interpreter/bytecode-array-builder-unittest.cc
|
| +++ b/test/unittests/interpreter/bytecode-array-builder-unittest.cc
|
| @@ -33,6 +33,7 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
|
| Register reg(0);
|
| Register other(reg.index() + 1);
|
| Register wide(128);
|
| + RegisterList reg_list;
|
|
|
| // Emit argument creation operations.
|
| builder.CreateArguments(CreateArgumentsType::kMappedArguments)
|
| @@ -123,16 +124,11 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
|
| .CreateObjectLiteral(factory->NewFixedArray(1), 0, 0, reg);
|
|
|
| // Call operations.
|
| - builder.Call(reg, other, 0, 1)
|
| - .Call(reg, wide, 0, 1)
|
| - .TailCall(reg, other, 0, 1)
|
| - .TailCall(reg, wide, 0, 1)
|
| - .CallRuntime(Runtime::kIsArray, reg, 1)
|
| - .CallRuntime(Runtime::kIsArray, wide, 1)
|
| - .CallRuntimeForPair(Runtime::kLoadLookupSlotForCall, reg, 1, other)
|
| - .CallRuntimeForPair(Runtime::kLoadLookupSlotForCall, wide, 1, other)
|
| - .CallJSRuntime(Context::SPREAD_ITERABLE_INDEX, reg, 1)
|
| - .CallJSRuntime(Context::SPREAD_ITERABLE_INDEX, wide, 1);
|
| + builder.Call(reg, reg_list, 1)
|
| + .Call(reg, reg_list, 1, TailCallMode::kAllow)
|
| + .CallRuntime(Runtime::kIsArray, reg)
|
| + .CallRuntimeForPair(Runtime::kLoadLookupSlotForCall, reg_list, other)
|
| + .CallJSRuntime(Context::SPREAD_ITERABLE_INDEX, reg_list);
|
|
|
| // Emit binary operator invocations.
|
| builder.BinaryOperation(Token::Value::ADD, reg, 1)
|
| @@ -179,8 +175,7 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
|
| builder.Delete(reg, LanguageMode::SLOPPY).Delete(reg, LanguageMode::STRICT);
|
|
|
| // Emit new.
|
| - builder.New(reg, reg, 0, 1);
|
| - builder.New(wide, wide, 0, 1);
|
| + builder.New(reg, reg_list, 1);
|
|
|
| // Emit test operator invocations.
|
| builder.CompareOperation(Token::Value::EQ, reg, 1)
|
| @@ -337,8 +332,7 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
|
| .ResumeGenerator(reg);
|
|
|
| // Intrinsics handled by the interpreter.
|
| - builder.CallRuntime(Runtime::kInlineIsArray, reg, 1)
|
| - .CallRuntime(Runtime::kInlineIsArray, wide, 1);
|
| + builder.CallRuntime(Runtime::kInlineIsArray, reg_list);
|
|
|
| // Emit debugger bytecode.
|
| builder.Debugger();
|
| @@ -359,7 +353,7 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
|
| // Generate BytecodeArray.
|
| Handle<BytecodeArray> the_array = builder.ToBytecodeArray(isolate());
|
| CHECK_EQ(the_array->frame_size(),
|
| - builder.fixed_and_temporary_register_count() * kPointerSize);
|
| + builder.total_register_count() * kPointerSize);
|
|
|
| // Build scorecard of bytecodes encountered in the BytecodeArray.
|
| std::vector<int> scorecard(Bytecodes::ToByte(Bytecode::kLast) + 1);
|
| @@ -428,21 +422,18 @@ TEST_F(BytecodeArrayBuilderTest, FrameSizesLookGood) {
|
| for (int contexts = 0; contexts < 4; contexts++) {
|
| for (int temps = 0; temps < 3; temps++) {
|
| BytecodeArrayBuilder builder(isolate(), zone(), 0, contexts, locals);
|
| - BytecodeRegisterAllocator temporaries(
|
| - zone(), builder.temporary_register_allocator());
|
| + BytecodeRegisterAllocator* allocator(builder.register_allocator());
|
| for (int i = 0; i < locals + contexts; i++) {
|
| builder.LoadLiteral(Smi::FromInt(0));
|
| builder.StoreAccumulatorInRegister(Register(i));
|
| }
|
| for (int i = 0; i < temps; i++) {
|
| + Register temp = allocator->NewRegister();
|
| builder.LoadLiteral(Smi::FromInt(0));
|
| - builder.StoreAccumulatorInRegister(temporaries.NewRegister());
|
| - }
|
| - if (temps > 0) {
|
| + builder.StoreAccumulatorInRegister(temp);
|
| // Ensure temporaries are used so not optimized away by the
|
| // register optimizer.
|
| - builder.New(Register(locals + contexts), Register(locals + contexts),
|
| - static_cast<size_t>(temps), 0);
|
| + builder.ConvertAccumulatorToName(temp);
|
| }
|
| builder.Return();
|
|
|
| @@ -478,30 +469,6 @@ TEST_F(BytecodeArrayBuilderTest, Parameters) {
|
| }
|
|
|
|
|
| -TEST_F(BytecodeArrayBuilderTest, RegisterType) {
|
| - CanonicalHandleScope canonical(isolate());
|
| - BytecodeArrayBuilder builder(isolate(), zone(), 10, 0, 3);
|
| - BytecodeRegisterAllocator register_allocator(
|
| - zone(), builder.temporary_register_allocator());
|
| - Register temp0 = register_allocator.NewRegister();
|
| - Register param0(builder.Parameter(0));
|
| - Register param9(builder.Parameter(9));
|
| - Register temp1 = register_allocator.NewRegister();
|
| - Register reg0(0);
|
| - Register reg1(1);
|
| - Register reg2(2);
|
| - Register temp2 = register_allocator.NewRegister();
|
| - CHECK_EQ(builder.RegisterIsParameterOrLocal(temp0), false);
|
| - CHECK_EQ(builder.RegisterIsParameterOrLocal(temp1), false);
|
| - CHECK_EQ(builder.RegisterIsParameterOrLocal(temp2), false);
|
| - CHECK_EQ(builder.RegisterIsParameterOrLocal(param0), true);
|
| - CHECK_EQ(builder.RegisterIsParameterOrLocal(param9), true);
|
| - CHECK_EQ(builder.RegisterIsParameterOrLocal(reg0), true);
|
| - CHECK_EQ(builder.RegisterIsParameterOrLocal(reg1), true);
|
| - CHECK_EQ(builder.RegisterIsParameterOrLocal(reg2), true);
|
| -}
|
| -
|
| -
|
| TEST_F(BytecodeArrayBuilderTest, Constants) {
|
| CanonicalHandleScope canonical(isolate());
|
| BytecodeArrayBuilder builder(isolate(), zone(), 0, 0, 0);
|
|
|