MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / fxLinkModules

Function fxLinkModules

xs/sources/xsModule.c:778–953  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

776}
777
778void fxLinkModules(txMachine* the, txSlot* queue)
779{
780 txSlot* module;
781 txSlot* order;
782 txSlot* transfer;
783 txSlot* local;
784 txSlot* from;
785 txSlot* import;
786 txSlot* aliases;
787 txSlot* closure;
788 txSlot* property;
789 txSlot* circularities;
790 txSlot* exports;
791 txSlot* realm;
792 txSlot* closures;
793 txSlot* export;
794
795 order = fxNewInstance(the);
796 while ((module = queue->next))
797 fxOrderModule(the, queue, order, module);
798 queue->next = order->next;
799 order->next = C_NULL;
800 mxPop();
801
802 mxReportModuleQueue("LINK");
803 module = queue->next;
804 while (module) {
805 if (mxModuleStatus(module) == XS_MODULE_STATUS_LINKING) {
806 transfer = mxModuleTransfers(module)->value.reference->next;
807 while (transfer) {
808 local = mxTransferLocal(transfer);
809 from = mxTransferFrom(transfer);
810 import = mxTransferImport(transfer);
811 aliases = mxTransferAliases(transfer);
812 if (local->kind != XS_NULL_KIND) {
813 if ((from->kind == XS_NULL_KIND) || (import->kind == XS_NULL_KIND)) {
814 closure = mxTransferClosure(transfer);
815 closure->value.export.closure = fxNewSlot(the);
816 closure->value.export.closure->kind = XS_UNINITIALIZED_KIND;
817 closure->value.export.module = module->value.reference;
818 closure->kind = XS_EXPORT_KIND;
819 }
820 }
821 else {
822 if ((from->kind != XS_NULL_KIND) && (import->kind == XS_NULL_KIND) && (aliases->kind != XS_NULL_KIND)) {
823 closure = mxTransferClosure(transfer);
824 closure->value.export.closure = fxNewSlot(the);
825 closure->value.export.closure->kind = XS_UNINITIALIZED_KIND;
826 closure->value.export.module = module->value.reference;
827 closure->kind = XS_EXPORT_KIND;
828 }
829 }
830 transfer = transfer->next;
831 }
832 }
833 module = module->next;
834 }
835

Callers 2

fxLoadModulesFunction · 0.85
fxRunImportNowFunction · 0.85

Calls 8

fxNewInstanceFunction · 0.85
fxOrderModuleFunction · 0.85
fxNewSlotFunction · 0.85
fxLinkCircularitiesFunction · 0.85
fxLinkExportsFunction · 0.85
fxLinkLocalsFunction · 0.85
fxNewEnvironmentInstanceFunction · 0.85
fxDuplicateSlotFunction · 0.85

Tested by

no test coverage detected