@@ -61,17 +61,17 @@ module ModSelective end
61
61
end
62
62
frame = Frame (ModSelective, ex)
63
63
src = frame. framecode. src
64
- edges = CodeEdges (src)
64
+ edges = CodeEdges (ModSelective, src)
65
65
# Check that the result of direct evaluation agrees with selective evaluation
66
66
Core. eval (ModEval, ex)
67
- isrequired = lines_required (:x , src, edges)
67
+ isrequired = lines_required (GlobalRef (ModSelective, :x ) , src, edges)
68
68
# theere is too much diversity in lowering across Julia versions to make it useful to test `sum(isrequired)`
69
69
selective_eval_fromstart! (frame, isrequired)
70
70
@test ModSelective. x === ModEval. x
71
71
@test allmissing (ModSelective, (:y , :z , :a , :b , :k ))
72
72
@test ! allmissing (ModSelective, (:x , :y )) # add :y here to test the `all` part of the test itself
73
73
# To evaluate z we need to do all the computations for y
74
- isrequired = lines_required (:z , src, edges)
74
+ isrequired = lines_required (GlobalRef (ModSelective, :z ) , src, edges)
75
75
selective_eval_fromstart! (frame, isrequired)
76
76
@test ModSelective. y === ModEval. y
77
77
@test ModSelective. z === ModEval. z
@@ -82,7 +82,7 @@ module ModSelective end
82
82
@test ModSelective. b === ModEval. b
83
83
# Test that we get two separate evaluations of k
84
84
@test allmissing (ModSelective, (:k ,))
85
- isrequired = lines_required (:k , src, edges)
85
+ isrequired = lines_required (GlobalRef (ModSelective, :k ) , src, edges)
86
86
selective_eval_fromstart! (frame, isrequired)
87
87
@test ModSelective. k != ModEval. k
88
88
@@ -101,8 +101,8 @@ module ModSelective end
101
101
end
102
102
frame = Frame (ModSelective, ex)
103
103
src = frame. framecode. src
104
- edges = CodeEdges (src)
105
- isrequired = lines_required (:a2 , src, edges)
104
+ edges = CodeEdges (ModSelective, src)
105
+ isrequired = lines_required (GlobalRef (ModSelective, :a2 ) , src, edges)
106
106
selective_eval_fromstart! (frame, isrequired, #= istoplevel=# true )
107
107
Core. eval (ModEval, ex)
108
108
@test ModSelective. a2 === ModEval. a2 == 1
@@ -122,8 +122,8 @@ module ModSelective end
122
122
end
123
123
frame = Frame (ModSelective, ex)
124
124
src = frame. framecode. src
125
- edges = CodeEdges (src)
126
- isrequired = lines_required (:a3 , src, edges)
125
+ edges = CodeEdges (ModSelective, src)
126
+ isrequired = lines_required (GlobalRef (ModSelective, :a3 ) , src, edges)
127
127
selective_eval_fromstart! (frame, isrequired)
128
128
Core. eval (ModEval, ex)
129
129
@test ModSelective. a3 === ModEval. a3 == 2
@@ -141,8 +141,8 @@ module ModSelective end
141
141
end
142
142
frame = Frame (ModSelective, ex)
143
143
src = frame. framecode. src
144
- edges = CodeEdges (src)
145
- isrequired = lines_required (:valcf , src, edges)
144
+ edges = CodeEdges (ModSelective, src)
145
+ isrequired = lines_required (GlobalRef (ModSelective, :valcf ) , src, edges)
146
146
selective_eval_fromstart! (frame, isrequired)
147
147
@test ModSelective. valcf == 4
148
148
@@ -158,8 +158,8 @@ module ModSelective end
158
158
end
159
159
frame = Frame (ModSelective, ex)
160
160
src = frame. framecode. src
161
- edges = CodeEdges (src)
162
- isrequired = lines_required (:c_os , src, edges)
161
+ edges = CodeEdges (ModSelective, src)
162
+ isrequired = lines_required (GlobalRef (ModSelective, :c_os ) , src, edges)
163
163
@test sum (isrequired) >= length (isrequired) - 3
164
164
selective_eval_fromstart! (frame, isrequired)
165
165
Core. eval (ModEval, ex)
@@ -179,7 +179,7 @@ module ModSelective end
179
179
@test ModEval. bar () == 1
180
180
frame = Frame (ModSelective, ex)
181
181
src = frame. framecode. src
182
- edges = CodeEdges (src)
182
+ edges = CodeEdges (ModSelective, src)
183
183
# Mark just the load of Core.eval
184
184
haseval (stmt) = (isa (stmt, Expr) && JuliaInterpreter. hasarg (isequal (:eval ), stmt. args)) ||
185
185
(isa (stmt, Expr) && stmt. head === :call && is_quotenode (stmt. args[1 ], Core. eval))
@@ -210,8 +210,8 @@ module ModSelective end
210
210
@test ModSelective. k11 == 11
211
211
@test 3 <= ModSelective. s11 <= 15
212
212
Core. eval (ModSelective, :(k11 = 0 ; s11 = - 1 ))
213
- edges = CodeEdges (frame. framecode. src)
214
- isrequired = lines_required (:s11 , frame. framecode. src, edges)
213
+ edges = CodeEdges (ModSelective, frame. framecode. src)
214
+ isrequired = lines_required (GlobalRef (ModSelective, :s11 ) , frame. framecode. src, edges)
215
215
selective_eval_fromstart! (frame, isrequired, true )
216
216
@test ModSelective. k11 == 0
217
217
@test 3 <= ModSelective. s11 <= 15
@@ -220,7 +220,7 @@ module ModSelective end
220
220
ex = :(abstract type StructParent{T, N} <: AbstractArray{T, N} end )
221
221
frame = Frame (ModSelective, ex)
222
222
src = frame. framecode. src
223
- edges = CodeEdges (src)
223
+ edges = CodeEdges (ModSelective, src)
224
224
# Check that the StructParent name is discovered everywhere it is used
225
225
var = edges. byname[:StructParent ]
226
226
isrequired = minimal_evaluation (hastrackedexpr, src, edges)
@@ -230,7 +230,7 @@ module ModSelective end
230
230
Core. eval (ModEval, ex)
231
231
frame = Frame (ModEval, ex)
232
232
src = frame. framecode. src
233
- edges = CodeEdges (src)
233
+ edges = CodeEdges (ModEval, src)
234
234
isrequired = minimal_evaluation (hastrackedexpr, src, edges)
235
235
selective_eval_fromstart! (frame, isrequired, true )
236
236
@test supertype (ModEval. StructParent) === AbstractArray
@@ -240,7 +240,7 @@ module ModSelective end
240
240
ex = :(struct NoParam end )
241
241
frame = Frame (ModSelective, ex)
242
242
src = frame. framecode. src
243
- edges = CodeEdges (src)
243
+ edges = CodeEdges (ModSelective, src)
244
244
isrequired = minimal_evaluation (stmt-> (LoweredCodeUtils. ismethod_with_name (src, stmt, " NoParam" ),false ), src, edges) # initially mark only the constructor
245
245
selective_eval_fromstart! (frame, isrequired, true )
246
246
@test isa (ModSelective. NoParam (), ModSelective. NoParam)
@@ -252,7 +252,7 @@ module ModSelective end
252
252
end
253
253
frame = Frame (ModSelective, ex)
254
254
src = frame. framecode. src
255
- edges = CodeEdges (src)
255
+ edges = CodeEdges (ModSelective, src)
256
256
isrequired = minimal_evaluation (stmt-> (LoweredCodeUtils. ismethod_with_name (src, stmt, " Struct" ),false ), src, edges) # initially mark only the constructor
257
257
selective_eval_fromstart! (frame, isrequired, true )
258
258
@test isa (ModSelective. Struct ([1 ,2 ,3 ]), ModSelective. Struct{Int})
@@ -269,7 +269,7 @@ module ModSelective end
269
269
end
270
270
frame = Frame (ModSelective, ex)
271
271
src = frame. framecode. src
272
- edges = CodeEdges (src)
272
+ edges = CodeEdges (ModSelective, src)
273
273
isrequired = minimal_evaluation (stmt-> (LoweredCodeUtils. ismethod3 (stmt),false ), src, edges) # initially mark only the constructor
274
274
selective_eval_fromstart! (frame, isrequired, true )
275
275
kws = ModSelective. KWStruct (y= 5.0f0 )
@@ -279,7 +279,7 @@ module ModSelective end
279
279
ex = :(max_values (T:: Union{map(X -> Type{X}, Base.BitIntegerSmall_types)...} ) = 1 << (8 * sizeof (T)))
280
280
frame = Frame (ModSelective, ex)
281
281
src = frame. framecode. src
282
- edges = CodeEdges (src)
282
+ edges = CodeEdges (ModSelective, src)
283
283
isrequired = fill (false , length (src. code))
284
284
@assert Meta. isexpr (src. code[end - 1 ], :method , 3 )
285
285
isrequired[end - 1 ] = true
@@ -297,7 +297,7 @@ module ModSelective end
297
297
Core. eval (ModEval, ex)
298
298
frame = Frame (ModEval, ex)
299
299
src = frame. framecode. src
300
- edges = CodeEdges (src)
300
+ edges = CodeEdges (ModEval, src)
301
301
isrequired = minimal_evaluation (stmt-> (LoweredCodeUtils. ismethod3 (stmt),false ), src, edges; norequire= exclude_named_typedefs (src, edges)) # initially mark only the constructor
302
302
bbs = Core. Compiler. compute_basic_blocks (src. code)
303
303
for (iblock, block) in enumerate (bbs. blocks)
@@ -320,8 +320,8 @@ module ModSelective end
320
320
end
321
321
end )
322
322
src = thk. args[1 ]
323
- edges = CodeEdges (src)
324
- lr = lines_required (:revise538 , src, edges)
323
+ edges = CodeEdges (ModEval, src)
324
+ lr = lines_required (GlobalRef (ModEval, :revise538 ) , src, edges)
325
325
selective_eval_fromstart! (Frame (ModEval, src), lr, #= istoplevel=# true )
326
326
@test isdefined (ModEval, :revise538 ) && length (methods (ModEval. revise538, (Float32,))) == 1
327
327
@@ -334,7 +334,7 @@ module ModSelective end
334
334
end
335
335
end )
336
336
src = thk. args[1 ]
337
- edges = CodeEdges (src)
337
+ edges = CodeEdges (Main, src)
338
338
idx = findfirst (stmt-> Meta. isexpr (stmt, :method ), src. code)
339
339
lr = lines_required (idx, src, edges; norequire= exclude_named_typedefs (src, edges))
340
340
idx = findfirst (stmt-> Meta. isexpr (stmt, :(= )) && Meta. isexpr (stmt. args[2 ], :call ) && is_global_ref (stmt. args[2 ]. args[1 ], Core, :Box ), src. code)
@@ -345,7 +345,7 @@ module ModSelective end
345
345
primitive type WindowsRawSocket sizeof (Ptr) * 8 end
346
346
end )
347
347
src = thk. args[1 ]
348
- edges = CodeEdges (src)
348
+ edges = CodeEdges (Main, src)
349
349
idx = findfirst (istypedef, src. code)
350
350
r = LoweredCodeUtils. typedef_range (src, idx)
351
351
@test last (r) == length (src. code) - 1
@@ -397,7 +397,7 @@ module ModSelective end
397
397
@test occursin (" No IR statement printer" , str)
398
398
end
399
399
# CodeEdges
400
- edges = CodeEdges (src)
400
+ edges = CodeEdges (Main, src)
401
401
show (io, edges)
402
402
str = String (take! (io))
403
403
if Base. VERSION < v " 1.10"
@@ -424,7 +424,7 @@ module ModSelective end
424
424
end
425
425
# Works with Frames too
426
426
frame = Frame (ModSelective, ex)
427
- edges = CodeEdges (frame. framecode. src)
427
+ edges = CodeEdges (ModSelective, frame. framecode. src)
428
428
LoweredCodeUtils. print_with_code (io, frame, edges)
429
429
str = String (take! (io))
430
430
if isdefined (Base. IRShow, :show_ir_stmt )
464
464
lwr = Meta. lower (m, ex)
465
465
src = first (lwr. args)
466
466
stmts = src. code
467
- edges = CodeEdges (src)
467
+ edges = CodeEdges (m, src)
468
468
469
469
isrq = lines_required! (istypedef .(stmts), src, edges)
470
470
frame = Frame (m, src)
0 commit comments