OLD | NEW |
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
2 | 2 |
3 #include <stdlib.h> | 3 #include <stdlib.h> |
4 | 4 |
5 #include "v8.h" | 5 #include "v8.h" |
6 | 6 |
7 #include "execution.h" | 7 #include "execution.h" |
8 #include "factory.h" | 8 #include "factory.h" |
9 #include "macro-assembler.h" | 9 #include "macro-assembler.h" |
10 #include "global-handles.h" | 10 #include "global-handles.h" |
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
284 InitializeVM(); | 284 InitializeVM(); |
285 | 285 |
286 v8::HandleScope scope; | 286 v8::HandleScope scope; |
287 const char* name = "Kasper the spunky"; | 287 const char* name = "Kasper the spunky"; |
288 Handle<String> string = FACTORY->NewStringFromAscii(CStrVector(name)); | 288 Handle<String> string = FACTORY->NewStringFromAscii(CStrVector(name)); |
289 CHECK_EQ(StrLength(name), string->length()); | 289 CHECK_EQ(StrLength(name), string->length()); |
290 } | 290 } |
291 | 291 |
292 | 292 |
293 TEST(GlobalHandles) { | 293 TEST(GlobalHandles) { |
| 294 InitializeVM(); |
294 GlobalHandles* global_handles = Isolate::Current()->global_handles(); | 295 GlobalHandles* global_handles = Isolate::Current()->global_handles(); |
295 InitializeVM(); | |
296 | 296 |
297 Handle<Object> h1; | 297 Handle<Object> h1; |
298 Handle<Object> h2; | 298 Handle<Object> h2; |
299 Handle<Object> h3; | 299 Handle<Object> h3; |
300 Handle<Object> h4; | 300 Handle<Object> h4; |
301 | 301 |
302 { | 302 { |
303 HandleScope scope; | 303 HandleScope scope; |
304 | 304 |
305 Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk")); | 305 Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk")); |
(...skipping 26 matching lines...) Expand all Loading... |
332 static bool WeakPointerCleared = false; | 332 static bool WeakPointerCleared = false; |
333 | 333 |
334 static void TestWeakGlobalHandleCallback(v8::Persistent<v8::Value> handle, | 334 static void TestWeakGlobalHandleCallback(v8::Persistent<v8::Value> handle, |
335 void* id) { | 335 void* id) { |
336 if (1234 == reinterpret_cast<intptr_t>(id)) WeakPointerCleared = true; | 336 if (1234 == reinterpret_cast<intptr_t>(id)) WeakPointerCleared = true; |
337 handle.Dispose(); | 337 handle.Dispose(); |
338 } | 338 } |
339 | 339 |
340 | 340 |
341 TEST(WeakGlobalHandlesScavenge) { | 341 TEST(WeakGlobalHandlesScavenge) { |
| 342 InitializeVM(); |
342 GlobalHandles* global_handles = Isolate::Current()->global_handles(); | 343 GlobalHandles* global_handles = Isolate::Current()->global_handles(); |
343 InitializeVM(); | |
344 | 344 |
345 WeakPointerCleared = false; | 345 WeakPointerCleared = false; |
346 | 346 |
347 Handle<Object> h1; | 347 Handle<Object> h1; |
348 Handle<Object> h2; | 348 Handle<Object> h2; |
349 | 349 |
350 { | 350 { |
351 HandleScope scope; | 351 HandleScope scope; |
352 | 352 |
353 Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk")); | 353 Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk")); |
(...skipping 16 matching lines...) Expand all Loading... |
370 CHECK(!WeakPointerCleared); | 370 CHECK(!WeakPointerCleared); |
371 CHECK(!global_handles->IsNearDeath(h2.location())); | 371 CHECK(!global_handles->IsNearDeath(h2.location())); |
372 CHECK(!global_handles->IsNearDeath(h1.location())); | 372 CHECK(!global_handles->IsNearDeath(h1.location())); |
373 | 373 |
374 global_handles->Destroy(h1.location()); | 374 global_handles->Destroy(h1.location()); |
375 global_handles->Destroy(h2.location()); | 375 global_handles->Destroy(h2.location()); |
376 } | 376 } |
377 | 377 |
378 | 378 |
379 TEST(WeakGlobalHandlesMark) { | 379 TEST(WeakGlobalHandlesMark) { |
| 380 InitializeVM(); |
380 GlobalHandles* global_handles = Isolate::Current()->global_handles(); | 381 GlobalHandles* global_handles = Isolate::Current()->global_handles(); |
381 InitializeVM(); | |
382 | 382 |
383 WeakPointerCleared = false; | 383 WeakPointerCleared = false; |
384 | 384 |
385 Handle<Object> h1; | 385 Handle<Object> h1; |
386 Handle<Object> h2; | 386 Handle<Object> h2; |
387 | 387 |
388 { | 388 { |
389 HandleScope scope; | 389 HandleScope scope; |
390 | 390 |
391 Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk")); | 391 Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk")); |
(...skipping 17 matching lines...) Expand all Loading... |
409 | 409 |
410 CHECK((*h1)->IsString()); | 410 CHECK((*h1)->IsString()); |
411 | 411 |
412 CHECK(WeakPointerCleared); | 412 CHECK(WeakPointerCleared); |
413 CHECK(!GlobalHandles::IsNearDeath(h1.location())); | 413 CHECK(!GlobalHandles::IsNearDeath(h1.location())); |
414 | 414 |
415 global_handles->Destroy(h1.location()); | 415 global_handles->Destroy(h1.location()); |
416 } | 416 } |
417 | 417 |
418 TEST(DeleteWeakGlobalHandle) { | 418 TEST(DeleteWeakGlobalHandle) { |
| 419 InitializeVM(); |
419 GlobalHandles* global_handles = Isolate::Current()->global_handles(); | 420 GlobalHandles* global_handles = Isolate::Current()->global_handles(); |
420 InitializeVM(); | |
421 | 421 |
422 WeakPointerCleared = false; | 422 WeakPointerCleared = false; |
423 | 423 |
424 Handle<Object> h; | 424 Handle<Object> h; |
425 | 425 |
426 { | 426 { |
427 HandleScope scope; | 427 HandleScope scope; |
428 | 428 |
429 Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk")); | 429 Handle<Object> i = FACTORY->NewStringFromAscii(CStrVector("fisk")); |
430 h = global_handles->Create(*i); | 430 h = global_handles->Create(*i); |
(...skipping 889 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1320 CHECK(helper.b_found()); | 1320 CHECK(helper.b_found()); |
1321 } | 1321 } |
1322 // ...but is now unreachable. | 1322 // ...but is now unreachable. |
1323 { | 1323 { |
1324 HeapIteratorTestHelper helper(a_saved, *b); | 1324 HeapIteratorTestHelper helper(a_saved, *b); |
1325 helper.IterateHeap(HeapIterator::kFilterUnreachable); | 1325 helper.IterateHeap(HeapIterator::kFilterUnreachable); |
1326 CHECK(!helper.a_found()); | 1326 CHECK(!helper.a_found()); |
1327 CHECK(helper.b_found()); | 1327 CHECK(helper.b_found()); |
1328 } | 1328 } |
1329 } | 1329 } |
OLD | NEW |