| 407 | } |
| 408 | |
| 409 | bool |
| 410 | XpackDynamicTable::update_maximum_size(uint32_t new_max_size) |
| 411 | { |
| 412 | uint32_t used = this->_maximum_size - this->_available; |
| 413 | if (used < new_max_size) { |
| 414 | this->_maximum_size = new_max_size; |
| 415 | this->_available = new_max_size - used; |
| 416 | this->_expand_storage_size(new_max_size); |
| 417 | return true; |
| 418 | } |
| 419 | |
| 420 | // used is larger than or equal to new_max_size. This means that _maximum_size |
| 421 | // is shrinking and we need to evict entries to get the used space below |
| 422 | // new_max_size. |
| 423 | bool ret = this->_make_space(used - new_max_size); |
| 424 | // Size update must succeed. |
| 425 | if (ret) { |
| 426 | this->_available = new_max_size - (this->_maximum_size - this->_available); |
| 427 | this->_maximum_size = new_max_size; |
| 428 | } |
| 429 | return ret; |
| 430 | } |
| 431 | |
| 432 | uint32_t |
| 433 | XpackDynamicTable::size() const |
no test coverage detected