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

Function fxDuplicateModuleTransfers

xs/sources/xsModule.c:341–382  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

339}
340
341void fxDuplicateModuleTransfers(txMachine* the, txSlot* srcModule, txSlot* dstModule)
342{
343 txSlot* srcSlot;
344 txSlot* dstSlot;
345 txSlot* transfer;
346 txSlot* aliases;
347 txSlot* function;
348 srcSlot = mxModuleInternal(srcModule);
349 dstSlot = mxModuleInternal(dstModule);
350 dstSlot->flag |= (srcSlot->flag & (XS_IMPORT_FLAG | XS_IMPORT_META_FLAG));
351 srcSlot = mxModuleTransfers(srcModule);
352 dstSlot = mxModuleTransfers(dstModule);
353 fxDuplicateInstance(the, srcSlot->value.reference);
354 mxPullSlot(dstSlot);
355 transfer = dstSlot->value.reference->next;
356 while (transfer) {
357 fxDuplicateInstance(the, transfer->value.reference);
358 mxPullSlot(transfer);
359 aliases = mxTransferAliases(transfer);
360 if (aliases->kind == XS_REFERENCE_KIND) {
361 fxDuplicateInstance(the, aliases->value.reference);
362 mxPullSlot(aliases);
363 }
364 transfer = transfer->next;
365 }
366 srcSlot = mxModuleInitialize(srcModule);
367 dstSlot = mxModuleInitialize(dstModule);
368 if (srcSlot->kind == XS_REFERENCE_KIND) {
369 function = fxDuplicateInstance(the, srcSlot->value.reference);
370 mxPullSlot(dstSlot);
371 mxFunctionInstanceHome(function)->value.home.module = dstModule->value.reference;
372 }
373 else {
374 dstSlot->kind = srcSlot->kind;
375 dstSlot->value = srcSlot->value;
376 }
377 srcSlot = mxModuleExecute(srcModule);
378 dstSlot = mxModuleExecute(dstModule);
379 function = fxDuplicateInstance(the, srcSlot->value.reference);
380 mxPullSlot(dstSlot);
381 mxFunctionInstanceHome(function)->value.home.module = dstModule->value.reference;
382}
383
384void fxExecuteModules(txMachine* the, txSlot* queue)
385{

Callers 3

fxMapModuleDescriptorFunction · 0.85
fxRunImportAuxFunction · 0.85
fxLoadModuleStuffFunction · 0.85

Calls 1

fxDuplicateInstanceFunction · 0.85

Tested by

no test coverage detected