blob: e4b9c55e0eac59df7d7bd13ba326c47b201de1da [file] [log] [blame]
# Copyright 2024 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
from typing import Callable
from iree.build.executor import ActionConcurrency, BuildAction
class _ThunkTrampoline:
def __init__(self, thunk, args):
self.thunk = thunk
self.args = args
def __call__(self):
self.thunk(*self.args)
class ExecuteOutOfProcessThunkAction(BuildAction):
"""Executes a callback thunk with arguments.
Both the thunk and args must be pickleable.
"""
def __init__(self, thunk, args, concurrency=ActionConcurrency.PROCESS, **kwargs):
super().__init__(concurrency=concurrency, **kwargs)
self.trampoline = _ThunkTrampoline(thunk, args)
def _remotable_thunk(self) -> Callable[[], None]:
return self.trampoline