MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / discharge2reg

Function discharge2reg

deps/lua/src/lcode.c:343–379  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

341
342
343static void discharge2reg (FuncState *fs, expdesc *e, int reg) {
344 luaK_dischargevars(fs, e);
345 switch (e->k) {
346 case VNIL: {
347 luaK_nil(fs, reg, 1);
348 break;
349 }
350 case VFALSE: case VTRUE: {
351 luaK_codeABC(fs, OP_LOADBOOL, reg, e->k == VTRUE, 0);
352 break;
353 }
354 case VK: {
355 luaK_codeABx(fs, OP_LOADK, reg, e->u.s.info);
356 break;
357 }
358 case VKNUM: {
359 luaK_codeABx(fs, OP_LOADK, reg, luaK_numberK(fs, e->u.nval));
360 break;
361 }
362 case VRELOCABLE: {
363 Instruction *pc = &getcode(fs, e);
364 SETARG_A(*pc, reg);
365 break;
366 }
367 case VNONRELOC: {
368 if (reg != e->u.s.info)
369 luaK_codeABC(fs, OP_MOVE, reg, e->u.s.info, 0);
370 break;
371 }
372 default: {
373 lua_assert(e->k == VVOID || e->k == VJMP);
374 return; /* nothing to do... */
375 }
376 }
377 e->u.s.info = reg;
378 e->k = VNONRELOC;
379}
380
381
382static void discharge2anyreg (FuncState *fs, expdesc *e) {

Callers 2

discharge2anyregFunction · 0.85
exp2regFunction · 0.85

Calls 5

luaK_dischargevarsFunction · 0.85
luaK_nilFunction · 0.85
luaK_codeABCFunction · 0.85
luaK_codeABxFunction · 0.85
luaK_numberKFunction · 0.85

Tested by

no test coverage detected