Lines Matching defs:bytecode
30 /* $XFree86: xc/programs/xedit/lisp/bytecode.c,v 1.17 2003/05/27 22:27:01 tsi Exp $ */
36 o Write code for allowing storing the bytecode on disk. Basically
37 write a section of the bytecode with the package name of the symbol
39 the pointers in the bytecode. Constants can be stored as the string
60 o Cleanup of interpreted code. Having bytecode mean that the interpreter
74 that generates a bytecode like:
96 #include "lisp/bytecode.h"
223 unsigned char *bytecode; /* Bytecode generated so far */
542 LispObj *name, *lambda, *bytecode;
551 name = bytecode = NULL;
565 bytecode = atom->property->fun.function;
586 bytecode = function;
670 if (bytecode) {
680 unsigned char *base, *stream = bytecode->data.bytecode.bytecode->code;
1230 return (ExecuteBytecode(object->data.bytecode.bytecode->code));
1237 LispBytecode *bytecode;
1249 bytecode = LispMalloc(sizeof(LispBytecode));
1250 bytecode->code = com->bytecode;
1251 bytecode->length = com->length;
1254 stream = bytecode->code;
1293 /* Free everything, but the LispCom structure and the generated bytecode */
1312 object->data.bytecode.bytecode = bytecode;
1314 object->data.bytecode.code = code;
1315 object->data.bytecode.name = name;
1318 LispMused(bytecode);
1319 LispMused(bytecode->code);
2202 /* One bytecode is guaranteed to exist in the code tree */
2423 LinkBuildTableBytecode(LispCom *com, LispObj *bytecode)
2425 if (BuildTablePointer(bytecode, (void***)&com->table.bytecodes,
2427 COMPILE_FAILURE("more than 256 bytecode functions");
2501 unsigned char *bytecode, long offset)
2508 bytecode[offset++] = XBC_NOOP;
2512 bytecode[offset++] = tree->code;
2561 bytecode[offset++] = tree->data.signed_char;
2577 bytecode[offset++] = tree->data.signed_short;
2584 bytecode[offset++] = tree->data.load_set.load;
2585 bytecode[offset++] = tree->data.load_set.set;
2592 *(short*)(bytecode + offset) = tree->data.signed_int;
2607 bytecode[offset++] = i;
2617 bytecode[offset++] = i;
2625 bytecode[offset++] = i;
2626 bytecode[offset++] = tree->data.load_con_set.offset;
2631 bytecode[offset++] = tree->data.builtin.num_arguments;
2635 bytecode[offset++] = i;
2640 bytecode[offset++] = tree->data.bytecall.num_arguments;
2644 bytecode[offset++] = i;
2649 bytecode[offset++] = tree->data.builtin.num_arguments;
2653 bytecode[offset++] = i;
2654 bytecode[offset++] = tree->data.builtin.offset;
2660 bytecode[offset++] = tree->data.let.offset;
2664 bytecode[offset++] = i;
2669 bytecode[offset++] = tree->data.struc.offset;
2673 bytecode[offset++] = i;
2682 bytecode[offset++] = i;
2686 bytecode[offset++] = i;
2695 bytecode[offset++] = i;
2699 bytecode[offset++] = i;
2708 bytecode[offset++] = i;
2712 bytecode[offset++] = i;
2734 bytecode, offset);
2749 /* Close bytecode */
2795 /* Allocate space for the bytecode stream */
2797 com->bytecode = LispMalloc(com->length);
2801 *(short*)(com->bytecode + offset) = com->stack.stack;
2803 *(short*)(com->bytecode + offset) = com->stack.bstack;
2805 *(short*)(com->bytecode + offset) = com->stack.pstack;
2808 *(short*)(com->bytecode + offset) = com->table.num_constants;
2810 *(short*)(com->bytecode + offset) = com->table.num_symbols;
2812 *(short*)(com->bytecode + offset) = com->table.num_builtins;
2814 *(short*)(com->bytecode + offset) = com->table.num_bytecodes;
2818 memcpy(com->bytecode + offset, com->table.constants, count);
2821 memcpy(com->bytecode + offset, com->table.symbols, count);
2824 memcpy(com->bytecode + offset, com->table.builtins, count);
2827 /* Store bytecode information */
2828 for (count = 0, codes = (unsigned char**)(com->bytecode + offset);
2830 *codes = com->table.bytecodes[count]->data.bytecode.bytecode->code;
2833 * to check if a function was redefined, and the bytecode is referencing
2836 for (count = 0, names = (LispObj**)(com->bytecode + offset);
2838 *names = com->table.bytecodes[count]->data.bytecode.name;
2842 LinkEmmitBytecode(com, com->block->tree, com->bytecode + offset, 0);
2855 unsigned char *bytecode;
2967 bytecode = stream;
3276 * bytecode generation. Check can be done looking at the
3656 * the bytecode header again */
3661 reg0 = ExecuteBytecode(bytecode);