@@ -152,7 +152,11 @@ function maybe_evaluate_builtin(frame, call_expr, expand::Bool)
152
152
return Some {Any} (Core. finalizer (getargs (args, frame)... ))
153
153
end
154
154
elseif f === Core. get_binding_type
155
- return Some {Any} (Core. get_binding_type (getargs (args, frame)... ))
155
+ if nargs == 2
156
+ return Some {Any} (Core. get_binding_type (@lookup (frame, args[2 ]), @lookup (frame, args[3 ])))
157
+ else
158
+ return Some {Any} (Core. get_binding_type (getargs (args, frame)... ))
159
+ end
156
160
elseif f === Core. ifelse
157
161
if nargs == 3
158
162
return Some {Any} (Core. ifelse (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ])))
@@ -252,7 +256,13 @@ function maybe_evaluate_builtin(frame, call_expr, expand::Bool)
252
256
return Some {Any} (getfield (getargs (args, frame)... ))
253
257
end
254
258
elseif f === getglobal
255
- return Some {Any} (getglobal (getargs (args, frame)... ))
259
+ if nargs == 2
260
+ return Some {Any} (getglobal (@lookup (frame, args[2 ]), @lookup (frame, args[3 ])))
261
+ elseif nargs == 3
262
+ return Some {Any} (getglobal (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ])))
263
+ else
264
+ return Some {Any} (getglobal (getargs (args, frame)... ))
265
+ end
256
266
elseif f === invoke
257
267
if ! expand
258
268
argswrapped = getargs (args, frame)
@@ -284,7 +294,13 @@ function maybe_evaluate_builtin(frame, call_expr, expand::Bool)
284
294
return Some {Any} (modifyfield! (getargs (args, frame)... ))
285
295
end
286
296
elseif @static isdefined (Core, :modifyglobal! ) && f === modifyglobal!
287
- return Some {Any} (modifyglobal! (getargs (args, frame)... ))
297
+ if nargs == 4
298
+ return Some {Any} (modifyglobal! (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ]), @lookup (frame, args[5 ])))
299
+ elseif nargs == 5
300
+ return Some {Any} (modifyglobal! (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ]), @lookup (frame, args[5 ]), @lookup (frame, args[6 ])))
301
+ else
302
+ return Some {Any} (modifyglobal! (getargs (args, frame)... ))
303
+ end
288
304
elseif f === nfields
289
305
if nargs == 1
290
306
return Some {Any} (nfields (@lookup (frame, args[2 ])))
@@ -302,7 +318,15 @@ function maybe_evaluate_builtin(frame, call_expr, expand::Bool)
302
318
return Some {Any} (replacefield! (getargs (args, frame)... ))
303
319
end
304
320
elseif @static isdefined (Core, :replaceglobal! ) && f === replaceglobal!
305
- return Some {Any} (replaceglobal! (getargs (args, frame)... ))
321
+ if nargs == 4
322
+ return Some {Any} (replaceglobal! (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ]), @lookup (frame, args[5 ])))
323
+ elseif nargs == 5
324
+ return Some {Any} (replaceglobal! (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ]), @lookup (frame, args[5 ]), @lookup (frame, args[6 ])))
325
+ elseif nargs == 6
326
+ return Some {Any} (replaceglobal! (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ]), @lookup (frame, args[5 ]), @lookup (frame, args[6 ]), @lookup (frame, args[7 ])))
327
+ else
328
+ return Some {Any} (replaceglobal! (getargs (args, frame)... ))
329
+ end
306
330
elseif f === setfield!
307
331
if nargs == 3
308
332
return Some {Any} (setfield! (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ])))
@@ -322,9 +346,23 @@ function maybe_evaluate_builtin(frame, call_expr, expand::Bool)
322
346
return Some {Any} (setfieldonce! (getargs (args, frame)... ))
323
347
end
324
348
elseif f === setglobal!
325
- return Some {Any} (setglobal! (getargs (args, frame)... ))
349
+ if nargs == 3
350
+ return Some {Any} (setglobal! (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ])))
351
+ elseif nargs == 4
352
+ return Some {Any} (setglobal! (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ]), @lookup (frame, args[5 ])))
353
+ else
354
+ return Some {Any} (setglobal! (getargs (args, frame)... ))
355
+ end
326
356
elseif @static isdefined (Core, :setglobalonce! ) && f === setglobalonce!
327
- return Some {Any} (setglobalonce! (getargs (args, frame)... ))
357
+ if nargs == 3
358
+ return Some {Any} (setglobalonce! (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ])))
359
+ elseif nargs == 4
360
+ return Some {Any} (setglobalonce! (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ]), @lookup (frame, args[5 ])))
361
+ elseif nargs == 5
362
+ return Some {Any} (setglobalonce! (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ]), @lookup (frame, args[5 ]), @lookup (frame, args[6 ])))
363
+ else
364
+ return Some {Any} (setglobalonce! (getargs (args, frame)... ))
365
+ end
328
366
elseif f === swapfield!
329
367
if nargs == 3
330
368
return Some {Any} (swapfield! (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ])))
@@ -334,7 +372,13 @@ function maybe_evaluate_builtin(frame, call_expr, expand::Bool)
334
372
return Some {Any} (swapfield! (getargs (args, frame)... ))
335
373
end
336
374
elseif @static isdefined (Core, :swapglobal! ) && f === swapglobal!
337
- return Some {Any} (swapglobal! (getargs (args, frame)... ))
375
+ if nargs == 3
376
+ return Some {Any} (swapglobal! (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ])))
377
+ elseif nargs == 4
378
+ return Some {Any} (swapglobal! (@lookup (frame, args[2 ]), @lookup (frame, args[3 ]), @lookup (frame, args[4 ]), @lookup (frame, args[5 ])))
379
+ else
380
+ return Some {Any} (swapglobal! (getargs (args, frame)... ))
381
+ end
338
382
elseif f === throw
339
383
if nargs == 1
340
384
return Some {Any} (throw (@lookup (frame, args[2 ])))
0 commit comments