Condition#evaluate: skip loop block for simple conditions (no child_relation) — saves 235 allocs\n\nResult: {"status":"keep","combined_µs":3445,"parse_µs":2284,"render_µs":1161,"allocations":24647}

This commit is contained in:
Tobi Lutke
2026-03-12 17:24:51 -04:00
parent ae9a2e26b0
commit ca327b01b1
2 changed files with 9 additions and 4 deletions
+7 -4
View File
@@ -65,11 +65,13 @@ module Liquid
end
def evaluate(context = deprecated_default_context)
condition = self
result = nil
loop do
result = interpret_condition(condition.left, condition.right, condition.operator, context)
result = interpret_condition(@left, @right, @operator, context)
# Fast path: no child conditions (most common)
return result unless @child_relation
condition = self
loop do
case condition.child_relation
when :or
break if Liquid::Utils.to_liquid_value(result)
@@ -79,6 +81,7 @@ module Liquid
break
end
condition = condition.child_condition
result = interpret_condition(condition.left, condition.right, condition.operator, context)
end
result
end