From 96346c7ad08ef86fd4f7abb53d68ea24be8a8ffd Mon Sep 17 00:00:00 2001 From: CEL Dev Team Date: Tue, 29 Sep 2026 13:57:42 -0700 Subject: [PATCH] Skip unused attribute pattern lookups when constructing an ExecutionFrame. `ExecutionFrameBase` only calls `activation.GetUnknownAttributes()` / `GetMissingAttributes()` when unknown processing / missing attribute errors are enabled; otherwise it passes empty spans to `AttributeUtility`, which never consults them in that configuration. PiperOrigin-RevId: 990512440 --- eval/eval/evaluator_core.h | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/eval/eval/evaluator_core.h b/eval/eval/evaluator_core.h index 89a98ca2c..dea5f527f 100644 --- a/eval/eval/evaluator_core.h +++ b/eval/eval/evaluator_core.h @@ -321,8 +321,13 @@ class ExecutionFrameBase { message_factory_(message_factory), arena_(arena), embedder_context_(nullptr), - attribute_utility_(activation.GetUnknownAttributes(), - activation.GetMissingAttributes()), + attribute_utility_(options.unknown_processing != + cel::UnknownProcessingOptions::kDisabled + ? activation.GetUnknownAttributes() + : absl::Span(), + options.enable_missing_attribute_errors + ? activation.GetMissingAttributes() + : absl::Span()), slots_(&ComprehensionSlots::GetEmptyInstance()), max_iterations_(options.comprehension_max_iterations), iterations_(0), @@ -363,8 +368,13 @@ class ExecutionFrameBase { message_factory_(message_factory), arena_(arena), embedder_context_(embedder_context), - attribute_utility_(activation.GetUnknownAttributes(), - activation.GetMissingAttributes()), + attribute_utility_(options.unknown_processing != + cel::UnknownProcessingOptions::kDisabled + ? activation.GetUnknownAttributes() + : absl::Span(), + options.enable_missing_attribute_errors + ? activation.GetMissingAttributes() + : absl::Span()), slots_(&slots), max_iterations_(options.comprehension_max_iterations), iterations_(0),