From cf5baa2d7b5d146a089e8cb7838ff4378b84ffb7 Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Mon, 18 Apr 2022 01:21:25 +0900 Subject: [PATCH] export `ThreadClient@check_bp_fulfillment_map` --- lib/debug/breakpoint.rb | 36 +++++++++++++++--------------------- lib/debug/thread_client.rb | 10 +--------- 2 files changed, 16 insertions(+), 30 deletions(-) diff --git a/lib/debug/breakpoint.rb b/lib/debug/breakpoint.rb index 8cb99f424..99b449e7a 100644 --- a/lib/debug/breakpoint.rb +++ b/lib/debug/breakpoint.rb @@ -326,36 +326,30 @@ def setup next if ThreadClient.current.management? next if skip_path?(tp.path) - if safe_eval(tp.binding, @cond) - unless fulfilled_on_current_thread? - set_fulfilled_on_current_thread - suspend - end - else - set_unfulfilled_on_current_thread + if need_suspend? safe_eval(tp.binding, @cond) + suspend end } end + private def need_suspend? cond_result + map = ThreadClient.current.check_bp_fulfillment_map + if cond_result + if map[self] + false + else + map[self] = true + end + else + map[self] = false + end + end + def to_s s = "#{generate_label("Check")}" s += super s end - - private - - def fulfilled_on_current_thread? - ThreadClient.current.check_bp_fulfilled?(self) - end - - def set_fulfilled_on_current_thread - ThreadClient.current.set_check_bp_state(self, true) - end - - def set_unfulfilled_on_current_thread - ThreadClient.current.set_check_bp_state(self, false) - end end class WatchIVarBreakpoint < Breakpoint diff --git a/lib/debug/thread_client.rb b/lib/debug/thread_client.rb index 2d58f197f..64fc23939 100644 --- a/lib/debug/thread_client.rb +++ b/lib/debug/thread_client.rb @@ -34,7 +34,7 @@ def self.current include Color include SkipPathHelper - attr_reader :thread, :id, :recorder + attr_reader :thread, :id, :recorder, :check_bp_fulfillment_map def location current_frame&.location @@ -339,14 +339,6 @@ def step_tp iter, events = [:line, :b_return, :return] end end - def set_check_bp_state(bp, state) - @check_bp_fulfillment_map[bp] = state - end - - def check_bp_fulfilled?(bp) - @check_bp_fulfillment_map[bp] - end - ## cmd helpers if TracePoint.respond_to? :allow_reentry