Skip to content

Commit 1e85598

Browse files
committed
Use lazy array allocation in Vertex type propagation methods
In on_type_added/on_type_removed, initialize the new_*_types accumulator as nil and use (x ||= []) << ty to avoid allocating an empty array on the common path where no new types are added.
1 parent 40e8699 commit 1e85598

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

lib/typeprof/core/graph/vertex.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ def initialize(origin)
142142
attr_reader :next_vtxs, :types
143143

144144
def on_type_added(genv, src_var, added_types)
145-
new_added_types = []
145+
new_added_types = nil
146146
added_types.each do |ty|
147147
if @types[ty]
148148
@types[ty] << src_var
@@ -154,27 +154,27 @@ def on_type_added(genv, src_var, added_types)
154154
@types_to_be_added[ty] = set
155155
end
156156
set << src_var
157-
new_added_types << ty
157+
(new_added_types ||= []) << ty
158158
end
159159
end
160-
unless new_added_types.empty?
160+
if new_added_types
161161
@next_vtxs.each do |nvtx|
162162
nvtx.on_type_added(genv, self, new_added_types)
163163
end
164164
end
165165
end
166166

167167
def on_type_removed(genv, src_var, removed_types)
168-
new_removed_types = []
168+
new_removed_types = nil
169169
removed_types.each do |ty|
170170
raise "!!! not implemented" if @types_to_be_added[ty]
171171
@types[ty].delete(src_var) || raise
172172
if @types[ty].empty?
173173
@types.delete(ty) || raise
174-
new_removed_types << ty
174+
(new_removed_types ||= []) << ty
175175
end
176176
end
177-
unless new_removed_types.empty?
177+
if new_removed_types
178178
@next_vtxs.each do |nvtx|
179179
nvtx.on_type_removed(genv, self, new_removed_types)
180180
end

0 commit comments

Comments
 (0)