void factor_vm::primitive_nano_count()
{
- box_unsigned_8(nano_count());
+ u64 nanos = nano_count();
+ if(nanos < last_nano_count) critical_error("Monotonic counter decreased",0);
+ last_nano_count = nanos;
+ box_unsigned_8(nanos);
}
void factor_vm::primitive_sleep()
/* Incrementing object counter for identity hashing */
cell object_counter;
+ /* Sanity check to ensure that monotonic counter doesn't
+ decrease */
+ u64 last_nano_count;
+
// contexts
void reset_datastack();
void reset_retainstack();