| 1641 | |
| 1642 | |
| 1643 | void 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: |
no test coverage detected