[compile] Parse compile range cache keys as Range during cache loading. (#30516)
Signed-off-by: zhxchen17 <zhxchen17@fb.com>
This commit is contained in:
@@ -141,7 +141,25 @@ class CompilerManager:
|
|||||||
# we use ast.literal_eval to parse the data
|
# we use ast.literal_eval to parse the data
|
||||||
# because it is a safe way to parse Python literals.
|
# because it is a safe way to parse Python literals.
|
||||||
# do not use eval(), it is unsafe.
|
# do not use eval(), it is unsafe.
|
||||||
self.cache = ast.literal_eval(f.read())
|
cache = ast.literal_eval(f.read())
|
||||||
|
|
||||||
|
def check_type(value, ty):
|
||||||
|
if not isinstance(value, ty):
|
||||||
|
raise TypeError(f"Expected {ty} but got {type(value)} for {value}")
|
||||||
|
|
||||||
|
def parse_key(key: Any) -> tuple[Range, int, str]:
|
||||||
|
range_tuple, graph_index, compiler_name = key
|
||||||
|
check_type(graph_index, int)
|
||||||
|
check_type(compiler_name, str)
|
||||||
|
if isinstance(range_tuple, tuple):
|
||||||
|
start, end = range_tuple
|
||||||
|
check_type(start, int)
|
||||||
|
check_type(end, int)
|
||||||
|
range_tuple = Range(start=start, end=end)
|
||||||
|
check_type(range_tuple, Range)
|
||||||
|
return range_tuple, graph_index, compiler_name
|
||||||
|
|
||||||
|
self.cache = {parse_key(key): value for key, value in cache.items()}
|
||||||
|
|
||||||
self.compiler.initialize_cache(
|
self.compiler.initialize_cache(
|
||||||
cache_dir=cache_dir, disable_cache=disable_cache, prefix=prefix
|
cache_dir=cache_dir, disable_cache=disable_cache, prefix=prefix
|
||||||
|
|||||||
Reference in New Issue
Block a user