OLD | NEW |
---|---|
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/factory.h" | 7 #include "src/factory.h" |
8 #include "src/handles-inl.h" | 8 #include "src/handles-inl.h" |
9 #include "src/interpreter/constant-array-builder.h" | 9 #include "src/interpreter/constant-array-builder.h" |
10 #include "src/isolate.h" | 10 #include "src/isolate.h" |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
102 Handle<Object> object = | 102 Handle<Object> object = |
103 isolate()->factory()->NewNumberFromSize(2 * k8BitCapacity + i); | 103 isolate()->factory()->NewNumberFromSize(2 * k8BitCapacity + i); |
104 size_t index = builder.CommitReservedEntry(OperandSize::kByte, object); | 104 size_t index = builder.CommitReservedEntry(OperandSize::kByte, object); |
105 CHECK_EQ(static_cast<int>(index), k8BitCapacity - reserved + i); | 105 CHECK_EQ(static_cast<int>(index), k8BitCapacity - reserved + i); |
106 CHECK(builder.At(static_cast<int>(index))->SameValue(*object)); | 106 CHECK(builder.At(static_cast<int>(index))->SameValue(*object)); |
107 } | 107 } |
108 CHECK_EQ(builder.size(), 2 * k8BitCapacity + reserved); | 108 CHECK_EQ(builder.size(), 2 * k8BitCapacity + reserved); |
109 } | 109 } |
110 } | 110 } |
111 | 111 |
112 | 112 TEST_F(ConstantArrayBuilderTest, AllocateEntriesWithWideReservations) { |
113 TEST_F(ConstantArrayBuilderTest, AllocateEntriesWithIdx16Reservations) { | |
114 for (size_t reserved = 1; reserved < k8BitCapacity; reserved *= 3) { | 113 for (size_t reserved = 1; reserved < k8BitCapacity; reserved *= 3) { |
115 ConstantArrayBuilder builder(isolate(), zone()); | 114 ConstantArrayBuilder builder(isolate(), zone()); |
116 for (size_t i = 0; i < k8BitCapacity; i++) { | 115 for (size_t i = 0; i < k8BitCapacity; i++) { |
117 Handle<Object> object = isolate()->factory()->NewNumberFromSize(i); | 116 Handle<Object> object = isolate()->factory()->NewNumberFromSize(i); |
118 builder.Insert(object); | 117 builder.Insert(object); |
119 CHECK(builder.At(i)->SameValue(*object)); | 118 CHECK(builder.At(i)->SameValue(*object)); |
120 CHECK_EQ(builder.size(), i + 1); | 119 CHECK_EQ(builder.size(), i + 1); |
121 } | 120 } |
122 for (size_t i = 0; i < reserved; i++) { | 121 for (size_t i = 0; i < reserved; i++) { |
123 OperandSize operand_size = builder.CreateReservedEntry(); | 122 OperandSize operand_size = builder.CreateReservedEntry(); |
(...skipping 30 matching lines...) Expand all Loading... | |
154 builder.Insert(object); | 153 builder.Insert(object); |
155 CHECK(builder.At(i)->SameValue(*object)); | 154 CHECK(builder.At(i)->SameValue(*object)); |
156 } | 155 } |
157 Handle<FixedArray> constant_array = builder.ToFixedArray(); | 156 Handle<FixedArray> constant_array = builder.ToFixedArray(); |
158 CHECK_EQ(constant_array->length(), kNumberOfElements); | 157 CHECK_EQ(constant_array->length(), kNumberOfElements); |
159 for (size_t i = 0; i < kNumberOfElements; i++) { | 158 for (size_t i = 0; i < kNumberOfElements; i++) { |
160 CHECK(constant_array->get(static_cast<int>(i))->SameValue(*builder.At(i))); | 159 CHECK(constant_array->get(static_cast<int>(i))->SameValue(*builder.At(i))); |
161 } | 160 } |
162 } | 161 } |
163 | 162 |
163 TEST_F(ConstantArrayBuilderTest, ToLargeFixedArray) { | |
rmcilroy
2016/03/17 17:30:50
How long does this tests take to run? We previousl
oth
2016/03/21 09:16:54
Good point. I did check but think we'd need to tes
| |
164 ConstantArrayBuilder builder(isolate(), zone()); | |
165 static const size_t kNumberOfElements = 37373; | |
166 for (size_t i = 0; i < kNumberOfElements; i++) { | |
167 Handle<Object> object = isolate()->factory()->NewNumberFromSize(i); | |
168 builder.Insert(object); | |
169 CHECK(builder.At(i)->SameValue(*object)); | |
170 } | |
171 Handle<FixedArray> constant_array = builder.ToFixedArray(); | |
172 CHECK_EQ(constant_array->length(), kNumberOfElements); | |
173 for (size_t i = 0; i < kNumberOfElements; i++) { | |
174 CHECK(constant_array->get(static_cast<int>(i))->SameValue(*builder.At(i))); | |
175 } | |
176 } | |
164 | 177 |
165 TEST_F(ConstantArrayBuilderTest, GapFilledWhenLowReservationCommitted) { | 178 TEST_F(ConstantArrayBuilderTest, GapFilledWhenLowReservationCommitted) { |
166 ConstantArrayBuilder builder(isolate(), zone()); | 179 ConstantArrayBuilder builder(isolate(), zone()); |
167 for (size_t i = 0; i < k8BitCapacity; i++) { | 180 for (size_t i = 0; i < k8BitCapacity; i++) { |
168 OperandSize operand_size = builder.CreateReservedEntry(); | 181 OperandSize operand_size = builder.CreateReservedEntry(); |
169 CHECK(OperandSize::kByte == operand_size); | 182 CHECK(OperandSize::kByte == operand_size); |
170 CHECK_EQ(builder.size(), 0); | 183 CHECK_EQ(builder.size(), 0); |
171 } | 184 } |
172 for (size_t i = 0; i < k8BitCapacity; i++) { | 185 for (size_t i = 0; i < k8BitCapacity; i++) { |
173 Handle<Object> object = isolate()->factory()->NewNumberFromSize(i); | 186 Handle<Object> object = isolate()->factory()->NewNumberFromSize(i); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
211 Handle<Object> original = builder.At(k8BitCapacity + i); | 224 Handle<Object> original = builder.At(k8BitCapacity + i); |
212 CHECK(original->SameValue(*reference)); | 225 CHECK(original->SameValue(*reference)); |
213 Handle<Object> duplicate = builder.At(i); | 226 Handle<Object> duplicate = builder.At(i); |
214 CHECK(duplicate->SameValue(*isolate()->factory()->the_hole_value())); | 227 CHECK(duplicate->SameValue(*isolate()->factory()->the_hole_value())); |
215 } | 228 } |
216 } | 229 } |
217 | 230 |
218 } // namespace interpreter | 231 } // namespace interpreter |
219 } // namespace internal | 232 } // namespace internal |
220 } // namespace v8 | 233 } // namespace v8 |
OLD | NEW |