Source/Packages

Runtime.NativeCombine

packages/execution/src/Runtime/NativeCombine.alpha

874 lines55 declarations36.9 KiBSHA-256 10cc50beeee8

def · lines 652–687

nativeCombineResidents

Full file
Every frame and the local value slots of this role; `tail` continues the caller's residents.
652def nativeCombineResidents =
653  (lambda unrestricted placement : (family NativeCombinePlacement) .
654    (lambda unrestricted tail : (family ArenaResidents) .
655      (stdListFold
656        (family RegionTransferIdentity)
657        (family ArenaResidents)
658        (lambda unrestricted identity : (family RegionTransferIdentity) .
659          (lambda unrestricted rest : (family ArenaResidents) .
660            (let unrestricted frame =
661              (nativeCombineFrame placement identity)
662              in
663              (constructor
664                ArenaResidents
665                ArenaResidentsNext
666                (constructor
667                  ArenaResident
668                  ArenaResidentValue
669                  b"combine-frame"
670                  (frameBase frame)
671                  (naturalSaturatingSubtract (frameEnd frame) (frameBase frame))
672                  8)
673                rest))))
674        (constructor
675          ArenaResidents
676          ArenaResidentsNext
677          (constructor
678            ArenaResident
679            ArenaResidentValue
680            b"combine-local-values"
681            (nativeCombineValuesAt placement)
682            (naturalSaturatingSubtract
683              (nativeCombineRegionEnd placement)
684              (nativeCombineValuesAt placement))
685            8)
686          tail)
687        (nativeCombinePayloads (nativeCombinePlacementContext placement)))))

The compiler supplied declaration spans and resolved links from this source snapshot. This page does not assert that this file belongs to a checked closure.