Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Side by Side Diff: test/unittests/interpreter/constant-array-builder-unittest.cc

Issue 2226333002: [Interpreter] Avoid allocating handles in bytecode-array-writer (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@offheap_varchecks
Patch Set: [Interpreter] Avoid allocating handles in bytecode-array-writer Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/interpreter/constant-array-builder.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 22 matching lines...) Expand all
33 ConstantArrayBuilder builder(isolate(), zone()); 33 ConstantArrayBuilder builder(isolate(), zone());
34 for (size_t i = 0; i < k16BitCapacity; i++) { 34 for (size_t i = 0; i < k16BitCapacity; i++) {
35 builder.Insert(handle(Smi::FromInt(static_cast<int>(i)), isolate())); 35 builder.Insert(handle(Smi::FromInt(static_cast<int>(i)), isolate()));
36 } 36 }
37 CHECK_EQ(builder.size(), k16BitCapacity); 37 CHECK_EQ(builder.size(), k16BitCapacity);
38 for (size_t i = 0; i < k16BitCapacity; i++) { 38 for (size_t i = 0; i < k16BitCapacity; i++) {
39 CHECK_EQ(Handle<Smi>::cast(builder.At(i))->value(), i); 39 CHECK_EQ(Handle<Smi>::cast(builder.At(i))->value(), i);
40 } 40 }
41 } 41 }
42 42
43 TEST_F(ConstantArrayBuilderTest, ToFixedArray) {
44 CanonicalHandleScope canonical(isolate());
45 ConstantArrayBuilder builder(isolate(), zone());
46 static const size_t kNumberOfElements = 37;
47 for (size_t i = 0; i < kNumberOfElements; i++) {
48 Handle<Object> object = isolate()->factory()->NewNumberFromSize(i);
49 builder.Insert(object);
50 CHECK(builder.At(i)->SameValue(*object));
51 }
52 Handle<FixedArray> constant_array = builder.ToFixedArray();
53 CHECK_EQ(constant_array->length(), kNumberOfElements);
54 for (size_t i = 0; i < kNumberOfElements; i++) {
55 CHECK(constant_array->get(static_cast<int>(i))->SameValue(*builder.At(i)));
56 }
57 }
58
59 TEST_F(ConstantArrayBuilderTest, ToLargeFixedArray) {
60 CanonicalHandleScope canonical(isolate());
61 ConstantArrayBuilder builder(isolate(), zone());
62 static const size_t kNumberOfElements = 37373;
63 for (size_t i = 0; i < kNumberOfElements; i++) {
64 Handle<Object> object = isolate()->factory()->NewNumberFromSize(i);
65 builder.Insert(object);
66 CHECK(builder.At(i)->SameValue(*object));
67 }
68 Handle<FixedArray> constant_array = builder.ToFixedArray();
69 CHECK_EQ(constant_array->length(), kNumberOfElements);
70 for (size_t i = 0; i < kNumberOfElements; i++) {
71 CHECK(constant_array->get(static_cast<int>(i))->SameValue(*builder.At(i)));
72 }
73 }
74
75 TEST_F(ConstantArrayBuilderTest, ToLargeFixedArrayWithReservations) {
76 CanonicalHandleScope canonical(isolate());
77 ConstantArrayBuilder builder(isolate(), zone());
78 static const size_t kNumberOfElements = 37373;
79 for (size_t i = 0; i < kNumberOfElements; i++) {
80 builder.CommitReservedEntry(builder.CreateReservedEntry(),
81 Smi::FromInt(static_cast<int>(i)));
82 }
83 Handle<FixedArray> constant_array = builder.ToFixedArray();
84 CHECK_EQ(constant_array->length(), kNumberOfElements);
85 for (size_t i = 0; i < kNumberOfElements; i++) {
86 CHECK(constant_array->get(static_cast<int>(i))->SameValue(*builder.At(i)));
87 }
88 }
89
43 TEST_F(ConstantArrayBuilderTest, AllocateEntriesWithIdx8Reservations) { 90 TEST_F(ConstantArrayBuilderTest, AllocateEntriesWithIdx8Reservations) {
44 CanonicalHandleScope canonical(isolate()); 91 CanonicalHandleScope canonical(isolate());
45 for (size_t reserved = 1; reserved < k8BitCapacity; reserved *= 3) { 92 for (size_t reserved = 1; reserved < k8BitCapacity; reserved *= 3) {
46 ConstantArrayBuilder builder(isolate(), zone()); 93 ConstantArrayBuilder builder(isolate(), zone());
47 for (size_t i = 0; i < reserved; i++) { 94 for (size_t i = 0; i < reserved; i++) {
48 OperandSize operand_size = builder.CreateReservedEntry(); 95 OperandSize operand_size = builder.CreateReservedEntry();
49 CHECK(operand_size == OperandSize::kByte); 96 CHECK(operand_size == OperandSize::kByte);
50 } 97 }
51 for (size_t i = 0; i < 2 * k8BitCapacity; i++) { 98 for (size_t i = 0; i < 2 * k8BitCapacity; i++) {
52 Handle<Object> object = isolate()->factory()->NewNumberFromSize(i); 99 builder.CommitReservedEntry(builder.CreateReservedEntry(),
53 builder.Insert(object); 100 Smi::FromInt(static_cast<int>(i)));
54 if (i + reserved < k8BitCapacity) { 101 if (i + reserved < k8BitCapacity) {
55 CHECK_LE(builder.size(), k8BitCapacity); 102 CHECK_LE(builder.size(), k8BitCapacity);
56 CHECK_EQ(builder.size(), i + 1); 103 CHECK_EQ(builder.size(), i + 1);
57 CHECK(builder.At(i)->SameValue(*object));
58 } else { 104 } else {
59 CHECK_GE(builder.size(), k8BitCapacity); 105 CHECK_GE(builder.size(), k8BitCapacity);
60 CHECK_EQ(builder.size(), i + reserved + 1); 106 CHECK_EQ(builder.size(), i + reserved + 1);
61 CHECK(builder.At(i + reserved)->SameValue(*object));
62 } 107 }
63 } 108 }
64 CHECK_EQ(builder.size(), 2 * k8BitCapacity + reserved); 109 CHECK_EQ(builder.size(), 2 * k8BitCapacity + reserved);
65 110
66 // Check reserved values represented by the hole. 111 // Check reserved values represented by the hole.
67 for (size_t i = 0; i < reserved; i++) { 112 for (size_t i = 0; i < reserved; i++) {
68 Handle<Object> empty = builder.At(k8BitCapacity - reserved + i); 113 Handle<Object> empty = builder.At(k8BitCapacity - reserved + i);
69 CHECK(empty->SameValue(isolate()->heap()->the_hole_value())); 114 CHECK(empty->SameValue(isolate()->heap()->the_hole_value()));
70 } 115 }
71 116
72 // Commmit reserved entries with duplicates and check size does not change. 117 // Commit reserved entries with duplicates and check size does not change.
73 DCHECK_EQ(reserved + 2 * k8BitCapacity, builder.size()); 118 DCHECK_EQ(reserved + 2 * k8BitCapacity, builder.size());
74 size_t duplicates_in_idx8_space = 119 size_t duplicates_in_idx8_space =
75 std::min(reserved, k8BitCapacity - reserved); 120 std::min(reserved, k8BitCapacity - reserved);
76 for (size_t i = 0; i < duplicates_in_idx8_space; i++) { 121 for (size_t i = 0; i < duplicates_in_idx8_space; i++) {
77 builder.CommitReservedEntry(OperandSize::kByte, 122 builder.CommitReservedEntry(OperandSize::kByte,
78 isolate()->factory()->NewNumberFromSize(i)); 123 Smi::FromInt(static_cast<int>(i)));
79 DCHECK_EQ(reserved + 2 * k8BitCapacity, builder.size()); 124 DCHECK_EQ(reserved + 2 * k8BitCapacity, builder.size());
80 } 125 }
81 126
82 // Check all committed values match expected (holes where
83 // duplicates_in_idx8_space allocated).
84 for (size_t i = 0; i < k8BitCapacity - reserved; i++) {
85 Smi* smi = Smi::FromInt(static_cast<int>(i));
86 CHECK(Handle<Smi>::cast(builder.At(i))->SameValue(smi));
87 }
88 for (size_t i = k8BitCapacity; i < 2 * k8BitCapacity + reserved; i++) {
89 Smi* smi = Smi::FromInt(static_cast<int>(i - reserved));
90 CHECK(Handle<Smi>::cast(builder.At(i))->SameValue(smi));
91 }
92 for (size_t i = 0; i < reserved; i++) {
93 size_t index = k8BitCapacity - reserved + i;
94 CHECK(builder.At(index)->IsTheHole(isolate()));
95 }
96
97 // Now make reservations, and commit them with unique entries. 127 // Now make reservations, and commit them with unique entries.
98 for (size_t i = 0; i < duplicates_in_idx8_space; i++) { 128 for (size_t i = 0; i < duplicates_in_idx8_space; i++) {
99 OperandSize operand_size = builder.CreateReservedEntry(); 129 OperandSize operand_size = builder.CreateReservedEntry();
100 CHECK(operand_size == OperandSize::kByte); 130 CHECK(operand_size == OperandSize::kByte);
101 } 131 }
102 for (size_t i = 0; i < duplicates_in_idx8_space; i++) { 132 for (size_t i = 0; i < duplicates_in_idx8_space; i++) {
103 Handle<Object> object = 133 Smi* value = Smi::FromInt(static_cast<int>(2 * k8BitCapacity + i));
104 isolate()->factory()->NewNumberFromSize(2 * k8BitCapacity + i); 134 size_t index = builder.CommitReservedEntry(OperandSize::kByte, value);
105 size_t index = builder.CommitReservedEntry(OperandSize::kByte, object);
106 CHECK_EQ(static_cast<int>(index), k8BitCapacity - reserved + i); 135 CHECK_EQ(static_cast<int>(index), k8BitCapacity - reserved + i);
107 CHECK(builder.At(static_cast<int>(index))->SameValue(*object));
108 } 136 }
109 CHECK_EQ(builder.size(), 2 * k8BitCapacity + reserved); 137
138 Handle<FixedArray> constant_array = builder.ToFixedArray();
139 CHECK_EQ(constant_array->length(), 2 * k8BitCapacity + reserved);
140
141 // Check all committed values match expected
142 for (size_t i = 0; i < k8BitCapacity - reserved; i++) {
143 Object* value = constant_array->get(static_cast<int>(i));
144 Smi* smi = Smi::FromInt(static_cast<int>(i));
145 CHECK(value->SameValue(smi));
146 }
147 for (size_t i = k8BitCapacity; i < 2 * k8BitCapacity + reserved; i++) {
148 Object* value = constant_array->get(static_cast<int>(i));
149 Smi* smi = Smi::FromInt(static_cast<int>(i - reserved));
150 CHECK(value->SameValue(smi));
151 }
110 } 152 }
111 } 153 }
112 154
113 TEST_F(ConstantArrayBuilderTest, AllocateEntriesWithWideReservations) { 155 TEST_F(ConstantArrayBuilderTest, AllocateEntriesWithWideReservations) {
114 CanonicalHandleScope canonical(isolate()); 156 CanonicalHandleScope canonical(isolate());
115 for (size_t reserved = 1; reserved < k8BitCapacity; reserved *= 3) { 157 for (size_t reserved = 1; reserved < k8BitCapacity; reserved *= 3) {
116 ConstantArrayBuilder builder(isolate(), zone()); 158 ConstantArrayBuilder builder(isolate(), zone());
117 for (size_t i = 0; i < k8BitCapacity; i++) { 159 for (size_t i = 0; i < k8BitCapacity; i++) {
118 Handle<Object> object = isolate()->factory()->NewNumberFromSize(i); 160 builder.CommitReservedEntry(builder.CreateReservedEntry(),
119 builder.Insert(object); 161 Smi::FromInt(static_cast<int>(i)));
120 CHECK(builder.At(i)->SameValue(*object));
121 CHECK_EQ(builder.size(), i + 1); 162 CHECK_EQ(builder.size(), i + 1);
122 } 163 }
123 for (size_t i = 0; i < reserved; i++) { 164 for (size_t i = 0; i < reserved; i++) {
124 OperandSize operand_size = builder.CreateReservedEntry(); 165 OperandSize operand_size = builder.CreateReservedEntry();
125 CHECK(operand_size == OperandSize::kShort); 166 CHECK(operand_size == OperandSize::kShort);
126 CHECK_EQ(builder.size(), k8BitCapacity); 167 CHECK_EQ(builder.size(), k8BitCapacity);
127 } 168 }
128 for (size_t i = 0; i < reserved; i++) { 169 for (size_t i = 0; i < reserved; i++) {
129 builder.DiscardReservedEntry(OperandSize::kShort); 170 builder.DiscardReservedEntry(OperandSize::kShort);
130 CHECK_EQ(builder.size(), k8BitCapacity); 171 CHECK_EQ(builder.size(), k8BitCapacity);
131 } 172 }
132 for (size_t i = 0; i < reserved; i++) { 173 for (size_t i = 0; i < reserved; i++) {
133 OperandSize operand_size = builder.CreateReservedEntry(); 174 OperandSize operand_size = builder.CreateReservedEntry();
134 CHECK(operand_size == OperandSize::kShort); 175 CHECK(operand_size == OperandSize::kShort);
135 Handle<Object> object = isolate()->factory()->NewNumberFromSize(i); 176 builder.CommitReservedEntry(operand_size,
136 builder.CommitReservedEntry(operand_size, object); 177 Smi::FromInt(static_cast<int>(i)));
137 CHECK_EQ(builder.size(), k8BitCapacity); 178 CHECK_EQ(builder.size(), k8BitCapacity);
138 } 179 }
139 for (size_t i = k8BitCapacity; i < k8BitCapacity + reserved; i++) { 180 for (size_t i = k8BitCapacity; i < k8BitCapacity + reserved; i++) {
140 OperandSize operand_size = builder.CreateReservedEntry(); 181 OperandSize operand_size = builder.CreateReservedEntry();
141 CHECK(operand_size == OperandSize::kShort); 182 CHECK(operand_size == OperandSize::kShort);
142 Handle<Object> object = isolate()->factory()->NewNumberFromSize(i); 183 builder.CommitReservedEntry(operand_size,
143 builder.CommitReservedEntry(operand_size, object); 184 Smi::FromInt(static_cast<int>(i)));
144 CHECK_EQ(builder.size(), i + 1); 185 CHECK_EQ(builder.size(), i + 1);
145 } 186 }
187
188 Handle<FixedArray> constant_array = builder.ToFixedArray();
189 CHECK_EQ(constant_array->length(), k8BitCapacity + reserved);
190 for (size_t i = 0; i < k8BitCapacity + reserved; i++) {
191 Object* value = constant_array->get(static_cast<int>(i));
192 CHECK(value->SameValue(*isolate()->factory()->NewNumberFromSize(i)));
193 }
146 } 194 }
147 } 195 }
148 196
149
150 TEST_F(ConstantArrayBuilderTest, ToFixedArray) {
151 CanonicalHandleScope canonical(isolate());
152 ConstantArrayBuilder builder(isolate(), zone());
153 static const size_t kNumberOfElements = 37;
154 for (size_t i = 0; i < kNumberOfElements; i++) {
155 Handle<Object> object = isolate()->factory()->NewNumberFromSize(i);
156 builder.Insert(object);
157 CHECK(builder.At(i)->SameValue(*object));
158 }
159 Handle<FixedArray> constant_array = builder.ToFixedArray();
160 CHECK_EQ(constant_array->length(), kNumberOfElements);
161 for (size_t i = 0; i < kNumberOfElements; i++) {
162 CHECK(constant_array->get(static_cast<int>(i))->SameValue(*builder.At(i)));
163 }
164 }
165
166 TEST_F(ConstantArrayBuilderTest, ToLargeFixedArray) {
167 CanonicalHandleScope canonical(isolate());
168 ConstantArrayBuilder builder(isolate(), zone());
169 static const size_t kNumberOfElements = 37373;
170 for (size_t i = 0; i < kNumberOfElements; i++) {
171 Handle<Object> object = isolate()->factory()->NewNumberFromSize(i);
172 builder.Insert(object);
173 CHECK(builder.At(i)->SameValue(*object));
174 }
175 Handle<FixedArray> constant_array = builder.ToFixedArray();
176 CHECK_EQ(constant_array->length(), kNumberOfElements);
177 for (size_t i = 0; i < kNumberOfElements; i++) {
178 CHECK(constant_array->get(static_cast<int>(i))->SameValue(*builder.At(i)));
179 }
180 }
181
182 TEST_F(ConstantArrayBuilderTest, GapFilledWhenLowReservationCommitted) { 197 TEST_F(ConstantArrayBuilderTest, GapFilledWhenLowReservationCommitted) {
183 CanonicalHandleScope canonical(isolate()); 198 CanonicalHandleScope canonical(isolate());
184 ConstantArrayBuilder builder(isolate(), zone()); 199 ConstantArrayBuilder builder(isolate(), zone());
185 for (size_t i = 0; i < k8BitCapacity; i++) { 200 for (size_t i = 0; i < k8BitCapacity; i++) {
186 OperandSize operand_size = builder.CreateReservedEntry(); 201 OperandSize operand_size = builder.CreateReservedEntry();
187 CHECK(OperandSize::kByte == operand_size); 202 CHECK(OperandSize::kByte == operand_size);
188 CHECK_EQ(builder.size(), 0); 203 CHECK_EQ(builder.size(), 0);
189 } 204 }
190 for (size_t i = 0; i < k8BitCapacity; i++) { 205 for (size_t i = 0; i < k8BitCapacity; i++) {
191 Handle<Object> object = isolate()->factory()->NewNumberFromSize(i); 206 builder.CommitReservedEntry(builder.CreateReservedEntry(),
192 builder.Insert(object); 207 Smi::FromInt(static_cast<int>(i)));
193 CHECK_EQ(builder.size(), i + k8BitCapacity + 1); 208 CHECK_EQ(builder.size(), i + k8BitCapacity + 1);
194 } 209 }
195 for (size_t i = 0; i < k8BitCapacity; i++) { 210 for (size_t i = 0; i < k8BitCapacity; i++) {
196 builder.CommitReservedEntry(OperandSize::kByte, 211 builder.CommitReservedEntry(OperandSize::kByte,
197 builder.At(i + k8BitCapacity)); 212 Smi::FromInt(static_cast<int>(i)));
198 CHECK_EQ(builder.size(), 2 * k8BitCapacity); 213 CHECK_EQ(builder.size(), 2 * k8BitCapacity);
199 } 214 }
215 Handle<FixedArray> constant_array = builder.ToFixedArray();
216 CHECK_EQ(constant_array->length(), 2 * k8BitCapacity);
200 for (size_t i = 0; i < k8BitCapacity; i++) { 217 for (size_t i = 0; i < k8BitCapacity; i++) {
201 Handle<Object> original = builder.At(k8BitCapacity + i); 218 Object* original = constant_array->get(static_cast<int>(k8BitCapacity + i));
202 Handle<Object> duplicate = builder.At(i); 219 Object* duplicate = constant_array->get(static_cast<int>(i));
203 CHECK(original->SameValue(*duplicate)); 220 CHECK(original->SameValue(duplicate));
204 Handle<Object> reference = isolate()->factory()->NewNumberFromSize(i); 221 Handle<Object> reference = isolate()->factory()->NewNumberFromSize(i);
205 CHECK(original->SameValue(*reference)); 222 CHECK(original->SameValue(*reference));
206 } 223 }
207 } 224 }
208 225
209 TEST_F(ConstantArrayBuilderTest, GapNotFilledWhenLowReservationDiscarded) { 226 TEST_F(ConstantArrayBuilderTest, GapNotFilledWhenLowReservationDiscarded) {
210 CanonicalHandleScope canonical(isolate()); 227 CanonicalHandleScope canonical(isolate());
211 ConstantArrayBuilder builder(isolate(), zone()); 228 ConstantArrayBuilder builder(isolate(), zone());
212 for (size_t i = 0; i < k8BitCapacity; i++) { 229 for (size_t i = 0; i < k8BitCapacity; i++) {
213 OperandSize operand_size = builder.CreateReservedEntry(); 230 OperandSize operand_size = builder.CreateReservedEntry();
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 ConstantArrayBuilder builder(isolate(), zone()); 279 ConstantArrayBuilder builder(isolate(), zone());
263 for (int i = 0; i < 256; i++) { 280 for (int i = 0; i < 256; i++) {
264 CHECK_EQ(builder.CreateReservedEntry(), OperandSize::kByte); 281 CHECK_EQ(builder.CreateReservedEntry(), OperandSize::kByte);
265 } 282 }
266 for (int i = 256; i < 65536; ++i) { 283 for (int i = 256; i < 65536; ++i) {
267 CHECK_EQ(builder.CreateReservedEntry(), OperandSize::kShort); 284 CHECK_EQ(builder.CreateReservedEntry(), OperandSize::kShort);
268 } 285 }
269 for (int i = 65536; i < 131072; ++i) { 286 for (int i = 65536; i < 131072; ++i) {
270 CHECK_EQ(builder.CreateReservedEntry(), OperandSize::kQuad); 287 CHECK_EQ(builder.CreateReservedEntry(), OperandSize::kQuad);
271 } 288 }
272 CHECK_EQ(builder.CommitReservedEntry(OperandSize::kByte, 289 CHECK_EQ(builder.CommitReservedEntry(OperandSize::kByte, Smi::FromInt(1)), 0);
273 isolate()->factory()->NewNumber(1)), 290 CHECK_EQ(builder.CommitReservedEntry(OperandSize::kShort, Smi::FromInt(2)),
274 0);
275 CHECK_EQ(builder.CommitReservedEntry(OperandSize::kShort,
276 isolate()->factory()->NewNumber(2)),
277 256); 291 256);
278 CHECK_EQ(builder.CommitReservedEntry(OperandSize::kQuad, 292 CHECK_EQ(builder.CommitReservedEntry(OperandSize::kQuad, Smi::FromInt(3)),
279 isolate()->factory()->NewNumber(3)),
280 65536); 293 65536);
281 Handle<FixedArray> constant_array = builder.ToFixedArray(); 294 Handle<FixedArray> constant_array = builder.ToFixedArray();
282 CHECK_EQ(constant_array->length(), 65537); 295 CHECK_EQ(constant_array->length(), 65537);
283 int count = 1; 296 int count = 1;
284 for (int i = 0; i < constant_array->length(); ++i) { 297 for (int i = 0; i < constant_array->length(); ++i) {
285 Handle<Object> expected; 298 Handle<Object> expected;
286 if (i == 0 || i == 256 || i == 65536) { 299 if (i == 0 || i == 256 || i == 65536) {
287 expected = isolate()->factory()->NewNumber(count++); 300 expected = isolate()->factory()->NewNumber(count++);
288 } else { 301 } else {
289 expected = isolate()->factory()->the_hole_value(); 302 expected = isolate()->factory()->the_hole_value();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 336
324 // Check values after reserved entries are inserted. 337 // Check values after reserved entries are inserted.
325 for (size_t i = 0; i < k16BitCapacity; i++) { 338 for (size_t i = 0; i < k16BitCapacity; i++) {
326 CHECK_EQ(Handle<Smi>::cast(builder.At(i))->value(), i); 339 CHECK_EQ(Handle<Smi>::cast(builder.At(i))->value(), i);
327 } 340 }
328 } 341 }
329 342
330 } // namespace interpreter 343 } // namespace interpreter
331 } // namespace internal 344 } // namespace internal
332 } // namespace v8 345 } // namespace v8
OLDNEW
« no previous file with comments | « src/interpreter/constant-array-builder.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698