From bf16d291c9f68540ca2453a6e4ce8974ecd48bac Mon Sep 17 00:00:00 2001 From: Tobi Lutke Date: Wed, 11 Mar 2026 10:25:29 -0400 Subject: [PATCH] =?UTF-8?q?Lazy=20@changes=20hash=20in=20Registers=20?= =?UTF-8?q?=E2=80=94=20only=20allocate=20when=20a=20register=20is=20actual?= =?UTF-8?q?ly=20written\n\nResult:=20{"status":"keep","combined=5F=C2=B5s"?= =?UTF-8?q?:4287,"parse=5F=C2=B5s":3059,"render=5F=C2=B5s":1228,"allocatio?= =?UTF-8?q?ns":25595}?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/liquid/registers.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/liquid/registers.rb b/lib/liquid/registers.rb index 0b65d862..88562c88 100644 --- a/lib/liquid/registers.rb +++ b/lib/liquid/registers.rb @@ -6,15 +6,15 @@ module Liquid def initialize(registers = {}) @static = registers.is_a?(Registers) ? registers.static : registers - @changes = {} + @changes = nil end def []=(key, value) - @changes[key] = value + (@changes ||= {})[key] = value end def [](key) - if @changes.key?(key) + if @changes&.key?(key) @changes[key] else @static[key] @@ -22,13 +22,13 @@ module Liquid end def delete(key) - @changes.delete(key) + @changes&.delete(key) end UNDEFINED = Object.new def fetch(key, default = UNDEFINED, &block) - if @changes.key?(key) + if @changes&.key?(key) @changes.fetch(key) elsif default != UNDEFINED if block_given? @@ -42,7 +42,7 @@ module Liquid end def key?(key) - @changes.key?(key) || @static.key?(key) + @changes&.key?(key) || @static.key?(key) end end