brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 91f2899 Raw
45 lines · cpp
1//===----- AllocationActions.gpp -- JITLink allocation support calls  -----===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "llvm/ExecutionEngine/Orc/Shared/AllocationActions.h"10 11namespace llvm {12namespace orc {13namespace shared {14 15Expected<std::vector<WrapperFunctionCall>>16runFinalizeActions(AllocActions &AAs) {17  std::vector<WrapperFunctionCall> DeallocActions;18  DeallocActions.reserve(numDeallocActions(AAs));19 20  for (auto &AA : AAs) {21    if (AA.Finalize)22      if (auto Err = AA.Finalize.runWithSPSRetErrorMerged())23        return joinErrors(std::move(Err), runDeallocActions(DeallocActions));24 25    if (AA.Dealloc)26      DeallocActions.push_back(std::move(AA.Dealloc));27  }28 29  AAs.clear();30  return DeallocActions;31}32 33Error runDeallocActions(ArrayRef<WrapperFunctionCall> DAs) {34  Error Err = Error::success();35  while (!DAs.empty()) {36    Err = joinErrors(std::move(Err), DAs.back().runWithSPSRetErrorMerged());37    DAs = DAs.drop_back();38  }39  return Err;40}41 42} // namespace shared43} // namespace orc44} // namespace llvm45