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

Function fxReadSlot

xs/sources/xsSnapshot.c:1643–1773  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1641
1642
1643void fxReadSlot(txMachine* the, txSnapshot* snapshot, txSlot* slot, txFlag flag)
1644{
1645 if (flag)
1646 slot->next = fxUnprojectSlot(the, snapshot, slot->next);
1647 switch (slot->kind) {
1648 case XS_STRING_KIND:
1649 slot->value.string = (txString)mxUnprojectChunk(slot->value.string);
1650 break;
1651 case XS_BIGINT_KIND:
1652 slot->value.bigint.data = (txU4*)mxUnprojectChunk(slot->value.bigint.data);
1653 break;
1654 case XS_REFERENCE_KIND:
1655 slot->value.reference = fxUnprojectSlot(the, snapshot, slot->value.reference);
1656 break;
1657 case XS_CLOSURE_KIND:
1658 slot->value.closure = fxUnprojectSlot(the, snapshot, slot->value.closure);
1659 break;
1660 case XS_INSTANCE_KIND:
1661 slot->value.instance.prototype = fxUnprojectSlot(the, snapshot, slot->value.instance.prototype);
1662 break;
1663
1664 case XS_ARRAY_KIND:
1665 case XS_ARGUMENTS_SLOPPY_KIND:
1666 case XS_ARGUMENTS_STRICT_KIND:
1667 case XS_STACK_KIND:
1668 if (slot->value.array.address) {
1669 slot->value.array.address = (txSlot*)mxUnprojectChunk(slot->value.array.address);
1670 fxReadSlotArray(the, snapshot, slot->value.array.address, slot->value.array.length);
1671 }
1672 break;
1673 case XS_ARRAY_BUFFER_KIND:
1674 if (slot->value.array.address)
1675 slot->value.arrayBuffer.address = (txByte*)mxUnprojectChunk(slot->value.arrayBuffer.address);
1676 break;
1677 case XS_CALLBACK_KIND:
1678 slot->value.callback.address = fxUnprojectCallback(the, snapshot, slot->value.callback.address);
1679 break;
1680 case XS_CODE_KIND:
1681 slot->value.code.address = (txByte*)mxUnprojectChunk(slot->value.code.address);
1682 slot->value.code.closures = fxUnprojectSlot(the, snapshot, slot->value.code.closures);
1683 break;
1684 case XS_CODE_X_KIND:
1685 slot->value.code.address = (txByte*)gxNoCode;
1686 break;
1687 case XS_FINALIZATION_CELL_KIND:
1688 slot->value.finalizationCell.target = fxUnprojectSlot(the, snapshot, slot->value.finalizationCell.target);
1689 slot->value.finalizationCell.token = fxUnprojectSlot(the, snapshot, slot->value.finalizationCell.token);
1690 break;
1691 case XS_FINALIZATION_REGISTRY_KIND:
1692 slot->value.finalizationRegistry.callback = fxUnprojectSlot(the, snapshot, slot->value.finalizationRegistry.callback);
1693 break;
1694 case XS_TYPED_ARRAY_KIND:
1695 slot->value.typedArray.dispatch = (txTypeDispatch*)&gxTypeDispatches[(size_t)slot->value.typedArray.dispatch];
1696 slot->value.typedArray.atomics = (txTypeAtomics*)&gxTypeAtomics[(size_t)slot->value.typedArray.atomics];
1697 break;
1698 case XS_GLOBAL_KIND:
1699 case XS_MAP_KIND:
1700 case XS_SET_KIND:

Callers 3

fxReadSnapshotFunction · 0.85
fxReadSlotArrayFunction · 0.85
fxUseSnapshotFunction · 0.85

Calls 4

fxUnprojectSlotFunction · 0.85
fxReadSlotArrayFunction · 0.85
fxUnprojectCallbackFunction · 0.85
fxReadSlotTableFunction · 0.85

Tested by

no test coverage detected