From 4d5198acf19d435ca0450669efc6116b5464a0f6 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Mon, 14 Jun 2021 17:02:05 -0500 Subject: [PATCH] Generated code: better 'filenames', no false optimization claims --- arraycontext/container/arithmetic.py | 7 ++++--- arraycontext/container/dataclass.py | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/arraycontext/container/arithmetic.py b/arraycontext/container/arithmetic.py index ef612fe..7e5da8b 100644 --- a/arraycontext/container/arithmetic.py +++ b/arraycontext/container/arithmetic.py @@ -347,7 +347,7 @@ def with_container_arithmetic( if {bool(outer_bcast_type_names)}: # optimized away if isinstance(arg2, {tup_str(outer_bcast_type_names)}): return cls({bcast_init_args}) - if {numpy_pred("arg2")}: # optimized away + if {numpy_pred("arg2")}: result = np.empty_like(arg2, dtype=object) for i in np.ndindex(arg2.shape): result[i] = {op_str.format("arg1", "arg2[i]")} @@ -376,7 +376,7 @@ def with_container_arithmetic( if {bool(outer_bcast_type_names)}: # optimized away if isinstance(arg1, {tup_str(outer_bcast_type_names)}): return cls({bcast_init_args}) - if {numpy_pred("arg1")}: # optimized away + if {numpy_pred("arg1")}: result = np.empty_like(arg1, dtype=object) for i in np.ndindex(arg1.shape): result[i] = {op_str.format("arg1[i]", "arg2")} @@ -393,7 +393,8 @@ def with_container_arithmetic( # This will evaluate the module, which is all we need. code = gen.get().rstrip()+"\n" result_dict = {"_MODULE_SOURCE_CODE": code, "cls": cls} - exec(compile(code, "<generated code>", "exec"), result_dict) + exec(compile(code, f"<container arithmetic for {cls.__name__}>", "exec"), + result_dict) return cls diff --git a/arraycontext/container/dataclass.py b/arraycontext/container/dataclass.py index 37230e4..ccf7322 100644 --- a/arraycontext/container/dataclass.py +++ b/arraycontext/container/dataclass.py @@ -106,7 +106,8 @@ def dataclass_array_container(cls: type) -> type: """) exec_dict = {"cls": cls, "_MODULE_SOURCE_CODE": serialize_code} - exec(compile(serialize_code, "<generated code>", "exec"), exec_dict) + exec(compile(serialize_code, f"<container serialization for {cls.__name__}>", + "exec"), exec_dict) return cls -- GitLab