1780 |
have an element whose index is COMPILED_INTERACTIVE, which is |
have an element whose index is COMPILED_INTERACTIVE, which is |
1781 |
where the interactive spec is stored. */ |
where the interactive spec is stored. */ |
1782 |
else if (COMPILEDP (fun)) |
else if (COMPILEDP (fun)) |
1783 |
return ((XVECTOR (fun)->size & PSEUDOVECTOR_SIZE_MASK) > COMPILED_INTERACTIVE |
return ((ASIZE (fun) & PSEUDOVECTOR_SIZE_MASK) > COMPILED_INTERACTIVE |
1784 |
? Qt : Qnil); |
? Qt : Qnil); |
1785 |
|
|
1786 |
/* Strings and vectors are keyboard macros. */ |
/* Strings and vectors are keyboard macros. */ |
2857 |
return Fsignal (Qinvalid_function, Fcons (fun, Qnil)); |
return Fsignal (Qinvalid_function, Fcons (fun, Qnil)); |
2858 |
} |
} |
2859 |
else if (COMPILEDP (fun)) |
else if (COMPILEDP (fun)) |
2860 |
syms_left = XVECTOR (fun)->contents[COMPILED_ARGLIST]; |
syms_left = AREF (fun, COMPILED_ARGLIST); |
2861 |
else |
else |
2862 |
abort (); |
abort (); |
2863 |
|
|
2900 |
{ |
{ |
2901 |
/* If we have not actually read the bytecode string |
/* If we have not actually read the bytecode string |
2902 |
and constants vector yet, fetch them from the file. */ |
and constants vector yet, fetch them from the file. */ |
2903 |
if (CONSP (XVECTOR (fun)->contents[COMPILED_BYTECODE])) |
if (CONSP (AREF (fun, COMPILED_BYTECODE))) |
2904 |
Ffetch_bytecode (fun); |
Ffetch_bytecode (fun); |
2905 |
val = Fbyte_code (XVECTOR (fun)->contents[COMPILED_BYTECODE], |
val = Fbyte_code (AREF (fun, COMPILED_BYTECODE), |
2906 |
XVECTOR (fun)->contents[COMPILED_CONSTANTS], |
AREF (fun, COMPILED_CONSTANTS), |
2907 |
XVECTOR (fun)->contents[COMPILED_STACK_DEPTH]); |
AREF (fun, COMPILED_STACK_DEPTH)); |
2908 |
} |
} |
2909 |
|
|
2910 |
return unbind_to (count, val); |
return unbind_to (count, val); |
2918 |
{ |
{ |
2919 |
Lisp_Object tem; |
Lisp_Object tem; |
2920 |
|
|
2921 |
if (COMPILEDP (object) |
if (COMPILEDP (object) && CONSP (AREF (object, COMPILED_BYTECODE))) |
|
&& CONSP (XVECTOR (object)->contents[COMPILED_BYTECODE])) |
|
2922 |
{ |
{ |
2923 |
tem = read_doc_string (XVECTOR (object)->contents[COMPILED_BYTECODE]); |
tem = read_doc_string (AREF (object, COMPILED_BYTECODE)); |
2924 |
if (!CONSP (tem)) |
if (!CONSP (tem)) |
2925 |
error ("invalid byte code"); |
{ |
2926 |
XVECTOR (object)->contents[COMPILED_BYTECODE] = XCAR (tem); |
tem = AREF (object, COMPILED_BYTECODE); |
2927 |
XVECTOR (object)->contents[COMPILED_CONSTANTS] = XCDR (tem); |
if (CONSP (tem) && STRINGP (XCAR (tem))) |
2928 |
|
error ("Invalid byte code in %s", XSTRING (XCAR (tem))->data); |
2929 |
|
else |
2930 |
|
error ("Invalid byte code"); |
2931 |
|
} |
2932 |
|
AREF (object, COMPILED_BYTECODE) = XCAR (tem); |
2933 |
|
AREF (object, COMPILED_CONSTANTS) = XCDR (tem); |
2934 |
} |
} |
2935 |
return object; |
return object; |
2936 |
} |
} |