1 //===----- AllocationActions.gpp -- JITLink allocation support calls -----===//
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-exception
7 //===----------------------------------------------------------------------===//
9 #include "llvm/ExecutionEngine/Orc/Shared/AllocationActions.h"
15 Expected
<std::vector
<WrapperFunctionCall
>>
16 runFinalizeActions(AllocActions
&AAs
) {
17 std::vector
<WrapperFunctionCall
> DeallocActions
;
18 DeallocActions
.reserve(numDeallocActions(AAs
));
20 for (auto &AA
: AAs
) {
22 if (auto Err
= AA
.Finalize
.runWithSPSRetErrorMerged())
23 return joinErrors(std::move(Err
), runDeallocActions(DeallocActions
));
26 DeallocActions
.push_back(std::move(AA
.Dealloc
));
30 return DeallocActions
;
33 Error
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();