Skip to content

Commit 8b00b13

Browse files
committed
Block and method frames shouldn't call parameters_info
The DAP server doesn't use the args and in some instances retrieving these is very slow. Instead make parameters_info public and have the thread_client call that directly.
1 parent d270e3f commit 8b00b13

File tree

2 files changed

+19
-21
lines changed

2 files changed

+19
-21
lines changed

lib/debug/frame_info.rb

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,10 @@ def name
4949
# p frame_type: frame_type, self: self
5050
case frame_type
5151
when :block
52-
level, block_loc, _args = block_identifier
52+
level, block_loc = block_identifier
5353
"block in #{block_loc}#{level}"
5454
when :method
55-
ci, _args = method_identifier
56-
"#{ci}"
55+
method_identifier
5756
when :c
5857
c_identifier
5958
when :other
@@ -83,16 +82,13 @@ def frame_type
8382

8483
def block_identifier
8584
return unless frame_type == :block
86-
args = parameters_info
8785
_, level, block_loc = location.label.match(BLOCK_LABL_REGEXP).to_a
88-
[level || "", block_loc, args]
86+
[level || "", block_loc]
8987
end
9088

9189
def method_identifier
9290
return unless frame_type == :method
93-
args = parameters_info
94-
ci = "#{klass_sig}#{callee}"
95-
[ci, args]
91+
"#{klass_sig}#{callee}"
9692
end
9793

9894
def c_identifier
@@ -138,6 +134,17 @@ def local_variables
138134
end
139135
end
140136

137+
def parameters_info
138+
vars = iseq.parameters_symbols
139+
vars.map{|var|
140+
begin
141+
{ name: var, value: DEBUGGER__.safe_inspect(local_variable_get(var), short: true) }
142+
rescue NameError, TypeError
143+
nil
144+
end
145+
}.compact
146+
end
147+
141148
private
142149

143150
def get_singleton_class obj
@@ -150,17 +157,6 @@ def get_singleton_class obj
150157
local_variables[var]
151158
end
152159

153-
def parameters_info
154-
vars = iseq.parameters_symbols
155-
vars.map{|var|
156-
begin
157-
{ name: var, value: DEBUGGER__.safe_inspect(local_variable_get(var), short: true) }
158-
rescue NameError, TypeError
159-
nil
160-
end
161-
}.compact
162-
end
163-
164160
def klass_sig
165161
if self.class == get_singleton_class(self.self)
166162
"#{self.self}."

lib/debug/thread_client.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,17 @@ def default_frame_formatter frame
5050
call_identifier_str =
5151
case frame.frame_type
5252
when :block
53-
level, block_loc, args = frame.block_identifier
53+
level, block_loc = frame.block_identifier
54+
args = frame.parameters_info
5455

5556
if !args.empty?
5657
args_str = " {|#{assemble_arguments(args)}|}"
5758
end
5859

5960
"#{colorize_blue("block")}#{args_str} in #{colorize_blue(block_loc + level)}"
6061
when :method
61-
ci, args = frame.method_identifier
62+
ci = frame.method_identifier
63+
args = frame.parameters_info
6264

6365
if !args.empty?
6466
args_str = "(#{assemble_arguments(args)})"

0 commit comments

Comments
 (0)