p.gcw.dispose()
}
+ // Account for time.
+ duration := nanotime() - startTime
+ switch p.gcMarkWorkerMode {
+ case gcMarkWorkerDedicatedMode:
+ xaddint64(&gcController.dedicatedMarkTime, duration)
+ xaddint64(&gcController.dedicatedMarkWorkersNeeded, 1)
+ case gcMarkWorkerFractionalMode:
+ xaddint64(&gcController.fractionalMarkTime, duration)
+ xaddint64(&gcController.fractionalMarkWorkersNeeded, 1)
+ case gcMarkWorkerIdleMode:
+ xaddint64(&gcController.idleMarkTime, duration)
+ }
+
// Was this the last worker and did we run out
// of work?
incnwait := xadd(&work.nwait, +1)
if incnwait == work.nproc && !gcMarkWorkAvailable(nil) {
gcMarkDone()
}
-
- duration := nanotime() - startTime
- switch p.gcMarkWorkerMode {
- case gcMarkWorkerDedicatedMode:
- xaddint64(&gcController.dedicatedMarkTime, duration)
- xaddint64(&gcController.dedicatedMarkWorkersNeeded, 1)
- case gcMarkWorkerFractionalMode:
- xaddint64(&gcController.fractionalMarkTime, duration)
- xaddint64(&gcController.fractionalMarkWorkersNeeded, 1)
- case gcMarkWorkerIdleMode:
- xaddint64(&gcController.idleMarkTime, duration)
- }
}
}