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

Function fxExecuteModulesFrom

xs/sources/xsModule.c:465–501  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

463}
464
465txID fxExecuteModulesFrom(txMachine* the, txSlot* queue, txSlot* module, txSlot** exception)
466{
467 txSlot* fromModules = mxModuleTransfers(module)->value.reference;
468 txSlot* fromModule;
469 if (mxModuleTransfers(module)->kind == XS_NULL_KIND)
470 return XS_MODULE_STATUS_LINKED;
471 fromModule = fromModules->next;
472 while (fromModule) {
473 if (mxModuleStatus(fromModule) == XS_MODULE_STATUS_ERROR) {
474 *exception = mxModuleMeta(fromModule);
475 return XS_MODULE_STATUS_ERROR;
476 }
477 fromModule = fromModule->next;
478 }
479 fromModule = fromModules->next;
480 while (fromModule) {
481 if (mxModuleStatus(fromModule) == XS_MODULE_STATUS_EXECUTING) {
482 return XS_MODULE_STATUS_EXECUTING;
483 }
484 fromModule = fromModule->next;
485 }
486 fromModule = fromModules->next;
487 while (fromModule) {
488 if (mxModuleStatus(fromModule) == XS_MODULE_STATUS_LINKED) {
489 txSlot* waitingModule = queue->next;
490 while (waitingModule) {
491 if (module->value.reference == waitingModule->value.reference)
492 break;
493 if (fromModule->value.reference == waitingModule->value.reference)
494 return XS_MODULE_STATUS_EXECUTING;
495 waitingModule = waitingModule->next;
496 }
497 }
498 fromModule = fromModule->next;
499 }
500 return XS_MODULE_STATUS_LINKED;
501}
502
503void fxExecuteModulesFulfilled(txMachine* the)
504{

Callers 1

fxExecuteModulesFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected