| 123456789101112131415161718192021222324252627282930313233343536373839 | "use strict";// This files implements the calculation of the offset between the global monotonic clock and UNIX time. This value is// known as |t1| in the calculation of "time origin timestamp" in the spec. This value needs to be calculated once and// can be used in all subsequent Performance instances.//// However, if the clock is not fast enough, the export is undefined to signify that we should use Date.now() to get the// time origin timestamp with millisecond accuracy, per spec.const { getGlobalMonotonicClockMS } = require("./global-monotonic-clock");const clockIsAccurate = require("./clock-is-accurate");// This function assumes the clock is accurate.function calculateClockOffset() {  const start = Date.now();  let cur = start;  // Limit the iterations, just in case we're running in an environment where Date.now() has been mocked and is  // constant.  for (let i = 0; i < 1e6 && cur === start; i++) {    cur = Date.now();  }  // At this point |cur| "just" became equal to the next millisecond -- the unseen digits after |cur| are approximately  // all 0, and |cur| is the closest to the actual value of the UNIX time. Now, get the current global monotonic clock  // value and do the remaining calculations.  return cur - getGlobalMonotonicClockMS();}if (clockIsAccurate) {  // Warm up the function.  calculateClockOffset();  calculateClockOffset();  calculateClockOffset();  module.exports = calculateClockOffset;} else {  module.exports = undefined;}
 |