@ -20,9 +20,7 @@ using base_time_point = std::chrono::time_point<base_timer>;
class StandardWallClock final : public WallClock {
public :
explicit StandardWallClock ( u64 emulated_cpu_frequency_ , u64 emulated_clock_frequency_ )
: WallClock ( emulated_cpu_frequency_ , emulated_clock_frequency_ , false ) ,
emulated_clock_factor { GetFixedPoint64Factor ( emulated_clock_frequency , 1000000000 ) } ,
emulated_cpu_factor { GetFixedPoint64Factor ( emulated_cpu_frequency , 1000000000 ) } {
: WallClock ( emulated_cpu_frequency_ , emulated_clock_frequency_ , false ) {
start_time = base_timer : : now ( ) ;
}
@ -45,11 +43,16 @@ public:
}
u64 GetClockCycles ( ) override {
return MultiplyHigh ( GetTimeNS ( ) . count ( ) , emulated_clock_factor ) ;
std : : chrono : : nanoseconds time_now = GetTimeNS ( ) ;
const u128 temporary =
Common : : Multiply64Into128 ( time_now . count ( ) , emulated_clock_frequency ) ;
return Common : : Divide128On32 ( temporary , 1000000000 ) . first ;
}
u64 GetCPUCycles ( ) override {
return MultiplyHigh ( GetTimeNS ( ) . count ( ) , emulated_cpu_factor ) ;
std : : chrono : : nanoseconds time_now = GetTimeNS ( ) ;
const u128 temporary = Common : : Multiply64Into128 ( time_now . count ( ) , emulated_cpu_frequency ) ;
return Common : : Divide128On32 ( temporary , 1000000000 ) . first ;
}
void Pause ( [[maybe_unused]] bool is_paused ) override {
@ -58,8 +61,6 @@ public:
private :
base_time_point start_time ;
const u64 emulated_clock_factor ;
const u64 emulated_cpu_factor ;
} ;
# ifdef ARCHITECTURE_x86_64