Original commit description: [LLD] Remove global state in lld/COFF This patch removes globals from the lldCOFF library, by moving globals into a context class (COFFLinkingContext) and passing it around wherever it's needed. See https://lists.llvm.org/pipermail/llvm-dev/2021-June/151184.html for context about removing globals from LLD. I also haven't moved the `driver` or `config` variables yet. Differential Revision: https://reviews.llvm.org/D109634 This reverts commita2fd05ada9. Original commits wereb4fa71eed3ande03c7e367a.
60 lines
1.3 KiB
C++
60 lines
1.3 KiB
C++
//===- Timer.h ----------------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLD_COMMON_TIMER_H
|
|
#define LLD_COMMON_TIMER_H
|
|
|
|
#include "llvm/ADT/DenseMap.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include <assert.h>
|
|
#include <atomic>
|
|
#include <chrono>
|
|
#include <map>
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
namespace lld {
|
|
|
|
class Timer;
|
|
|
|
struct ScopedTimer {
|
|
explicit ScopedTimer(Timer &t);
|
|
|
|
~ScopedTimer();
|
|
|
|
void stop();
|
|
|
|
std::chrono::time_point<std::chrono::high_resolution_clock> startTime;
|
|
|
|
Timer *t = nullptr;
|
|
};
|
|
|
|
class Timer {
|
|
public:
|
|
Timer(llvm::StringRef name, Timer &parent);
|
|
|
|
// Creates the root timer.
|
|
explicit Timer(llvm::StringRef name);
|
|
|
|
void addToTotal(std::chrono::nanoseconds time) { total += time.count(); }
|
|
void print();
|
|
|
|
double millis() const;
|
|
|
|
private:
|
|
void print(int depth, double totalDuration, bool recurse = true) const;
|
|
|
|
std::atomic<std::chrono::nanoseconds::rep> total;
|
|
std::vector<Timer *> children;
|
|
std::string name;
|
|
};
|
|
|
|
} // namespace lld
|
|
|
|
#endif
|