function luaK.exp2reg(C,g,G,F)C:discharge2reg(g,G,F)if G.k=="\086\074\077\080"then G.t=C:concat(g,G.t,G.info)end if C:hasjumps(G)then local a local N=C.NO_JUMP local u=C.NO_JUMP if C:need_value(g,G.t)or C:need_value(g,G.f)then local a=G.k=="\086\074\077\080"and C.NO_JUMP or C:jump(g)N=C:code_label(g,F,0,1)u=C:code_label(g,F,1,0)C:patchtohere(g,a)end a=C:getlabel(g)C:patchlistaux(g,G.f,a,F,N)C:patchlistaux(g,G.t,a,F,u)end G.f,G.t=C.NO_JUMP,C.NO_JUMP G.info=F G.k="\086\078\079\078\082\069\076\079\067"end

function luaK:exp2reg(fs, e, reg)
  self:discharge2reg(fs, e, reg)
  if e.k == "VJMP" then
    e.t = self:concat(fs, e.t, e.info)  -- put this jump in 't' list
  end
  if self:hasjumps(e) then
    local final  -- position after whole expression
    local p_f = self.NO_JUMP  -- position of an eventual LOAD false
    local p_t = self.NO_JUMP  -- position of an eventual LOAD true
    if self:need_value(fs, e.t) or self:need_value(fs, e.f) then
      local fj = (e.k == "VJMP") and self.NO_JUMP or self:jump(fs)
      p_f = self:code_label(fs, reg, 0, 1)
      p_t = self:code_label(fs, reg, 1, 0)
      self:patchtohere(fs, fj)
    end
    final = self:getlabel(fs)
    self:patchlistaux(fs, e.f, final, reg, p_f)
    self:patchlistaux(fs, e.t, final, reg, p_t)
  end
  e.f, e.t = self.NO_JUMP, self.NO_JUMP
  e.info = reg
  e.k = "VNONRELOC"
end
