sqreen 1.10.2 → 1.10.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3129e4afc077e7ca7afbe1704c49e3584fc8677de552575307f28d1a11e2a71e
4
- data.tar.gz: 6a84e5d01b162c304195e50e13b32d301d9faa5190fcfe7d2ebc657e66f7ed25
3
+ metadata.gz: 294bf474df4e1beb0533d87876a9b27e984d47ab332482aab2485fee862de414
4
+ data.tar.gz: 6a4b0f5c640371ad280c0412c5b3c58f73d921df69f767522659e5c90d4ee663
5
5
  SHA512:
6
- metadata.gz: e5b855e58472a20f7f190b37e6c7dce6dd36ca3117dd80b9ff8b406fb5c24c7e99713ad11d14833f0887c2af8497971ca0d0a5c3d93069987175f95b414a2956
7
- data.tar.gz: 305d5048bbbe5df8d6c9b21c26fae636a6aa6738a77adf8dcc87ff08575b893e7dacb546d4d695ca36b838e9b69cfa0a54410e4ae90ddc5daa0e3da515726e43
6
+ metadata.gz: bb633499e38e67c6768ac77bbdedccd83710708abe7b2422bfb0f3e4f4a2797b532b35203c97fbdf445ea205fe5e63cb5a1613e4ea8237b74330111410065ddb
7
+ data.tar.gz: 8bf22330ac83b3c9133a96127f358e34f27fe3dd504985832fb8825a19cfcfbafa82a9a3db25284e4c460c76587a92923c331cac7a584c7e8e396e4145ff2070
@@ -147,23 +147,35 @@ module Sqreen
147
147
  end
148
148
  end
149
149
 
150
+ def push_runtime(runtime)
151
+ @runtimes.delete_if do |th, _runt|
152
+ th.nil? || !th.weakref_alive? || !th.alive?
153
+ end
154
+ @runtimes.push [WeakRef.new(Thread.current), runtime, Thread.current.object_id]
155
+ end
156
+
157
+ def dispose_runtime(runtime)
158
+ @runtimes.delete_if { |_th, _runt, thid| thid == Thread.current.object_id }
159
+ runtime.dispose
160
+ end
161
+
150
162
  def call_callback(name, inst, args, rv = nil)
151
163
  if SQREEN_MINI_RACER
152
- mini_racer_context = Thread.current["SQREEN_MINI_RACER_CONTEXT_#{self.object_id}"]
164
+ mini_racer_context = Thread.current["SQREEN_MINI_RACER_CONTEXT_#{object_id}"]
153
165
  if mini_racer_context.nil? || mini_racer_context[:r].nil? || !mini_racer_context[:r].weakref_alive?
154
- runtime = MiniRacer::Context.new(snapshot: @snapshot)
155
- @runtimes.push runtime
156
- Thread.current["SQREEN_MINI_RACER_CONTEXT_#{self.object_id}"] = {:c => 0, :r => WeakRef.new(runtime)}
166
+ new_runtime = MiniRacer::Context.new(:snapshot => @snapshot)
167
+ push_runtime new_runtime
168
+ Thread.current["SQREEN_MINI_RACER_CONTEXT_#{object_id}"] = {
169
+ :c => 0,
170
+ :r => WeakRef.new(new_runtime),
171
+ }
157
172
  elsif mini_racer_context[:c] >= GC_MINI_RACER
158
- @runtimes.delete(mini_racer_context[:r])
159
- mini_racer_context[:r].dispose
160
-
161
- new_runtime = MiniRacer::Context.new(snapshot: @snapshot)
162
- @runtimes.push new_runtime
163
-
164
- Thread.current["SQREEN_MINI_RACER_CONTEXT_#{self.object_id}"] = {
173
+ dispose_runtime(mini_racer_context[:r])
174
+ new_runtime = MiniRacer::Context.new(:snapshot => @snapshot)
175
+ push_runtime new_runtime
176
+ Thread.current["SQREEN_MINI_RACER_CONTEXT_#{object_id}"] = {
165
177
  :c => 0,
166
- :r => WeakRef.new(new_runtime)
178
+ :r => WeakRef.new(new_runtime),
167
179
  }
168
180
  end
169
181
  end
@@ -177,7 +189,7 @@ module Sqreen
177
189
  arguments = restrict(name, arguments) if @conditions.key?(name)
178
190
  Sqreen.log.debug { [name, arguments].inspect }
179
191
  if SQREEN_MINI_RACER
180
- mini_racer_context = Thread.current["SQREEN_MINI_RACER_CONTEXT_#{self.object_id}"]
192
+ mini_racer_context = Thread.current["SQREEN_MINI_RACER_CONTEXT_#{object_id}"]
181
193
  mini_racer_context[:c] += 1
182
194
  ret = mini_racer_context[:r].eval("#{name}.apply(this, #{::JSON.generate(arguments)})")
183
195
  else
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2015 Sqreen. All Rights Reserved.
2
2
  # Please refer to our terms for more information: https://www.sqreen.io/terms.html
3
3
  module Sqreen
4
- VERSION = '1.10.2'.freeze
4
+ VERSION = '1.10.3'.freeze
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqreen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.10.2
4
+ version: 1.10.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sqreen