| Index: test/unittests/interpreter/constant-array-builder-unittest.cc
|
| diff --git a/test/unittests/interpreter/constant-array-builder-unittest.cc b/test/unittests/interpreter/constant-array-builder-unittest.cc
|
| index c48ac58738c18d8a1f4eb4bbdc1e1a82678c50fb..1233aa4843d826ea10f6d9277f0c437a0e2275a7 100644
|
| --- a/test/unittests/interpreter/constant-array-builder-unittest.cc
|
| +++ b/test/unittests/interpreter/constant-array-builder-unittest.cc
|
| @@ -43,7 +43,7 @@ TEST_F(ConstantArrayBuilderTest, AllocateEntriesWithIdx8Reservations) {
|
| for (size_t reserved = 1; reserved < k8BitCapacity; reserved *= 3) {
|
| ConstantArrayBuilder builder(isolate(), zone());
|
| for (size_t i = 0; i < reserved; i++) {
|
| - OperandSize operand_size = builder.CreateReservedEntry();
|
| + OperandSize operand_size = builder.CreateDiscardableReservedEntry();
|
| CHECK(operand_size == OperandSize::kByte);
|
| }
|
| for (size_t i = 0; i < 2 * k8BitCapacity; i++) {
|
| @@ -94,7 +94,7 @@ TEST_F(ConstantArrayBuilderTest, AllocateEntriesWithIdx8Reservations) {
|
|
|
| // Now make reservations, and commit them with unique entries.
|
| for (size_t i = 0; i < duplicates_in_idx8_space; i++) {
|
| - OperandSize operand_size = builder.CreateReservedEntry();
|
| + OperandSize operand_size = builder.CreateDiscardableReservedEntry();
|
| CHECK(operand_size == OperandSize::kByte);
|
| }
|
| for (size_t i = 0; i < duplicates_in_idx8_space; i++) {
|
| @@ -118,7 +118,7 @@ TEST_F(ConstantArrayBuilderTest, AllocateEntriesWithWideReservations) {
|
| CHECK_EQ(builder.size(), i + 1);
|
| }
|
| for (size_t i = 0; i < reserved; i++) {
|
| - OperandSize operand_size = builder.CreateReservedEntry();
|
| + OperandSize operand_size = builder.CreateDiscardableReservedEntry();
|
| CHECK(operand_size == OperandSize::kShort);
|
| CHECK_EQ(builder.size(), k8BitCapacity);
|
| }
|
| @@ -127,14 +127,14 @@ TEST_F(ConstantArrayBuilderTest, AllocateEntriesWithWideReservations) {
|
| CHECK_EQ(builder.size(), k8BitCapacity);
|
| }
|
| for (size_t i = 0; i < reserved; i++) {
|
| - OperandSize operand_size = builder.CreateReservedEntry();
|
| + OperandSize operand_size = builder.CreateDiscardableReservedEntry();
|
| CHECK(operand_size == OperandSize::kShort);
|
| Handle<Object> object = isolate()->factory()->NewNumberFromSize(i);
|
| builder.CommitReservedEntry(operand_size, object);
|
| CHECK_EQ(builder.size(), k8BitCapacity);
|
| }
|
| for (size_t i = k8BitCapacity; i < k8BitCapacity + reserved; i++) {
|
| - OperandSize operand_size = builder.CreateReservedEntry();
|
| + OperandSize operand_size = builder.CreateDiscardableReservedEntry();
|
| CHECK(operand_size == OperandSize::kShort);
|
| Handle<Object> object = isolate()->factory()->NewNumberFromSize(i);
|
| builder.CommitReservedEntry(operand_size, object);
|
| @@ -177,7 +177,7 @@ TEST_F(ConstantArrayBuilderTest, ToLargeFixedArray) {
|
| TEST_F(ConstantArrayBuilderTest, GapFilledWhenLowReservationCommitted) {
|
| ConstantArrayBuilder builder(isolate(), zone());
|
| for (size_t i = 0; i < k8BitCapacity; i++) {
|
| - OperandSize operand_size = builder.CreateReservedEntry();
|
| + OperandSize operand_size = builder.CreateDiscardableReservedEntry();
|
| CHECK(OperandSize::kByte == operand_size);
|
| CHECK_EQ(builder.size(), 0);
|
| }
|
| @@ -203,7 +203,7 @@ TEST_F(ConstantArrayBuilderTest, GapFilledWhenLowReservationCommitted) {
|
| TEST_F(ConstantArrayBuilderTest, GapNotFilledWhenLowReservationDiscarded) {
|
| ConstantArrayBuilder builder(isolate(), zone());
|
| for (size_t i = 0; i < k8BitCapacity; i++) {
|
| - OperandSize operand_size = builder.CreateReservedEntry();
|
| + OperandSize operand_size = builder.CreateDiscardableReservedEntry();
|
| CHECK(OperandSize::kByte == operand_size);
|
| CHECK_EQ(builder.size(), 0);
|
| }
|
| @@ -230,7 +230,7 @@ TEST_F(ConstantArrayBuilderTest, HolesWithUnusedReservations) {
|
| static int kNumberOfHoles = 128;
|
| ConstantArrayBuilder builder(isolate(), zone());
|
| for (int i = 0; i < kNumberOfHoles; ++i) {
|
| - CHECK_EQ(builder.CreateReservedEntry(), OperandSize::kByte);
|
| + CHECK_EQ(builder.CreateDiscardableReservedEntry(), OperandSize::kByte);
|
| }
|
| for (int i = 0; i < 128; ++i) {
|
| CHECK_EQ(builder.Insert(isolate()->factory()->NewNumber(i)), i);
|
| @@ -252,13 +252,13 @@ TEST_F(ConstantArrayBuilderTest, HolesWithUnusedReservations) {
|
| TEST_F(ConstantArrayBuilderTest, ReservationsAtAllScales) {
|
| ConstantArrayBuilder builder(isolate(), zone());
|
| for (int i = 0; i < 256; i++) {
|
| - CHECK_EQ(builder.CreateReservedEntry(), OperandSize::kByte);
|
| + CHECK_EQ(builder.CreateDiscardableReservedEntry(), OperandSize::kByte);
|
| }
|
| for (int i = 256; i < 65536; ++i) {
|
| - CHECK_EQ(builder.CreateReservedEntry(), OperandSize::kShort);
|
| + CHECK_EQ(builder.CreateDiscardableReservedEntry(), OperandSize::kShort);
|
| }
|
| for (int i = 65536; i < 131072; ++i) {
|
| - CHECK_EQ(builder.CreateReservedEntry(), OperandSize::kQuad);
|
| + CHECK_EQ(builder.CreateDiscardableReservedEntry(), OperandSize::kQuad);
|
| }
|
| CHECK_EQ(builder.CommitReservedEntry(OperandSize::kByte,
|
| isolate()->factory()->NewNumber(1)),
|
| @@ -283,6 +283,40 @@ TEST_F(ConstantArrayBuilderTest, ReservationsAtAllScales) {
|
| }
|
| }
|
|
|
| +TEST_F(ConstantArrayBuilderTest, AllocateEntriesWithFixedReservations) {
|
| + ConstantArrayBuilder builder(isolate(), zone());
|
| + for (size_t i = 0; i < k16BitCapacity; i++) {
|
| + if ((i % 2) == 0) {
|
| + CHECK_EQ(i, builder.ReserveEntry());
|
| + } else {
|
| + builder.Insert(handle(Smi::FromInt(static_cast<int>(i)), isolate()));
|
| + }
|
| + }
|
| + CHECK_EQ(builder.size(), k16BitCapacity);
|
| +
|
| + // Check values before reserved entries are inserted.
|
| + for (size_t i = 0; i < k16BitCapacity; i++) {
|
| + if ((i % 2) == 0) {
|
| + // Check reserved values are the hole.
|
| + Handle<Object> empty = builder.At(i);
|
| + CHECK(empty->SameValue(isolate()->heap()->the_hole_value()));
|
| + } else {
|
| + CHECK_EQ(Handle<Smi>::cast(builder.At(i))->value(), i);
|
| + }
|
| + }
|
| +
|
| + // Insert reserved entries.
|
| + for (size_t i = 0; i < k16BitCapacity; i += 2) {
|
| + builder.InsertReservedEntry(
|
| + i, handle(Smi::FromInt(static_cast<int>(i)), isolate()));
|
| + }
|
| +
|
| + // Check values after reserved entries are inserted.
|
| + for (size_t i = 0; i < k16BitCapacity; i++) {
|
| + CHECK_EQ(Handle<Smi>::cast(builder.At(i))->value(), i);
|
| + }
|
| +}
|
| +
|
| } // namespace interpreter
|
| } // namespace internal
|
| } // namespace v8
|
|
|