factor/vm/run.cpp

32 lines
600 B
C++
Executable File

#include "master.hpp"
namespace factor
{
void factor_vm::primitive_exit()
{
exit((int)to_fixnum(ctx->pop()));
}
void factor_vm::primitive_nano_count()
{
u64 nanos = nano_count();
if(nanos < last_nano_count)
{
std::cout << "Monotonic counter decreased from 0x";
std::cout << std::hex << last_nano_count;
std::cout << " to 0x" << nanos << "." << std::dec << "\n";
std::cout << "Please report this error.\n";
current_vm()->factorbug();
}
last_nano_count = nanos;
ctx->push(from_unsigned_8(nanos));
}
void factor_vm::primitive_sleep()
{
sleep_nanos(to_unsigned_8(ctx->pop()));
}
}