Function: fetch-bytecode
fetch-bytecode is a function defined in eval.c.
Signature
(fetch-bytecode OBJECT)
Documentation
If byte-compiled OBJECT is lazy-loaded, fetch it now.
Probably introduced at or before Emacs version 19.29.
Source Code
// Defined in /usr/src/emacs/src/eval.c
{
Lisp_Object tem;
if (COMPILEDP (object))
{
if (CONSP (AREF (object, COMPILED_BYTECODE)))
{
tem = read_doc_string (AREF (object, COMPILED_BYTECODE));
if (! (CONSP (tem) && STRINGP (XCAR (tem))
&& VECTORP (XCDR (tem))))
{
tem = AREF (object, COMPILED_BYTECODE);
if (CONSP (tem) && STRINGP (XCAR (tem)))
error ("Invalid byte code in %s", SDATA (XCAR (tem)));
else
error ("Invalid byte code");
}
Lisp_Object bytecode = XCAR (tem);
if (STRING_MULTIBYTE (bytecode))
{
/* BYTECODE must have been produced by Emacs 20.2 or earlier
because it produced a raw 8-bit string for byte-code and now
such a byte-code string is loaded as multibyte with raw 8-bit
characters converted to multibyte form. Convert them back to
the original unibyte form. */
bytecode = Fstring_as_unibyte (bytecode);
}
ASET (object, COMPILED_BYTECODE, bytecode);
ASET (object, COMPILED_CONSTANTS, XCDR (tem));
}
}
return object;
}