Module: Corkscrews::Native
- Defined in:
- lib/corkscrews/native.rb
Class Method Summary collapse
- .available? ⇒ Boolean
- .clear_experiment ⇒ Object
- .clear_monitor_thread ⇒ Object
- .install_hooks! ⇒ Object
- .monitor_available? ⇒ Boolean
- .native_events ⇒ Object
- .native_snapshot ⇒ Object
- .register_monitor_thread ⇒ Object
- .set_experiment(kind:, iseq: 0, line: 0, speedup_pct: 0) ⇒ Object
- .set_sample_period(ns) ⇒ Object
- .settle_current ⇒ Object
- .settled_now ⇒ Object
- .stamp_inherit(object) ⇒ Object
- .stamp_write(object) ⇒ Object
- .start_monitor ⇒ Object
- .stop_monitor ⇒ Object
Class Method Details
.available? ⇒ Boolean
19 20 21 |
# File 'lib/corkscrews/native.rb', line 19 def available? defined?(Corkscrews::NativeExtension::AVAILABLE) && Corkscrews::NativeExtension::AVAILABLE end |
.clear_experiment ⇒ Object
98 99 100 |
# File 'lib/corkscrews/native.rb', line 98 def clear_experiment Corkscrews::Delay.clear_experiment if defined?(Corkscrews::Delay) end |
.clear_monitor_thread ⇒ Object
71 72 73 |
# File 'lib/corkscrews/native.rb', line 71 def clear_monitor_thread Corkscrews::Monitor.clear_current_thread! if defined?(Corkscrews::Monitor) && Corkscrews::Monitor.respond_to?(:clear_current_thread!) end |
.install_hooks! ⇒ Object
49 50 51 |
# File 'lib/corkscrews/native.rb', line 49 def install_hooks! Corkscrews::Hooks.install! if defined?(Corkscrews::Hooks) end |
.monitor_available? ⇒ Boolean
61 62 63 64 65 |
# File 'lib/corkscrews/native.rb', line 61 def monitor_available? defined?(Corkscrews::Monitor) && Corkscrews::Monitor.respond_to?(:available?) && Corkscrews::Monitor.available? end |
.native_events ⇒ Object
81 82 83 84 85 |
# File 'lib/corkscrews/native.rb', line 81 def native_events return [] unless defined?(Corkscrews::Record) && Corkscrews::Record.respond_to?(:events) Corkscrews::Record.events end |
.native_snapshot ⇒ Object
75 76 77 78 79 |
# File 'lib/corkscrews/native.rb', line 75 def native_snapshot return {} unless defined?(Corkscrews::Record) Corkscrews::Record.snapshot end |
.register_monitor_thread ⇒ Object
67 68 69 |
# File 'lib/corkscrews/native.rb', line 67 def register_monitor_thread Corkscrews::Monitor.register_current_thread! if defined?(Corkscrews::Monitor) && Corkscrews::Monitor.respond_to?(:register_current_thread!) end |
.set_experiment(kind:, iseq: 0, line: 0, speedup_pct: 0) ⇒ Object
87 88 89 90 91 92 |
# File 'lib/corkscrews/native.rb', line 87 def set_experiment(kind:, iseq: 0, line: 0, speedup_pct: 0) return unless defined?(Corkscrews::Delay) kind_id = { none: 0, line: 1, wait: 2 }.fetch(kind.to_sym, 0) Corkscrews::Delay.set_experiment(kind_id, iseq.to_i, line.to_i, speedup_pct.to_i) end |
.set_sample_period(ns) ⇒ Object
94 95 96 |
# File 'lib/corkscrews/native.rb', line 94 def set_sample_period(ns) Corkscrews::Delay.set_sample_period(ns.to_i) if defined?(Corkscrews::Delay) end |
.settle_current ⇒ Object
102 103 104 105 106 |
# File 'lib/corkscrews/native.rb', line 102 def settle_current return Corkscrews::Delay.settle_current if defined?(Corkscrews::Delay) 0 end |
.settled_now ⇒ Object
23 24 25 26 27 |
# File 'lib/corkscrews/native.rb', line 23 def settled_now return Corkscrews::Delay.settled_now if defined?(Corkscrews::Delay) Thread.current[:corkscrews_settled_stamp_ns] ||= 0 end |
.stamp_inherit(object) ⇒ Object
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/corkscrews/native.rb', line 38 def stamp_inherit(object) if defined?(Corkscrews::Delay) Corkscrews::Delay.stamp_inherit(object) return nil end stamp = @stamps[object].to_i current = settled_now Thread.current[:corkscrews_settled_stamp_ns] = [current, stamp].max end |
.stamp_write(object) ⇒ Object
29 30 31 32 33 34 35 36 |
# File 'lib/corkscrews/native.rb', line 29 def stamp_write(object) if defined?(Corkscrews::Delay) Corkscrews::Delay.stamp_write(object) return nil end @stamps[object] = settled_now end |
.start_monitor ⇒ Object
53 54 55 |
# File 'lib/corkscrews/native.rb', line 53 def start_monitor Corkscrews::Monitor.start! if defined?(Corkscrews::Monitor) end |
.stop_monitor ⇒ Object
57 58 59 |
# File 'lib/corkscrews/native.rb', line 57 def stop_monitor Corkscrews::Monitor.stop! if defined?(Corkscrews::Monitor) end |