src/vs/workbench/services/timer/electron-sandbox/timerService.ts/didUseCachedData
export function didUseCachedData(productService: IProductService, storageService: IStorageService, environmentService: INativeWorkbenchEnvironmentService): boolean {
	// browser code loading: only a guess based on
	// this being the first start with the commit
	// or subsequent
	if (isPreferringBrowserCodeLoad) {
		if (typeof _didUseCachedData !== 'boolean') {
			if (!environmentService.configuration.codeCachePath || !productService.commit) {
				_didUseCachedData = false; // we only produce cached data whith commit and code cache path
			} else if (storageService.get(lastRunningCommitStorageKey, StorageScope.GLOBAL) === productService.commit) {
				_didUseCachedData = true; // subsequent start on same commit, assume cached data is there
			} else {
				storageService.store(lastRunningCommitStorageKey, productService.commit, StorageScope.GLOBAL, StorageTarget.MACHINE);
				_didUseCachedData = false; // first time start on commit, assume cached data is not yet there
			}
		}
		return _didUseCachedData;
	}
	// node.js code loading: We surely don't use cached data
	// when we don't tell the loader to do so
	if (!Boolean((<any>window).require.getConfig().nodeCachedData)) {
		return false;
	}
	// There are loader events that signal if cached data was missing, rejected,
	// or used. The former two mean no cached data.
	let cachedDataFound = 0;
	for (const event of require.getStats()) {
		switch (event.type) {
			case LoaderEventType.CachedDataRejected:
				return false;
			case LoaderEventType.CachedDataFound:
				cachedDataFound += 1;
				break;
		}
	}
	return cachedDataFound > 0;
}