2009-05-02 05:04:19 -04:00
|
|
|
#include "master.hpp"
|
|
|
|
|
2009-05-04 02:46:13 -04:00
|
|
|
namespace factor
|
|
|
|
{
|
|
|
|
|
2009-09-27 14:42:18 -04:00
|
|
|
void factor_vm::primitive_exit()
|
2009-05-02 05:04:19 -04:00
|
|
|
{
|
2010-01-24 08:17:18 -05:00
|
|
|
exit((int)to_fixnum(ctx->pop()));
|
2009-05-02 05:04:19 -04:00
|
|
|
}
|
|
|
|
|
2009-11-18 16:58:48 -05:00
|
|
|
void factor_vm::primitive_nano_count()
|
2009-11-18 05:20:05 -05:00
|
|
|
{
|
2009-12-14 02:09:04 -05:00
|
|
|
u64 nanos = nano_count();
|
2010-08-02 20:50:34 -04:00
|
|
|
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();
|
2010-08-01 19:14:20 -04:00
|
|
|
}
|
2009-12-14 02:09:04 -05:00
|
|
|
last_nano_count = nanos;
|
2009-12-18 16:59:56 -05:00
|
|
|
ctx->push(from_unsigned_8(nanos));
|
2009-11-18 05:20:05 -05:00
|
|
|
}
|
|
|
|
|
2009-09-27 14:42:18 -04:00
|
|
|
void factor_vm::primitive_sleep()
|
2009-05-02 05:04:19 -04:00
|
|
|
{
|
2009-12-18 16:59:56 -05:00
|
|
|
sleep_nanos(to_unsigned_8(ctx->pop()));
|
2009-05-02 05:04:19 -04:00
|
|
|
}
|
|
|
|
|
2009-05-04 02:46:13 -04:00
|
|
|
}
|