@@ -416,6 +416,8 @@ impl<VM: VMBinding> CreateSpecificPlanArgs<'_, VM> {
416416 zeroed,
417417 permission_exec,
418418 vmrequest,
419+ unlog_allocated_object : self . constraints . unlog_allocated_object ,
420+ unlog_traced_object : self . constraints . unlog_traced_object ,
419421 global_side_metadata_specs : self . global_side_metadata_specs . clone ( ) ,
420422 vm_map : self . global_args . vm_map ,
421423 mmapper : self . global_args . mmapper ,
@@ -517,6 +519,28 @@ impl<VM: VMBinding> BasePlan<VM> {
517519 self . vm_space . release ( ) ;
518520 }
519521
522+ pub fn clear_side_log_bits ( & self ) {
523+ #[ cfg( feature = "code_space" ) ]
524+ self . code_space . clear_side_log_bits ( ) ;
525+ #[ cfg( feature = "code_space" ) ]
526+ self . code_lo_space . clear_side_log_bits ( ) ;
527+ #[ cfg( feature = "ro_space" ) ]
528+ self . ro_space . clear_side_log_bits ( ) ;
529+ #[ cfg( feature = "vm_space" ) ]
530+ self . vm_space . clear_side_log_bits ( ) ;
531+ }
532+
533+ pub fn set_side_log_bits ( & self ) {
534+ #[ cfg( feature = "code_space" ) ]
535+ self . code_space . set_side_log_bits ( ) ;
536+ #[ cfg( feature = "code_space" ) ]
537+ self . code_lo_space . set_side_log_bits ( ) ;
538+ #[ cfg( feature = "ro_space" ) ]
539+ self . ro_space . set_side_log_bits ( ) ;
540+ #[ cfg( feature = "vm_space" ) ]
541+ self . vm_space . set_side_log_bits ( ) ;
542+ }
543+
520544 pub fn end_of_gc ( & mut self , _tls : VMWorkerThread ) {
521545 // Do nothing here. None of the spaces needs end_of_gc.
522546 }
@@ -584,6 +608,7 @@ pub struct CommonPlan<VM: VMBinding> {
584608
585609impl < VM : VMBinding > CommonPlan < VM > {
586610 pub fn new ( mut args : CreateSpecificPlanArgs < VM > ) -> CommonPlan < VM > {
611+ let needs_log_bit = args. constraints . needs_log_bit ;
587612 CommonPlan {
588613 immortal : ImmortalSpace :: new ( args. get_space_args (
589614 "immortal" ,
@@ -594,6 +619,7 @@ impl<VM: VMBinding> CommonPlan<VM> {
594619 los : LargeObjectSpace :: new (
595620 args. get_space_args ( "los" , true , false , VMRequest :: discontiguous ( ) ) ,
596621 false ,
622+ needs_log_bit,
597623 ) ,
598624 nonmoving : Self :: new_nonmoving_space ( & mut args) ,
599625 base : BasePlan :: new ( args) ,
@@ -621,6 +647,18 @@ impl<VM: VMBinding> CommonPlan<VM> {
621647 self . base . release ( tls, full_heap)
622648 }
623649
650+ pub fn clear_side_log_bits ( & self ) {
651+ self . immortal . clear_side_log_bits ( ) ;
652+ self . los . clear_side_log_bits ( ) ;
653+ self . base . clear_side_log_bits ( ) ;
654+ }
655+
656+ pub fn set_side_log_bits ( & self ) {
657+ self . immortal . set_side_log_bits ( ) ;
658+ self . los . set_side_log_bits ( ) ;
659+ self . base . set_side_log_bits ( ) ;
660+ }
661+
624662 pub fn end_of_gc ( & mut self , tls : VMWorkerThread ) {
625663 self . end_of_gc_nonmoving_space ( ) ;
626664 self . base . end_of_gc ( tls) ;
@@ -648,7 +686,6 @@ impl<VM: VMBinding> CommonPlan<VM> {
648686 NonMovingSpace :: new(
649687 space_args,
650688 crate :: policy:: immix:: ImmixSpaceArgs {
651- unlog_object_when_traced: false ,
652689 #[ cfg( feature = "vo_bit" ) ]
653690 mixed_age: false ,
654691 never_move_objects: true ,
0 commit comments