Skip to content

Commit b803f58

Browse files
committed
Enable more tests
1 parent 5114d64 commit b803f58

File tree

2 files changed

+99
-95
lines changed

2 files changed

+99
-95
lines changed

src/copyable_task.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,10 @@ function derive_copyable_task_ir(ir::BBCode)::Tuple{BBCode,Tuple}
346346
push!(inst_pairs, (id, inst))
347347
elseif Meta.isexpr(stmt, :code_coverage_effect)
348348
push!(inst_pairs, (id, inst))
349+
elseif Meta.isexpr(stmt, :gc_preserve_begin)
350+
push!(inst_pairs, (id, inst))
351+
elseif Meta.isexpr(stmt, :gc_preserve_end)
352+
push!(inst_pairs, (id, inst))
349353
elseif stmt isa ReturnNode
350354
# If returning an SSA, it might be one whose value was restored from before.
351355
# Therefore, grab it out of storage, rather than assuming that it is def-ed.

test/copyable_task.jl

Lines changed: 95 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -187,28 +187,28 @@
187187
@test consume(ttask) == 5
188188
end
189189

190-
# # Test case 3: Dict objects are shallowly copied.
191-
# @testset "Dict objects shallow copy" begin
192-
# function f()
193-
# t = Dict(1 => 10, 2 => 20)
194-
# while true
195-
# produce(t[1])
196-
# t[1] = 1 + t[1]
197-
# end
198-
# end
190+
# Test case 3: Dict objects are shallowly copied.
191+
@testset "Dict objects shallow copy" begin
192+
function f()
193+
t = Dict(1 => 10, 2 => 20)
194+
while true
195+
produce(t[1])
196+
t[1] = 1 + t[1]
197+
end
198+
end
199199

200-
# ttask = TapedTask(f)
200+
ttask = TapedTask(f)
201201

202-
# @test consume(ttask) == 10
203-
# @test consume(ttask) == 11
202+
@test consume(ttask) == 10
203+
@test consume(ttask) == 11
204204

205-
# a = copy(ttask)
206-
# @test consume(a) == 12
207-
# @test consume(a) == 13
205+
a = copy(ttask)
206+
@test consume(a) == 12
207+
@test consume(a) == 13
208208

209-
# @test consume(ttask) == 14
210-
# @test consume(ttask) == 15
211-
# end
209+
@test consume(ttask) == 14
210+
@test consume(ttask) == 15
211+
end
212212

213213
@testset "Array deep copy 2" begin
214214
function f()
@@ -232,15 +232,15 @@
232232
@test consume(ttask) == 2
233233
@test consume(a) == 4
234234

235-
# DATA = Dict{Task,Array}()
236-
# function g()
237-
# ta = zeros(UInt64, 4)
238-
# for i in 1:4
239-
# ta[i] = hash(current_task())
240-
# DATA[current_task()] = ta
241-
# produce(ta[i])
242-
# end
243-
# end
235+
DATA = Dict{Task,Array}()
236+
function g()
237+
ta = zeros(UInt64, 4)
238+
for i in 1:4
239+
ta[i] = hash(current_task())
240+
DATA[current_task()] = ta
241+
produce(ta[i])
242+
end
243+
end
244244

245245
# ttask = TapedTask(g)
246246
# @test consume(ttask) == hash(ttask.task) # index = 1
@@ -258,73 +258,73 @@
258258
# [hash(ttask.task), hash(ttask.task), hash(a.task), hash(a.task)]
259259
end
260260

261-
# # Test atomic values.
262-
# @testset "ref atomic" begin
263-
# function f()
264-
# t = Ref(1)
265-
# t[] = 0
266-
# for _ in 1:6
267-
# produce(t[])
268-
# t[]
269-
# t[] += 1
270-
# end
271-
# end
272-
273-
# ctask = TapedTask(f)
274-
275-
# consume(ctask)
276-
# consume(ctask)
277-
278-
# a = copy(ctask)
279-
# consume(a)
280-
# consume(a)
281-
282-
# @test consume(ctask) == 2
283-
# @test consume(a) == 4
284-
# end
285-
286-
# @testset "ref of dictionary deep copy" begin
287-
# function f()
288-
# t = Ref(Dict("A" => 1, 5 => "B"))
289-
# t[]["A"] = 0
290-
# for _ in 1:6
291-
# produce(t[]["A"])
292-
# t[]["A"] += 1
293-
# end
294-
# end
295-
296-
# ctask = TapedTask(f)
297-
298-
# consume(ctask)
299-
# consume(ctask)
300-
301-
# a = copy(ctask)
302-
# consume(a)
303-
# consume(a)
304-
305-
# @test consume(ctask) == 2
306-
# @test consume(a) == 4
307-
# end
308-
309-
# @testset "override deepcopy_types #57" begin
310-
# struct DummyType end
311-
312-
# function f(start::Int)
313-
# t = [start]
314-
# while true
315-
# produce(t[1])
316-
# t[1] = 1 + t[1]
317-
# end
318-
# end
319-
320-
# ttask = TapedTask(f, 0; deepcopy_types=DummyType)
321-
# consume(ttask)
322-
323-
# ttask2 = copy(ttask)
324-
# consume(ttask2)
325-
326-
# @test consume(ttask) == 1
327-
# @test consume(ttask2) == 2
328-
# end
261+
# Test atomic values.
262+
@testset "ref atomic" begin
263+
function f()
264+
t = Ref(1)
265+
t[] = 0
266+
for _ in 1:6
267+
produce(t[])
268+
t[]
269+
t[] += 1
270+
end
271+
end
272+
273+
ctask = TapedTask(f)
274+
275+
consume(ctask)
276+
consume(ctask)
277+
278+
a = copy(ctask)
279+
consume(a)
280+
consume(a)
281+
282+
@test consume(ctask) == 2
283+
@test consume(a) == 4
284+
end
285+
286+
@testset "ref of dictionary deep copy" begin
287+
function f()
288+
t = Ref(Dict("A" => 1, 5 => "B"))
289+
t[]["A"] = 0
290+
for _ in 1:6
291+
produce(t[]["A"])
292+
t[]["A"] += 1
293+
end
294+
end
295+
296+
ctask = TapedTask(f)
297+
298+
consume(ctask)
299+
consume(ctask)
300+
301+
a = copy(ctask)
302+
consume(a)
303+
consume(a)
304+
305+
@test consume(ctask) == 2
306+
@test consume(a) == 4
307+
end
308+
309+
@testset "override deepcopy_types #57" begin
310+
struct DummyType end
311+
312+
function f(start::Int)
313+
t = [start]
314+
while true
315+
produce(t[1])
316+
t[1] = 1 + t[1]
317+
end
318+
end
319+
320+
ttask = TapedTask(f, 0; deepcopy_types=DummyType)
321+
consume(ttask)
322+
323+
ttask2 = copy(ttask)
324+
consume(ttask2)
325+
326+
@test consume(ttask) == 1
327+
@test consume(ttask2) == 2
328+
end
329329
end
330330
end

0 commit comments

Comments
 (0)