MCPcopy Create free account
hub / github.com/aiscriptdev/aiscript / start_cycle

Method start_cycle

aiscript-arena/src/metrics.rs:203–232  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

201 }
202
203 pub(crate) fn start_cycle(&self) {
204 let pacing = self.0.pacing.get();
205 let total_gcs = self.0.total_gcs.get();
206 let wakeup_amount = if total_gcs == 0 {
207 // If we have no live `Gc`s, then the root cannot possibly own any data, so we should
208 // sleep for `min_sleep.`
209 pacing.min_sleep as f64
210 } else {
211 // Estimate the amount of external memory that is remembered assuming that each Gc owns
212 // an even share of the external memory.
213 let remembered_external_size_estimate = self.0.remembered_gcs.get() as f64
214 / total_gcs as f64
215 * self.0.total_external_bytes.get() as f64;
216
217 let remembered_size =
218 self.0.remembered_gc_bytes.get() as f64 + remembered_external_size_estimate;
219
220 (remembered_size * pacing.pause_factor).max(pacing.min_sleep as f64)
221 };
222
223 self.0.wakeup_amount.set(wakeup_amount);
224 self.0.allocated_gc_bytes.set(0);
225 self.0.freed_gc_bytes.set(0);
226 self.0.traced_gcs.set(0);
227 self.0.traced_gc_bytes.set(0);
228 self.0.remembered_gcs.set(0);
229 self.0.remembered_gc_bytes.set(0);
230 self.0.allocated_external_bytes.set(0);
231 self.0.freed_external_bytes.set(0);
232 }
233
234 #[inline]
235 pub(crate) fn mark_gc_allocated(&self, bytes: usize) {

Callers 2

newMethod · 0.80
do_collection_innerMethod · 0.80

Calls 2

getMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected