File tree Expand file tree Collapse file tree 1 file changed +14
-0
lines changed
Expand file tree Collapse file tree 1 file changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ use crate::upcalls;
44use crate :: utils:: ChunkedVecCollector ;
55use crate :: Ruby ;
66use crate :: RubySlot ;
7+ use mmtk:: memory_manager;
78use mmtk:: scheduler:: GCWork ;
89use mmtk:: scheduler:: GCWorker ;
910use mmtk:: scheduler:: WorkBucketStage ;
@@ -53,6 +54,19 @@ impl Scanning<Ruby> for VMScanning {
5354 mmtk:: memory_manager:: is_mmtk_object( target_object. to_raw_address( ) ) . is_some( ) ,
5455 "Destination is not an MMTk object. Src: {object} dst: {target_object}"
5556 ) ;
57+
58+ debug_assert ! (
59+ // If we are in a moving GC, all objects should be pinned by PinningRegistry.
60+ // If it is requested that target_object be pinned but it is not pinned, then
61+ // it is a bug because it could be moved.
62+ if crate :: mmtk( ) . get_plan( ) . current_gc_may_move_object( ) && pin {
63+ memory_manager:: is_pinned( target_object)
64+ } else {
65+ true
66+ } ,
67+ "Object {object} is trying to pin {target_object}"
68+ ) ;
69+
5670 let forwarded_target = object_tracer. trace_object ( target_object) ;
5771 if forwarded_target != target_object {
5872 trace ! ( " Forwarded target {target_object} -> {forwarded_target}" ) ;
You can’t perform that action at this time.
0 commit comments