(P: ParseState)
| 645 | } |
| 646 | |
| 647 | function checkBudget(P: ParseState): void { |
| 648 | P.nodeCount++ |
| 649 | if (P.nodeCount > MAX_NODES) { |
| 650 | P.aborted = true |
| 651 | throw new Error('budget') |
| 652 | } |
| 653 | if ((P.nodeCount & 0x7f) === 0 && performance.now() > P.deadline) { |
| 654 | P.aborted = true |
| 655 | throw new Error('timeout') |
| 656 | } |
| 657 | } |
| 658 | |
| 659 | /** Build a node. Slices text from source by byte range via char-index lookup. */ |
| 660 | function mk( |