bool Squirrel::Resume(int suspend) { assert(!this->crashed); /* Did we use more operations than we should have in the * previous tick? If so, subtract that from the current run. */ if (this->overdrawn_ops > 0 && suspend > 0) { this->overdrawn_ops -= suspend; /* Do we need to wait even more? */ if (this->overdrawn_ops >= 0) return true; /* We can now only run whatever is "left". */ suspend = -this->overdrawn_ops; } this->crashed = !sq_resumecatch(this->vm, suspend); this->overdrawn_ops = -this->vm->_ops_till_suspend; return this->vm->_suspended != 0; }
bool Squirrel::Resume(int suspend) { assert(!this->crashed); this->crashed = !sq_resumecatch(this->vm, suspend); return this->vm->_suspended != 0; }