OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/factory.h" | 5 #include "src/factory.h" |
6 #include "src/identity-map.h" | 6 #include "src/identity-map.h" |
7 #include "src/isolate.h" | 7 #include "src/isolate.h" |
8 #include "src/objects.h" | 8 #include "src/objects.h" |
9 // FIXME(mstarzinger, marja): This is weird, but required because of the missing | 9 // FIXME(mstarzinger, marja): This is weird, but required because of the missing |
10 // (disallowed) include: src/factory.h -> src/objects-inl.h | 10 // (disallowed) include: src/factory.h -> src/objects-inl.h |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
328 Handle<Object> num_keys[] = {t.num(2.1), t.num(2.4), t.num(3.3), t.num(4.3), | 328 Handle<Object> num_keys[] = {t.num(2.1), t.num(2.4), t.num(3.3), t.num(4.3), |
329 t.num(7.5), t.num(6.4), t.num(7.3), t.num(8.3), | 329 t.num(7.5), t.num(6.4), t.num(7.3), t.num(8.3), |
330 t.num(8.9), t.num(10.4)}; | 330 t.num(8.9), t.num(10.4)}; |
331 | 331 |
332 // Insert some objects that should be in new space. | 332 // Insert some objects that should be in new space. |
333 for (size_t i = 0; i < arraysize(num_keys); i++) { | 333 for (size_t i = 0; i < arraysize(num_keys); i++) { |
334 t.map.Set(num_keys[i], &num_keys[i]); | 334 t.map.Set(num_keys[i], &num_keys[i]); |
335 } | 335 } |
336 | 336 |
337 // Do an explicit, real GC. | 337 // Do an explicit, real GC. |
338 t.heap()->CollectGarbage(i::NEW_SPACE); | 338 t.heap()->CollectGarbage(i::NEW_SPACE, i::GarbageCollectionReason::kTesting); |
339 | 339 |
340 // Check that searching for the numbers finds the same values. | 340 // Check that searching for the numbers finds the same values. |
341 for (size_t i = 0; i < arraysize(num_keys); i++) { | 341 for (size_t i = 0; i < arraysize(num_keys); i++) { |
342 t.CheckFind(num_keys[i], &num_keys[i]); | 342 t.CheckFind(num_keys[i], &num_keys[i]); |
343 t.CheckGet(num_keys[i], &num_keys[i]); | 343 t.CheckGet(num_keys[i], &num_keys[i]); |
344 } | 344 } |
345 } | 345 } |
346 | 346 |
347 | 347 |
348 TEST(CanonicalHandleScope) { | 348 TEST(CanonicalHandleScope) { |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 | 380 |
381 // Test ordinary heap objects. | 381 // Test ordinary heap objects. |
382 Handle<HeapNumber> number1 = isolate->factory()->NewHeapNumber(3.3); | 382 Handle<HeapNumber> number1 = isolate->factory()->NewHeapNumber(3.3); |
383 Handle<String> string1 = | 383 Handle<String> string1 = |
384 isolate->factory()->NewStringFromAsciiChecked("test"); | 384 isolate->factory()->NewStringFromAsciiChecked("test"); |
385 next_handle = isolate->handle_scope_data()->next; | 385 next_handle = isolate->handle_scope_data()->next; |
386 Handle<HeapNumber> number2(*number1); | 386 Handle<HeapNumber> number2(*number1); |
387 Handle<String> string2(*string1); | 387 Handle<String> string2(*string1); |
388 CHECK_EQ(number1.location(), number2.location()); | 388 CHECK_EQ(number1.location(), number2.location()); |
389 CHECK_EQ(string1.location(), string2.location()); | 389 CHECK_EQ(string1.location(), string2.location()); |
390 heap->CollectAllGarbage(); | 390 CcTest::CollectAllGarbage(i::Heap::kFinalizeIncrementalMarkingMask); |
391 Handle<HeapNumber> number3(*number2); | 391 Handle<HeapNumber> number3(*number2); |
392 Handle<String> string3(*string2); | 392 Handle<String> string3(*string2); |
393 CHECK_EQ(number1.location(), number3.location()); | 393 CHECK_EQ(number1.location(), number3.location()); |
394 CHECK_EQ(string1.location(), string3.location()); | 394 CHECK_EQ(string1.location(), string3.location()); |
395 // Check that no new handles have been allocated. | 395 // Check that no new handles have been allocated. |
396 CHECK_EQ(next_handle, isolate->handle_scope_data()->next); | 396 CHECK_EQ(next_handle, isolate->handle_scope_data()->next); |
397 | 397 |
398 // Inner handle scope do not create canonical handles. | 398 // Inner handle scope do not create canonical handles. |
399 { | 399 { |
400 HandleScope inner(isolate); | 400 HandleScope inner(isolate); |
(...skipping 18 matching lines...) Expand all Loading... |
419 CHECK_NE(string4.location(), string6.location()); | 419 CHECK_NE(string4.location(), string6.location()); |
420 CHECK_NE(number1.location(), number6.location()); | 420 CHECK_NE(number1.location(), number6.location()); |
421 CHECK_NE(string1.location(), string6.location()); | 421 CHECK_NE(string1.location(), string6.location()); |
422 CHECK_EQ(number5.location(), number6.location()); | 422 CHECK_EQ(number5.location(), number6.location()); |
423 CHECK_EQ(string5.location(), string6.location()); | 423 CHECK_EQ(string5.location(), string6.location()); |
424 } | 424 } |
425 } | 425 } |
426 | 426 |
427 } // namespace internal | 427 } // namespace internal |
428 } // namespace v8 | 428 } // namespace v8 |
OLD | NEW |