@@ -94,27 +94,47 @@ impl HeapMarkAndSweep for PromiseReactions {
9494impl HeapMarkAndSweep for PromiseHeapData {
9595 fn mark_values ( & self , queues : & mut WorkQueues ) {
9696 self . object_index . mark_values ( queues) ;
97- match self . promise_state {
97+ self . promise_state . mark_values ( queues) ;
98+ }
99+
100+ fn sweep_values ( & mut self , compactions : & CompactionLists ) {
101+ self . object_index . sweep_values ( compactions) ;
102+ self . promise_state . sweep_values ( compactions) ;
103+ }
104+ }
105+
106+ impl HeapMarkAndSweep for PromiseState {
107+ fn mark_values ( & self , queues : & mut WorkQueues ) {
108+ match self {
109+ PromiseState :: Pending {
110+ fulfill_reactions,
111+ reject_reactions,
112+ ..
113+ } => {
114+ fulfill_reactions. mark_values ( queues) ;
115+ reject_reactions. mark_values ( queues) ;
116+ }
98117 PromiseState :: Fulfilled { promise_result }
99118 | PromiseState :: Rejected { promise_result, .. } => {
100119 promise_result. mark_values ( queues) ;
101120 }
102- _ => { }
103121 }
104- self . promise_fulfill_reactions . mark_values ( queues) ;
105- self . promise_reject_reactions . mark_values ( queues) ;
106122 }
107123
108124 fn sweep_values ( & mut self , compactions : & CompactionLists ) {
109- self . object_index . sweep_values ( compactions) ;
110- match & mut self . promise_state {
125+ match self {
126+ PromiseState :: Pending {
127+ fulfill_reactions,
128+ reject_reactions,
129+ ..
130+ } => {
131+ fulfill_reactions. sweep_values ( compactions) ;
132+ reject_reactions. sweep_values ( compactions) ;
133+ }
111134 PromiseState :: Fulfilled { promise_result }
112- | PromiseState :: Rejected { promise_result } => {
135+ | PromiseState :: Rejected { promise_result, .. } => {
113136 promise_result. sweep_values ( compactions) ;
114137 }
115- _ => { }
116138 }
117- self . promise_fulfill_reactions . sweep_values ( compactions) ;
118- self . promise_reject_reactions . sweep_values ( compactions) ;
119139 }
120140}
0 commit comments