@@ -184,18 +184,42 @@ function maybe_evaluate_builtin(frame, call_expr, expand::Bool)
184184 else
185185 return Some{Any}(Core. memoryrefget(getargs(args, frame). .. ))
186186 end
187+ elseif @static isdefined(Core, :memoryrefmodify!) && f === Core. memoryrefmodify!
188+ if nargs == 5
189+ return Some{Any}(Core. memoryrefmodify!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ]), @lookup(frame, args[5 ]), @lookup(frame, args[6 ])))
190+ else
191+ return Some{Any}(Core. memoryrefmodify!(getargs(args, frame). .. ))
192+ end
187193 elseif @static isdefined(Core, :memoryrefoffset) && f === Core. memoryrefoffset
188194 if nargs == 1
189195 return Some{Any}(Core. memoryrefoffset(@lookup(frame, args[2 ])))
190196 else
191197 return Some{Any}(Core. memoryrefoffset(getargs(args, frame). .. ))
192198 end
199+ elseif @static isdefined(Core, :memoryrefreplace!) && f === Core. memoryrefreplace!
200+ if nargs == 6
201+ return Some{Any}(Core. memoryrefreplace!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ]), @lookup(frame, args[5 ]), @lookup(frame, args[6 ]), @lookup(frame, args[7 ])))
202+ else
203+ return Some{Any}(Core. memoryrefreplace!(getargs(args, frame). .. ))
204+ end
193205 elseif @static isdefined(Core, :memoryrefset!) && f === Core. memoryrefset!
194206 if nargs == 4
195207 return Some{Any}(Core. memoryrefset!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ]), @lookup(frame, args[5 ])))
196208 else
197209 return Some{Any}(Core. memoryrefset!(getargs(args, frame). .. ))
198210 end
211+ elseif @static isdefined(Core, :memoryrefsetonce!) && f === Core. memoryrefsetonce!
212+ if nargs == 5
213+ return Some{Any}(Core. memoryrefsetonce!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ]), @lookup(frame, args[5 ]), @lookup(frame, args[6 ])))
214+ else
215+ return Some{Any}(Core. memoryrefsetonce!(getargs(args, frame). .. ))
216+ end
217+ elseif @static isdefined(Core, :memoryrefswap!) && f === Core. memoryrefswap!
218+ if nargs == 4
219+ return Some{Any}(Core. memoryrefswap!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ]), @lookup(frame, args[5 ])))
220+ else
221+ return Some{Any}(Core. memoryrefswap!(getargs(args, frame). .. ))
222+ end
199223 elseif @static isdefined(Core, :set_binding_type!) && f === Core. set_binding_type!
200224 return Some{Any}(Core. set_binding_type!(getargs(args, frame). .. ))
201225 elseif f === Core. sizeof
@@ -264,6 +288,14 @@ function maybe_evaluate_builtin(frame, call_expr, expand::Bool)
264288 else
265289 return Some{Any}(modifyfield!(getargs(args, frame). .. ))
266290 end
291+ elseif @static isdefined(Core, :modifyglobal!) && f === modifyglobal!
292+ if nargs == 4
293+ return Some{Any}(modifyglobal!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ]), @lookup(frame, args[5 ])))
294+ elseif nargs == 5
295+ return Some{Any}(modifyglobal!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ]), @lookup(frame, args[5 ]), @lookup(frame, args[6 ])))
296+ else
297+ return Some{Any}(modifyglobal!(getargs(args, frame). .. ))
298+ end
267299 elseif f === nfields
268300 if nargs == 1
269301 return Some{Any}(nfields(@lookup(frame, args[2 ])))
@@ -280,6 +312,16 @@ function maybe_evaluate_builtin(frame, call_expr, expand::Bool)
280312 else
281313 return Some{Any}(replacefield!(getargs(args, frame). .. ))
282314 end
315+ elseif @static isdefined(Core, :replaceglobal!) && f === replaceglobal!
316+ if nargs == 4
317+ return Some{Any}(replaceglobal!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ]), @lookup(frame, args[5 ])))
318+ elseif nargs == 5
319+ return Some{Any}(replaceglobal!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ]), @lookup(frame, args[5 ]), @lookup(frame, args[6 ])))
320+ elseif nargs == 6
321+ 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 ])))
322+ else
323+ return Some{Any}(replaceglobal!(getargs(args, frame). .. ))
324+ end
283325 elseif f === setfield!
284326 if nargs == 3
285327 return Some{Any}(setfield!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ])))
@@ -288,6 +330,16 @@ function maybe_evaluate_builtin(frame, call_expr, expand::Bool)
288330 else
289331 return Some{Any}(setfield!(getargs(args, frame). .. ))
290332 end
333+ elseif @static isdefined(Core, :setfieldonce!) && f === setfieldonce!
334+ if nargs == 3
335+ return Some{Any}(setfieldonce!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ])))
336+ elseif nargs == 4
337+ return Some{Any}(setfieldonce!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ]), @lookup(frame, args[5 ])))
338+ elseif nargs == 5
339+ return Some{Any}(setfieldonce!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ]), @lookup(frame, args[5 ]), @lookup(frame, args[6 ])))
340+ else
341+ return Some{Any}(setfieldonce!(getargs(args, frame). .. ))
342+ end
291343 elseif @static isdefined(Core, :setglobal!) && f === setglobal!
292344 if nargs == 3
293345 return Some{Any}(setglobal!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ])))
@@ -296,6 +348,16 @@ function maybe_evaluate_builtin(frame, call_expr, expand::Bool)
296348 else
297349 return Some{Any}(setglobal!(getargs(args, frame). .. ))
298350 end
351+ elseif @static isdefined(Core, :setglobalonce!) && f === setglobalonce!
352+ if nargs == 3
353+ return Some{Any}(setglobalonce!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ])))
354+ elseif nargs == 4
355+ return Some{Any}(setglobalonce!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ]), @lookup(frame, args[5 ])))
356+ elseif nargs == 5
357+ return Some{Any}(setglobalonce!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ]), @lookup(frame, args[5 ]), @lookup(frame, args[6 ])))
358+ else
359+ return Some{Any}(setglobalonce!(getargs(args, frame). .. ))
360+ end
299361 elseif @static isdefined(Core, :swapfield!) && f === swapfield!
300362 if nargs == 3
301363 return Some{Any}(swapfield!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ])))
@@ -304,6 +366,14 @@ function maybe_evaluate_builtin(frame, call_expr, expand::Bool)
304366 else
305367 return Some{Any}(swapfield!(getargs(args, frame). .. ))
306368 end
369+ elseif @static isdefined(Core, :swapglobal!) && f === swapglobal!
370+ if nargs == 3
371+ return Some{Any}(swapglobal!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ])))
372+ elseif nargs == 4
373+ return Some{Any}(swapglobal!(@lookup(frame, args[2 ]), @lookup(frame, args[3 ]), @lookup(frame, args[4 ]), @lookup(frame, args[5 ])))
374+ else
375+ return Some{Any}(swapglobal!(getargs(args, frame). .. ))
376+ end
307377 elseif f === throw
308378 if nargs == 1
309379 return Some{Any}(throw(@lookup(frame, args[2 ])))
0 commit comments