382 // not scanned as roots; in this case, the caller must be arranging to
383 // scan the younger generations itself. (For example, a generation might
384 // explicitly mark reachable objects in younger generations, to avoid
385 // excess storage retention.)
386 // The "so" argument determines which of the roots
387 // the closure is applied to:
388 // "SO_None" does none;
389 enum ScanningOption {
390 SO_None = 0x0,
391 SO_AllCodeCache = 0x8,
392 SO_ScavengeCodeCache = 0x10
393 };
394
395 private:
396 void process_roots(StrongRootsScope* scope,
397 ScanningOption so,
398 OopClosure* strong_roots,
399 OopClosure* weak_roots,
400 CLDClosure* strong_cld_closure,
401 CLDClosure* weak_cld_closure,
402 CodeBlobClosure* code_roots);
403
404 public:
405 static const bool StrongAndWeakRoots = false;
406 static const bool StrongRootsOnly = true;
407
408 void gen_process_roots(StrongRootsScope* scope,
409 GenerationType type,
410 bool young_gen_as_roots,
411 ScanningOption so,
412 bool only_strong_roots,
413 OopsInGenClosure* not_older_gens,
414 OopsInGenClosure* older_gens,
415 CLDClosure* cld_closure);
416
417 // Apply "root_closure" to all the weak roots of the system.
418 // These include JNI weak roots, string table,
419 // and referents of reachable weak refs.
420 void gen_process_weak_roots(OopClosure* root_closure);
421
422 // Set the saved marks of generations, if that makes sense.
|
382 // not scanned as roots; in this case, the caller must be arranging to
383 // scan the younger generations itself. (For example, a generation might
384 // explicitly mark reachable objects in younger generations, to avoid
385 // excess storage retention.)
386 // The "so" argument determines which of the roots
387 // the closure is applied to:
388 // "SO_None" does none;
389 enum ScanningOption {
390 SO_None = 0x0,
391 SO_AllCodeCache = 0x8,
392 SO_ScavengeCodeCache = 0x10
393 };
394
395 private:
396 void process_roots(StrongRootsScope* scope,
397 ScanningOption so,
398 OopClosure* strong_roots,
399 OopClosure* weak_roots,
400 CLDClosure* strong_cld_closure,
401 CLDClosure* weak_cld_closure,
402 CodeBlobToOopClosure* code_roots);
403
404 public:
405 static const bool StrongAndWeakRoots = false;
406 static const bool StrongRootsOnly = true;
407
408 void gen_process_roots(StrongRootsScope* scope,
409 GenerationType type,
410 bool young_gen_as_roots,
411 ScanningOption so,
412 bool only_strong_roots,
413 OopsInGenClosure* not_older_gens,
414 OopsInGenClosure* older_gens,
415 CLDClosure* cld_closure);
416
417 // Apply "root_closure" to all the weak roots of the system.
418 // These include JNI weak roots, string table,
419 // and referents of reachable weak refs.
420 void gen_process_weak_roots(OopClosure* root_closure);
421
422 // Set the saved marks of generations, if that makes sense.
|