| 1770 | } |
| 1771 | |
| 1772 | void fxShareMachine(txMachine* the) |
| 1773 | { |
| 1774 | if (!(the->shared)) { |
| 1775 | #ifdef mxDebug |
| 1776 | fxLogout(the); |
| 1777 | #endif |
| 1778 | { |
| 1779 | txSlot* realm = mxModuleInstanceInternal(mxProgram.value.reference)->value.module.realm; |
| 1780 | txSlot* modules = mxOwnModules(realm)->value.reference; |
| 1781 | txSlot* module = modules->next; |
| 1782 | while (module) { |
| 1783 | mxModuleInstanceInternal(module->value.reference)->value.module.realm = NULL; |
| 1784 | module = module->next; |
| 1785 | } |
| 1786 | mxModuleInstanceInternal(mxProgram.value.reference)->value.module.realm = NULL; |
| 1787 | mxException.kind = XS_REFERENCE_KIND; |
| 1788 | mxException.value.reference = mxRealmClosures(realm)->value.reference; |
| 1789 | mxProgram.value.reference = modules; //@@ |
| 1790 | |
| 1791 | { |
| 1792 | txSlot* target = fxNewInstance(the); |
| 1793 | txSlot* modules = mxOwnModules(realm)->value.reference; |
| 1794 | txSlot* module = modules->next; |
| 1795 | while (module) { |
| 1796 | target = target->next = fxNewSlot(the); |
| 1797 | target->value.symbol = mxModuleInstanceInternal(module->value.reference)->value.module.id; |
| 1798 | target->kind = XS_SYMBOL_KIND; |
| 1799 | target->ID = mxModuleInstanceInternal(module->value.reference)->value.module.id; |
| 1800 | module = module->next; |
| 1801 | } |
| 1802 | mxPull(mxHosts); //@@ |
| 1803 | } |
| 1804 | mxModuleQueue = mxUndefined; |
| 1805 | mxDuringJobs = mxUndefined; |
| 1806 | mxFinalizationRegistries = mxUndefined; |
| 1807 | mxPendingJobs = mxUndefined; |
| 1808 | mxRunningJobs = mxUndefined; |
| 1809 | mxBreakpoints = mxUndefined; |
| 1810 | mxHostInspectors = mxUndefined; |
| 1811 | mxInstanceInspectors = mxUndefined; |
| 1812 | } |
| 1813 | fxCollectGarbage(the); |
| 1814 | fxShare(the); |
| 1815 | the->shared = 1; |
| 1816 | } |
| 1817 | } |
| 1818 | #endif |
| 1819 | |
| 1820 | /* Garbage Collector */ |
nothing calls this directly
no test coverage detected