提交 42d0d661 authored 作者: Ricardo Vieira's avatar Ricardo Vieira 提交者: Ricardo Vieira

Define more linker requirements

上级 1963f39b
...@@ -283,6 +283,9 @@ class PerformLinker(LocalLinker): ...@@ -283,6 +283,9 @@ class PerformLinker(LocalLinker):
""" """
required_rewrites: tuple[str, ...] = ("minimum_compile", "py_only")
incompatible_rewrites: tuple[str, ...] = ("cxx",)
def __init__( def __init__(
self, allow_gc: bool | None = None, schedule: Callable | None = None self, allow_gc: bool | None = None, schedule: Callable | None = None
) -> None: ) -> None:
...@@ -584,6 +587,9 @@ class JITLinker(PerformLinker): ...@@ -584,6 +587,9 @@ class JITLinker(PerformLinker):
""" """
required_rewrites: tuple[str, ...] = ("minimum_compile",)
incompatible_rewrites: tuple[str, ...] = ()
@abstractmethod @abstractmethod
def fgraph_convert( def fgraph_convert(
self, fgraph, order, input_storage, output_storage, storage_map, **kwargs self, fgraph, order, input_storage, output_storage, storage_map, **kwargs
......
...@@ -812,6 +812,10 @@ class VMLinker(LocalLinker): ...@@ -812,6 +812,10 @@ class VMLinker(LocalLinker):
""" """
# We can only set these correctly after `__init__`, as it depends on `c_thunks`
required_rewrites: tuple[str, ...] = ("minimum_compile",)
incompatible_rewrites: tuple[str, ...] = ()
def __init__( def __init__(
self, self,
allow_gc=None, allow_gc=None,
...@@ -834,6 +838,9 @@ class VMLinker(LocalLinker): ...@@ -834,6 +838,9 @@ class VMLinker(LocalLinker):
self.lazy = lazy self.lazy = lazy
if c_thunks is None: if c_thunks is None:
c_thunks = bool(config.cxx) c_thunks = bool(config.cxx)
if not c_thunks:
self.required_rewrites: tuple[str, ...] = ("minimum_compile", "py_only")
self.incompatible_rewrites: tuple[str, ...] = ("cxx",)
self.c_thunks = c_thunks self.c_thunks = c_thunks
self.allow_partial_eval = allow_partial_eval self.allow_partial_eval = allow_partial_eval
self.updated_vars = {} self.updated_vars = {}
......
...@@ -56,11 +56,12 @@ def test_NoOutputFromInplace(): ...@@ -56,11 +56,12 @@ def test_NoOutputFromInplace():
def test_including(): def test_including():
mode = Mode(linker="py", optimizer="merge") mode = Mode(linker="py", optimizer="merge")
assert set(mode._optimizer.include) == {"minimum_compile", "merge"} assert set(mode._optimizer.include) == {"minimum_compile", "py_only", "merge"}
new_mode = mode.including("fast_compile") new_mode = mode.including("fast_compile")
assert set(new_mode._optimizer.include) == { assert set(new_mode._optimizer.include) == {
"minimum_compile", "minimum_compile",
"py_only",
"merge", "merge",
"fast_compile", "fast_compile",
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论