Merge pull request #385 from Shopify/optimize_scope_variable_resolution

Remove block in favour of for loop to reduce temporary object allocation during variable context resolution
This commit is contained in:
Jason Hiltz-Laforge
2014-07-22 11:22:33 -04:00

View File

@@ -194,7 +194,12 @@ module Liquid
# Fetches an object starting at the local scope and then moving up the hierachy
def find_variable(key)
scope = @scopes.find { |s| s.has_key?(key) }
# This was changed from find() to find_index() because this is a very hot
# path and find_index() is optimized in MRI to reduce object allocation
index = @scopes.find_index { |s| s.has_key?(key) }
scope = @scopes[index] if index
variable = nil
if scope.nil?