/vm/run.cpp

http://github.com/abeaumont/factor · C++ · 37 lines · 31 code · 6 blank · 0 comment · 1 complexity · 881467d084549b76ff716b9db746e65c MD5 · raw file

  1. #include "master.hpp"
  2. namespace factor
  3. {
  4. void factor_vm::primitive_exit()
  5. {
  6. exit((int)to_fixnum(ctx->pop()));
  7. }
  8. void exit(int status)
  9. {
  10. factor_vm::close_console();
  11. ::exit(status);
  12. }
  13. void factor_vm::primitive_nano_count()
  14. {
  15. u64 nanos = nano_count();
  16. if(nanos < last_nano_count)
  17. {
  18. std::cout << "Monotonic counter decreased from 0x";
  19. std::cout << std::hex << last_nano_count;
  20. std::cout << " to 0x" << nanos << "." << std::dec << "\n";
  21. std::cout << "Please report this error.\n";
  22. current_vm()->factorbug();
  23. }
  24. last_nano_count = nanos;
  25. ctx->push(from_unsigned_8(nanos));
  26. }
  27. void factor_vm::primitive_sleep()
  28. {
  29. sleep_nanos(to_unsigned_8(ctx->pop()));
  30. }
  31. }