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 d82c7a00635cc58592570c8993e0561c63bff813..f748480bd9d43b0f0ab6ac5b343308a25662a763 100644 |
--- a/test/unittests/interpreter/bytecode-array-builder-unittest.cc |
+++ b/test/unittests/interpreter/bytecode-array-builder-unittest.cc |
@@ -23,12 +23,12 @@ class BytecodeArrayBuilderTest : public TestWithIsolateAndZone { |
TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { |
BytecodeArrayBuilder builder(isolate(), zone()); |
- builder.set_locals_count(200); |
+ builder.set_locals_count(131); |
builder.set_context_count(1); |
builder.set_parameter_count(0); |
- CHECK_EQ(builder.locals_count(), 200); |
+ CHECK_EQ(builder.locals_count(), 131); |
CHECK_EQ(builder.context_count(), 1); |
- CHECK_EQ(builder.fixed_register_count(), 201); |
+ CHECK_EQ(builder.fixed_register_count(), 132); |
// Emit constant loads. |
builder.LoadLiteral(Smi::FromInt(0)) |
@@ -40,23 +40,17 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { |
.LoadTrue() |
.LoadFalse(); |
- // Emit accumulator transfers. Stores followed by loads to the same register |
- // are not generated. Hence, a dummy instruction in between. |
Register reg(0); |
+ Register other(reg.index() + 1); |
+ Register wide(128); |
+ |
builder.LoadAccumulatorWithRegister(reg) |
.LoadNull() |
.StoreAccumulatorInRegister(reg); |
// Emit register-register transfer. |
- Register other(1); |
builder.MoveRegister(reg, other); |
- |
- // Emit register-register exchanges. |
- Register wide(150); |
- builder.ExchangeRegisters(reg, wide); |
- builder.ExchangeRegisters(wide, reg); |
- Register wider(151); |
- builder.ExchangeRegisters(wide, wider); |
+ builder.MoveRegister(reg, wide); |
// Emit global load / store operations. |
Factory* factory = isolate()->factory(); |
@@ -107,11 +101,14 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { |
.CreateObjectLiteral(factory->NewFixedArray(1), 0, 0); |
// Call operations. |
- builder.Call(reg, reg, 0, 0) |
- .Call(reg, reg, 0, 1024) |
+ builder.Call(reg, other, 1, 0) |
+ .Call(reg, wide, 1, 0) |
.CallRuntime(Runtime::kIsArray, reg, 1) |
- .CallRuntimeForPair(Runtime::kLoadLookupSlot, reg, 1, reg) |
- .CallJSRuntime(Context::SPREAD_ITERABLE_INDEX, reg, 1); |
+ .CallRuntime(Runtime::kIsArray, wide, 1) |
+ .CallRuntimeForPair(Runtime::kLoadLookupSlot, reg, 1, other) |
+ .CallRuntimeForPair(Runtime::kLoadLookupSlot, wide, 1, other) |
+ .CallJSRuntime(Context::SPREAD_ITERABLE_INDEX, reg, 1) |
+ .CallJSRuntime(Context::SPREAD_ITERABLE_INDEX, wide, 1); |
// Emit binary operator invocations. |
builder.BinaryOperation(Token::Value::ADD, reg, Strength::WEAK) |
@@ -144,6 +141,7 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { |
// Emit new. |
builder.New(reg, reg, 0); |
+ builder.New(wide, wide, 0); |
// Emit test operator invocations. |
builder.CompareOperation(Token::Value::EQ, reg, Strength::WEAK) |
@@ -205,14 +203,16 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { |
// Emit throw in it's own basic block so that the rest of the code isn't |
// omitted due to being dead. |
BytecodeLabel after_throw; |
- builder.Jump(&after_throw) |
- .Throw() |
- .Bind(&after_throw); |
+ builder.Jump(&after_throw).Throw().Bind(&after_throw); |
builder.ForInPrepare(reg) |
.ForInDone(reg, reg) |
.ForInNext(reg, reg, reg) |
.ForInStep(reg); |
+ builder.ForInPrepare(wide) |
+ .ForInDone(reg, other) |
+ .ForInNext(wide, wide, wide) |
+ .ForInStep(reg); |
// Wide constant pool loads |
for (int i = 0; i < 256; i++) { |
@@ -243,8 +243,7 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) { |
.StoreKeyedProperty(reg, reg, 2056, LanguageMode::STRICT); |
// Emit wide context operations. |
- builder.LoadContextSlot(reg, 1024) |
- .StoreContextSlot(reg, 1024); |
+ builder.LoadContextSlot(reg, 1024).StoreContextSlot(reg, 1024); |
// Emit wide load / store lookup slots. |
builder.LoadLookupSlot(wide_name, TypeofMode::NOT_INSIDE_TYPEOF) |