| 404 | } |
| 405 | |
| 406 | void CodeBuilder::removeNodes(CBNode* first, CBNode* last) noexcept { |
| 407 | if (first == last) { |
| 408 | removeNode(first); |
| 409 | return; |
| 410 | } |
| 411 | |
| 412 | CBNode* prev = first->_prev; |
| 413 | CBNode* next = last->_next; |
| 414 | |
| 415 | if (_firstNode == first) |
| 416 | _firstNode = next; |
| 417 | else |
| 418 | prev->_next = next; |
| 419 | |
| 420 | if (_lastNode == last) |
| 421 | _lastNode = prev; |
| 422 | else |
| 423 | next->_prev = prev; |
| 424 | |
| 425 | CBNode* node = first; |
| 426 | for (;;) { |
| 427 | CBNode* next = node->getNext(); |
| 428 | ASMJIT_ASSERT(next != nullptr); |
| 429 | |
| 430 | node->_prev = nullptr; |
| 431 | node->_next = nullptr; |
| 432 | |
| 433 | if (_cursor == node) |
| 434 | _cursor = prev; |
| 435 | CodeBuilder_nodeRemoved(this, node); |
| 436 | |
| 437 | if (node == last) |
| 438 | break; |
| 439 | node = next; |
| 440 | } |
| 441 | } |
| 442 | |
| 443 | CBNode* CodeBuilder::setCursor(CBNode* node) noexcept { |
| 444 | CBNode* old = _cursor; |
nothing calls this directly
no test coverage detected