| 1738 | } |
| 1739 | |
| 1740 | txMachine* fxPrepareMachine(txCreation* creation, txPreparation* preparation, txString name, void* context, void* archive) |
| 1741 | { |
| 1742 | txMachine _root; |
| 1743 | txMachine* root = &_root; |
| 1744 | if ((preparation->version[0] != XS_MAJOR_VERSION) || (preparation->version[1] != XS_MINOR_VERSION)) |
| 1745 | return C_NULL; |
| 1746 | c_memset(root, 0, sizeof(txMachine)); |
| 1747 | root->preparation = preparation; |
| 1748 | root->keyArray = preparation->keys; |
| 1749 | root->colors = preparation->colors; |
| 1750 | root->keyCount = (txID)preparation->keyCount + (txID)preparation->creation.initialKeyCount; |
| 1751 | root->keyIndex = (txID)preparation->keyCount; |
| 1752 | root->nameModulo = preparation->nameModulo; |
| 1753 | root->nameTable = preparation->names; |
| 1754 | root->symbolModulo = preparation->symbolModulo; |
| 1755 | root->symbolTable = preparation->symbols; |
| 1756 | |
| 1757 | root->stack = &preparation->stack[0]; |
| 1758 | root->stackBottom = &preparation->stack[0]; |
| 1759 | root->stackTop = &preparation->stack[preparation->stackCount]; |
| 1760 | |
| 1761 | root->firstHeap = &preparation->heap[0]; |
| 1762 | root->freeHeap = &preparation->heap[preparation->heapCount - 1]; |
| 1763 | root->aliasCount = (txID)preparation->aliasCount; |
| 1764 | |
| 1765 | root->profileID = (txID)preparation->profileID; |
| 1766 | |
| 1767 | if (!creation) |
| 1768 | creation = &preparation->creation; |
| 1769 | return fxCloneMachine(creation, root, name, context); |
| 1770 | } |
| 1771 | |
| 1772 | void fxShareMachine(txMachine* the) |
| 1773 | { |
no test coverage detected