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

Side by Side Diff: test/cctest/test-mark-compact.cc

Issue 12716010: Added a version of the v8::HandleScope constructor with an Isolate and use that consistently. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fixed rest Created 7 years, 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 29 matching lines...) Expand all
40 #include "global-handles.h" 40 #include "global-handles.h"
41 #include "snapshot.h" 41 #include "snapshot.h"
42 #include "cctest.h" 42 #include "cctest.h"
43 43
44 using namespace v8::internal; 44 using namespace v8::internal;
45 45
46 static v8::Persistent<v8::Context> env; 46 static v8::Persistent<v8::Context> env;
47 47
48 static void InitializeVM() { 48 static void InitializeVM() {
49 if (env.IsEmpty()) env = v8::Context::New(); 49 if (env.IsEmpty()) env = v8::Context::New();
50 v8::HandleScope scope;
51 env->Enter(); 50 env->Enter();
52 } 51 }
53 52
54 53
55 TEST(MarkingDeque) { 54 TEST(MarkingDeque) {
56 InitializeVM(); 55 InitializeVM();
57 int mem_size = 20 * kPointerSize; 56 int mem_size = 20 * kPointerSize;
58 byte* mem = NewArray<byte>(20*kPointerSize); 57 byte* mem = NewArray<byte>(20*kPointerSize);
59 Address low = reinterpret_cast<Address>(mem); 58 Address low = reinterpret_cast<Address>(mem);
60 Address high = low + mem_size; 59 Address high = low + mem_size;
(...skipping 24 matching lines...) Expand all
85 if (FLAG_never_compact) return; 84 if (FLAG_never_compact) return;
86 85
87 // Ensure that we get a compacting collection so that objects are promoted 86 // Ensure that we get a compacting collection so that objects are promoted
88 // from new space. 87 // from new space.
89 FLAG_gc_global = true; 88 FLAG_gc_global = true;
90 FLAG_always_compact = true; 89 FLAG_always_compact = true;
91 HEAP->ConfigureHeap(2*256*KB, 8*MB, 8*MB); 90 HEAP->ConfigureHeap(2*256*KB, 8*MB, 8*MB);
92 91
93 InitializeVM(); 92 InitializeVM();
94 93
95 v8::HandleScope sc; 94 v8::HandleScope sc(env->GetIsolate());
96 95
97 // Allocate a fixed array in the new space. 96 // Allocate a fixed array in the new space.
98 int array_size = 97 int array_size =
99 (Page::kMaxNonCodeHeapObjectSize - FixedArray::kHeaderSize) / 98 (Page::kMaxNonCodeHeapObjectSize - FixedArray::kHeaderSize) /
100 (kPointerSize * 4); 99 (kPointerSize * 4);
101 Object* obj = HEAP->AllocateFixedArray(array_size)->ToObjectChecked(); 100 Object* obj = HEAP->AllocateFixedArray(array_size)->ToObjectChecked();
102 101
103 Handle<FixedArray> array(FixedArray::cast(obj)); 102 Handle<FixedArray> array(FixedArray::cast(obj));
104 103
105 // Array should be in the new space. 104 // Array should be in the new space.
106 CHECK(HEAP->InSpace(*array, NEW_SPACE)); 105 CHECK(HEAP->InSpace(*array, NEW_SPACE));
107 106
108 // Call the m-c collector, so array becomes an old object. 107 // Call the m-c collector, so array becomes an old object.
109 HEAP->CollectGarbage(OLD_POINTER_SPACE); 108 HEAP->CollectGarbage(OLD_POINTER_SPACE);
110 109
111 // Array now sits in the old space 110 // Array now sits in the old space
112 CHECK(HEAP->InSpace(*array, OLD_POINTER_SPACE)); 111 CHECK(HEAP->InSpace(*array, OLD_POINTER_SPACE));
113 } 112 }
114 113
115 114
116 TEST(NoPromotion) { 115 TEST(NoPromotion) {
117 HEAP->ConfigureHeap(2*256*KB, 8*MB, 8*MB); 116 HEAP->ConfigureHeap(2*256*KB, 8*MB, 8*MB);
118 117
119 // Test the situation that some objects in new space are promoted to 118 // Test the situation that some objects in new space are promoted to
120 // the old space 119 // the old space
121 InitializeVM(); 120 InitializeVM();
122 121
123 v8::HandleScope sc; 122 v8::HandleScope sc(env->GetIsolate());
124 123
125 // Do a mark compact GC to shrink the heap. 124 // Do a mark compact GC to shrink the heap.
126 HEAP->CollectGarbage(OLD_POINTER_SPACE); 125 HEAP->CollectGarbage(OLD_POINTER_SPACE);
127 126
128 // Allocate a big Fixed array in the new space. 127 // Allocate a big Fixed array in the new space.
129 int max_size = 128 int max_size =
130 Min(Page::kMaxNonCodeHeapObjectSize, HEAP->MaxObjectSizeInNewSpace()); 129 Min(Page::kMaxNonCodeHeapObjectSize, HEAP->MaxObjectSizeInNewSpace());
131 130
132 int length = (max_size - FixedArray::kHeaderSize) / (2*kPointerSize); 131 int length = (max_size - FixedArray::kHeaderSize) / (2*kPointerSize);
133 Object* obj = i::Isolate::Current()->heap()->AllocateFixedArray(length)-> 132 Object* obj = i::Isolate::Current()->heap()->AllocateFixedArray(length)->
(...skipping 17 matching lines...) Expand all
151 } 150 }
152 151
153 // Call mark compact GC, and it should pass. 152 // Call mark compact GC, and it should pass.
154 HEAP->CollectGarbage(OLD_POINTER_SPACE); 153 HEAP->CollectGarbage(OLD_POINTER_SPACE);
155 } 154 }
156 155
157 156
158 TEST(MarkCompactCollector) { 157 TEST(MarkCompactCollector) {
159 InitializeVM(); 158 InitializeVM();
160 159
161 v8::HandleScope sc; 160 v8::HandleScope sc(env->GetIsolate());
162 // call mark-compact when heap is empty 161 // call mark-compact when heap is empty
163 HEAP->CollectGarbage(OLD_POINTER_SPACE); 162 HEAP->CollectGarbage(OLD_POINTER_SPACE);
164 163
165 // keep allocating garbage in new space until it fails 164 // keep allocating garbage in new space until it fails
166 const int ARRAY_SIZE = 100; 165 const int ARRAY_SIZE = 100;
167 Object* array; 166 Object* array;
168 MaybeObject* maybe_array; 167 MaybeObject* maybe_array;
169 do { 168 do {
170 maybe_array = HEAP->AllocateFixedArray(ARRAY_SIZE); 169 maybe_array = HEAP->AllocateFixedArray(ARRAY_SIZE);
171 } while (maybe_array->ToObject(&array)); 170 } while (maybe_array->ToObject(&array));
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 NumberOfWeakCalls++; 312 NumberOfWeakCalls++;
314 handle.Dispose(isolate); 313 handle.Dispose(isolate);
315 } 314 }
316 315
317 TEST(ObjectGroups) { 316 TEST(ObjectGroups) {
318 FLAG_incremental_marking = false; 317 FLAG_incremental_marking = false;
319 InitializeVM(); 318 InitializeVM();
320 GlobalHandles* global_handles = Isolate::Current()->global_handles(); 319 GlobalHandles* global_handles = Isolate::Current()->global_handles();
321 320
322 NumberOfWeakCalls = 0; 321 NumberOfWeakCalls = 0;
323 v8::HandleScope handle_scope; 322 v8::HandleScope handle_scope(env->GetIsolate());
324 323
325 Handle<Object> g1s1 = 324 Handle<Object> g1s1 =
326 global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked()); 325 global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked());
327 Handle<Object> g1s2 = 326 Handle<Object> g1s2 =
328 global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked()); 327 global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked());
329 Handle<Object> g1c1 = 328 Handle<Object> g1c1 =
330 global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked()); 329 global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked());
331 global_handles->MakeWeak(g1s1.location(), 330 global_handles->MakeWeak(g1s1.location(),
332 reinterpret_cast<void*>(1234), 331 reinterpret_cast<void*>(1234),
333 NULL, 332 NULL,
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 448
450 private: 449 private:
451 bool has_been_disposed_; 450 bool has_been_disposed_;
452 }; 451 };
453 452
454 453
455 TEST(EmptyObjectGroups) { 454 TEST(EmptyObjectGroups) {
456 InitializeVM(); 455 InitializeVM();
457 GlobalHandles* global_handles = Isolate::Current()->global_handles(); 456 GlobalHandles* global_handles = Isolate::Current()->global_handles();
458 457
459 v8::HandleScope handle_scope; 458 v8::HandleScope handle_scope(env->GetIsolate());
460 459
461 Handle<Object> object = 460 Handle<Object> object =
462 global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked()); 461 global_handles->Create(HEAP->AllocateFixedArray(1)->ToObjectChecked());
463 462
464 TestRetainedObjectInfo info; 463 TestRetainedObjectInfo info;
465 global_handles->AddObjectGroup(NULL, 0, &info); 464 global_handles->AddObjectGroup(NULL, 0, &info);
466 ASSERT(info.has_been_disposed()); 465 ASSERT(info.has_been_disposed());
467 466
468 global_handles->AddImplicitReferences( 467 global_handles->AddImplicitReferences(
469 Handle<HeapObject>::cast(object).location(), NULL, 0); 468 Handle<HeapObject>::cast(object).location(), NULL, 0);
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 if (v8::internal::Snapshot::IsEnabled()) { 565 if (v8::internal::Snapshot::IsEnabled()) {
567 CHECK_LE(delta, 2900 * 1024); 566 CHECK_LE(delta, 2900 * 1024);
568 } else { 567 } else {
569 CHECK_LE(delta, 3400 * 1024); 568 CHECK_LE(delta, 3400 * 1024);
570 } 569 }
571 } 570 }
572 } 571 }
573 } 572 }
574 573
575 #endif // __linux__ and !USE_SIMULATOR 574 #endif // __linux__ and !USE_SIMULATOR
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698