X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fbytecode.c;h=72f5d62a67970432a229ebf6fb9cda63afd6b5b2;hb=4722bc54af41d050cb2bf24670d152f3fb0547b7;hp=8a2c963e9e30bb7e21be4bdd000ce4726ea3e522;hpb=caf1416adb403b6334ce635e58b269b6c653aa39;p=chise%2Fxemacs-chise.git.1 diff --git a/src/bytecode.c b/src/bytecode.c index 8a2c963..72f5d62 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -211,6 +211,7 @@ typedef enum Opcode Opcode; typedef unsigned char Opbyte; +static void check_opcode (Opcode opcode); static void invalid_byte_code_error (char *error_message, ...); Lisp_Object * execute_rare_opcode (Lisp_Object *stack_ptr, @@ -637,6 +638,7 @@ execute_optimized_program (const Opbyte *program, invalid_byte_code_error ("byte code stack overflow"); if (stack_ptr < stack_beg) invalid_byte_code_error ("byte code stack underflow"); + check_opcode (opcode); #endif #ifdef BYTE_CODE_METER @@ -1474,7 +1476,7 @@ execute_rare_opcode (Lisp_Object *stack_ptr, } default: - abort(); + ABORT(); break; } return stack_ptr; @@ -1622,7 +1624,7 @@ optimize_byte_code (/* in */ int from; int to; }; - struct jump * const jumps = alloca_array (struct jump, comfy_size); + struct jump * const jumps = xnew_array (struct jump, comfy_size); struct jump *jumps_ptr = jumps; Opbyte *program_ptr = program; @@ -1857,7 +1859,7 @@ optimize_byte_code (/* in */ break; default: - abort(); + ABORT(); break; } } @@ -1866,6 +1868,7 @@ optimize_byte_code (/* in */ /* *program_ptr++ = 0; */ *program_length = program_ptr - program; + xfree(jumps); } /* Optimize the byte code and store the optimized program, only @@ -1891,7 +1894,8 @@ optimize_compiled_function (Lisp_Object compiled_function) program = alloca_array (Opbyte, 1 + 2 * XSTRING_LENGTH (f->instructions)); optimize_byte_code (f->instructions, f->constants, program, &program_length, &varbind_count); - f->specpdl_depth = XINT (Flength (f->arglist)) + varbind_count; + f->specpdl_depth = (unsigned short) (XINT (Flength (f->arglist)) + + varbind_count); f->instructions = make_opaque (program, program_length * sizeof (Opbyte)); } @@ -2355,7 +2359,7 @@ If the byte code for compiled function FUNCTION is lazy-loaded, fetch it now. f->constants = XCDR (tem); return function; } - abort (); + ABORT (); return Qnil; /* not reached */ }