diff options
-rw-r--r-- | ast.c | 12 | ||||
-rw-r--r-- | ast.h | 12 | ||||
-rw-r--r-- | bf_register.h | 12 | ||||
-rw-r--r-- | code_gen.c | 119 | ||||
-rw-r--r-- | code_gen.h | 12 | ||||
-rw-r--r-- | db.h | 12 | ||||
-rw-r--r-- | db_file.c | 12 | ||||
-rw-r--r-- | db_io.c | 12 | ||||
-rw-r--r-- | db_io.h | 12 | ||||
-rw-r--r-- | db_objects.c | 12 | ||||
-rw-r--r-- | db_private.h | 13 | ||||
-rw-r--r-- | db_properties.c | 12 | ||||
-rw-r--r-- | db_verbs.c | 14 | ||||
-rw-r--r-- | decompile.c | 27 | ||||
-rw-r--r-- | decompile.h | 12 | ||||
-rw-r--r-- | disassemble.c | 30 | ||||
-rw-r--r-- | disassemble.h | 12 | ||||
-rw-r--r-- | eval_env.c | 13 | ||||
-rw-r--r-- | eval_env.h | 12 | ||||
-rw-r--r-- | eval_vm.c | 12 | ||||
-rw-r--r-- | eval_vm.h | 12 | ||||
-rw-r--r-- | exceptions.c | 12 | ||||
-rw-r--r-- | exceptions.h | 12 | ||||
-rw-r--r-- | execute.c | 106 | ||||
-rw-r--r-- | execute.h | 16 | ||||
-rw-r--r-- | extensions.c | 12 | ||||
-rw-r--r-- | functions.c | 12 | ||||
-rw-r--r-- | functions.h | 14 | ||||
-rw-r--r-- | keywords.c | 12 | ||||
-rw-r--r-- | keywords.h | 12 | ||||
-rw-r--r-- | list.c | 12 | ||||
-rw-r--r-- | list.h | 12 | ||||
-rw-r--r-- | log.c | 12 | ||||
-rw-r--r-- | log.h | 12 | ||||
-rw-r--r-- | malloc.c | 12 | ||||
-rw-r--r-- | match.c | 12 | ||||
-rw-r--r-- | match.h | 12 | ||||
-rw-r--r-- | md5.c | 12 | ||||
-rw-r--r-- | md5.h | 12 | ||||
-rw-r--r-- | my-ctype.h | 12 | ||||
-rw-r--r-- | my-fcntl.h | 12 | ||||
-rw-r--r-- | my-in.h | 12 | ||||
-rw-r--r-- | my-inet.h | 12 | ||||
-rw-r--r-- | my-ioctl.h | 12 | ||||
-rw-r--r-- | my-math.h | 12 | ||||
-rw-r--r-- | my-signal.h | 12 | ||||
-rw-r--r-- | my-socket.h | 12 | ||||
-rw-r--r-- | my-stat.h | 12 | ||||
-rw-r--r-- | my-stdarg.h | 12 | ||||
-rw-r--r-- | my-stdio.h | 12 | ||||
-rw-r--r-- | my-stdlib.h | 12 | ||||
-rw-r--r-- | my-string.h | 12 | ||||
-rw-r--r-- | my-sys-time.h | 12 | ||||
-rw-r--r-- | my-time.h | 12 | ||||
-rw-r--r-- | my-types.h | 12 | ||||
-rw-r--r-- | my-unistd.h | 12 | ||||
-rw-r--r-- | my-wait.h | 12 | ||||
-rw-r--r-- | name_lookup.c | 12 | ||||
-rw-r--r-- | name_lookup.h | 12 | ||||
-rw-r--r-- | net_bsd_tcp.c | 12 | ||||
-rw-r--r-- | net_mp_selct.c | 12 | ||||
-rw-r--r-- | net_mplex.c | 12 | ||||
-rw-r--r-- | net_mplex.h | 12 | ||||
-rw-r--r-- | net_multi.c | 12 | ||||
-rw-r--r-- | net_multi.h | 12 | ||||
-rw-r--r-- | net_proto.c | 12 | ||||
-rw-r--r-- | net_proto.h | 12 | ||||
-rw-r--r-- | network.c | 12 | ||||
-rw-r--r-- | network.h | 12 | ||||
-rw-r--r-- | numbers.c | 12 | ||||
-rw-r--r-- | numbers.h | 12 | ||||
-rw-r--r-- | objects.c | 12 | ||||
-rw-r--r-- | opcode.h | 33 | ||||
-rw-r--r-- | options.h | 39 | ||||
-rw-r--r-- | parse_cmd.c | 12 | ||||
-rw-r--r-- | parse_cmd.h | 12 | ||||
-rw-r--r-- | parser.h | 12 | ||||
-rw-r--r-- | parser.y | 12 | ||||
-rw-r--r-- | pattern.c | 12 | ||||
-rw-r--r-- | pattern.h | 12 | ||||
-rw-r--r-- | program.c | 12 | ||||
-rw-r--r-- | program.h | 12 | ||||
-rw-r--r-- | property.c | 12 | ||||
-rw-r--r-- | quota.c | 12 | ||||
-rw-r--r-- | quota.h | 12 | ||||
-rw-r--r-- | random.h | 12 | ||||
-rw-r--r-- | ref_count.c | 12 | ||||
-rw-r--r-- | ref_count.h | 12 | ||||
-rw-r--r-- | regexpr.c | 12 | ||||
-rw-r--r-- | server.c | 14 | ||||
-rw-r--r-- | server.h | 12 | ||||
-rw-r--r-- | storage.c | 12 | ||||
-rw-r--r-- | storage.h | 12 | ||||
-rw-r--r-- | streams.c | 12 | ||||
-rw-r--r-- | streams.h | 12 | ||||
-rw-r--r-- | structures.h | 12 | ||||
-rw-r--r-- | sym_table.c | 12 | ||||
-rw-r--r-- | sym_table.h | 12 | ||||
-rw-r--r-- | tasks.c | 63 | ||||
-rw-r--r-- | tasks.h | 23 | ||||
-rw-r--r-- | timers.c | 12 | ||||
-rw-r--r-- | timers.h | 12 | ||||
-rw-r--r-- | tokens.h | 12 | ||||
-rw-r--r-- | unparse.c | 12 | ||||
-rw-r--r-- | unparse.h | 12 | ||||
-rw-r--r-- | utils.c | 12 | ||||
-rw-r--r-- | utils.h | 12 | ||||
-rw-r--r-- | verbs.c | 12 | ||||
-rw-r--r-- | verbs.h | 12 | ||||
-rw-r--r-- | version.c | 2 | ||||
-rw-r--r-- | version.h | 12 |
111 files changed, 1179 insertions, 499 deletions
@@ -413,10 +413,14 @@ free_stmt(Stmt * stmt) char rcsid_ast[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:21 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:26 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:21 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:44:59 nop * LambdaMOO 1.8.0p5 * @@ -213,10 +213,14 @@ extern void free_stmt(Stmt *); #endif /* !AST_h */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:22 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:28 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:22 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:02 nop * LambdaMOO 1.8.0p5 * diff --git a/bf_register.h b/bf_register.h index 3a7a717..ca39a10 100644 --- a/bf_register.h +++ b/bf_register.h @@ -28,10 +28,14 @@ extern void register_server(void); extern void register_tasks(void); extern void register_verbs(void); -/* $Log$ -/* Revision 1.1 1997/03/03 03:45:02 nop -/* Initial revision -/* +/* + * $Log$ + * Revision 1.2 1998/12/14 13:17:29 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.1.1.1 1997/03/03 03:45:02 nop + * LambdaMOO 1.8.0p5 + * * Revision 2.2 1996/02/08 06:29:12 pavel * Updated copyright notice for 1996. Release 1.8.0beta1. * @@ -26,6 +26,7 @@ #include "str_intern.h" #include "utils.h" #include "version.h" +#include "my-stdlib.h" /*** The reader will likely find it useful to consult the file *** `MOOCodeSequences.txt' in this directory while reading the code in this @@ -73,6 +74,9 @@ struct state { Fixup *fixups; unsigned num_bytes, max_bytes; Byte *bytes; +#ifdef BYTECODE_REDUCE_REF + Byte *pushmap; +#endif /* BYTECODE_REDUCE_REF */ unsigned cur_stack, max_stack; unsigned saved_stack; unsigned num_loops, max_loops; @@ -115,6 +119,9 @@ init_state(State * state, GState * gstate) state->num_bytes = 0; state->max_bytes = 50; state->bytes = mymalloc(sizeof(Byte) * state->max_bytes, M_BYTECODES); +#ifdef BYTECODE_REDUCE_REF + state->pushmap = mymalloc(sizeof(Byte) * state->max_bytes, M_BYTECODES); +#endif /* BYTECODE_REDUCE_REF */ state->cur_stack = state->max_stack = 0; state->saved_stack = UINT_MAX; @@ -131,6 +138,9 @@ free_state(State state) { myfree(state.fixups, M_CODE_GEN); myfree(state.bytes, M_BYTECODES); +#ifdef BYTECODE_REDUCE_REF + myfree(state.pushmap, M_BYTECODES); +#endif /* BYTECODE_REDUCE_REF */ myfree(state.loops, M_CODE_GEN); } @@ -139,17 +149,17 @@ emit_byte(Byte b, State * state) { if (state->num_bytes == state->max_bytes) { unsigned new_max = 2 * state->max_bytes; - Byte *new_bytes = mymalloc(sizeof(Byte) * new_max, + state->bytes = myrealloc(state->bytes, sizeof(Byte) * new_max, M_BYTECODES); - unsigned i; - - for (i = 0; i < state->num_bytes; i++) - new_bytes[i] = state->bytes[i]; - - myfree(state->bytes, M_BYTECODES); - state->bytes = new_bytes; +#ifdef BYTECODE_REDUCE_REF + state->pushmap = myrealloc(state->pushmap, sizeof(Byte) * new_max, + M_BYTECODES); +#endif /* BYTECODE_REDUCE_REF */ state->max_bytes = new_max; } +#ifdef BYTECODE_REDUCE_REF + state->pushmap[state->num_bytes] = 0; +#endif /* BYTECODE_REDUCE_REF */ state->bytes[state->num_bytes++] = b; } @@ -451,8 +461,12 @@ emit_var_op(Opcode op, unsigned slot, State * state) if (slot >= NUM_READY_VARS) { emit_byte(op + NUM_READY_VARS, state); add_var_ref(slot, state); - } else + } else { emit_byte(op + slot, state); +#ifdef BYTECODE_REDUCE_REF + state->pushmap[state->num_bytes - 1] = op; +#endif /* BYTECODE_REDUCE_REF */ + } } static void generate_expr(Expr *, State *); @@ -1063,12 +1077,27 @@ ref_size(unsigned max) return 4; } +#ifdef BYTECODE_REDUCE_REF +static int +bbd_cmp(int *a, int *b) +{ + return *a - *b; +} +#endif /* BYTECODE_REDUCE_REF */ + static Bytecodes stmt_to_code(Stmt * stmt, GState * gstate) { State state; Bytecodes bc; - unsigned old_i, new_i, fix_i; + int old_i, new_i, fix_i; +#ifdef BYTECODE_REDUCE_REF + int *bbd, n_bbd; /* basic block delimiters */ + unsigned varbits; /* variables we've seen */ +#if NUM_READY_VARS > 32 +#error assumed NUM_READY_VARS was 32 +#endif +#endif /* BYTECODE_REDUCE_REF */ Fixup *fixup; init_state(&state, gstate); @@ -1110,9 +1139,57 @@ stmt_to_code(Stmt * stmt, GState * gstate) bc.vector = mymalloc(sizeof(Byte) * bc.size, M_BYTECODES); +#ifdef BYTECODE_REDUCE_REF + /* + * Create a sorted array filled with the bytecode offsets of + * beginnings of each basic block of code. These are sequences + * of bytecodes which are guaranteed to execute in order (so if + * you start at the top, you will reach the bottom). As such they + * are delimited by conditional and unconditional jump operations, + * each of which has an associated fixup. If you also want to + * limit the blocks to those which have the property "if you get to + * the bottom you had to have started at the top", include the + * *destinations* of the jumps (hence the qsort). + */ + bbd = mymalloc(sizeof(*bbd) * (state.num_fixups + 2), M_CODE_GEN); + n_bbd = 0; + bbd[n_bbd++] = 0; + bbd[n_bbd++] = state.num_bytes; + for (fixup = state.fixups, fix_i = 0; fix_i < state.num_fixups; ++fix_i, ++fixup) + if (fixup->kind == FIXUP_LABEL) + bbd[n_bbd++] = fixup->pc; + qsort(bbd, n_bbd, sizeof(*bbd), bbd_cmp); + + /* + * For every basic block, search backwards for PUT ops. The first + * PUSH we find for each variable slot (looking backwards, remember) + * after each PUT becomes a PUSH_CLEAR, while the rest remain PUSHs. + * In other words, the last use of a variable before it is replaced + * is identified, so that during interpretation the code can avoid + * holding spurious references to it. + */ + while (n_bbd-- > 1) { + varbits = 0; + + for (old_i = bbd[n_bbd] - 1; old_i >= bbd[n_bbd - 1]; --old_i) { + if (state.pushmap[old_i] == OP_PUSH) { + int id = PUSH_n_INDEX(state.bytes[old_i]); + + if (varbits & (1 << id)) { + varbits &= ~(1 << id); + state.bytes[old_i] += OP_PUSH_CLEAR - OP_PUSH; + } + } else if (state.pushmap[old_i] == OP_PUT) { + int id = PUT_n_INDEX(state.bytes[old_i]); + varbits |= 1 << id; + } + } + } + myfree(bbd, M_CODE_GEN); +#endif /* BYTECODE_REDUCE_REF */ + fixup = state.fixups; fix_i = 0; - for (old_i = new_i = 0; old_i < state.num_bytes; old_i++) { if (fix_i < state.num_fixups && fixup->pc == old_i) { unsigned value, size = 0; /* initialized to silence warning */ @@ -1212,10 +1289,22 @@ generate_code(Stmt * stmt, DB_Version version) char rcsid_code_gen[] = "$Id$"; -/* $Log$ -/* Revision 1.4 1998/02/19 07:36:16 nop -/* Initial string interning during db load. -/* +/* + * $Log$ + * Revision 1.5 1998/12/14 13:17:30 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.4 1998/02/19 07:36:16 nop + * Initial string interning during db load. + * + * Revision 1.2.2.2 1997/09/09 07:01:16 bjj + * Change bytecode generation so that x=f(x) calls f() without holding a ref + * to the value of x in the variable slot. See the options.h comment for + * BYTECODE_REDUCE_REF for more details. + * + * This checkin also makes x[y]=z (OP_INDEXSET) take advantage of that (that + * new code is not conditional and still works either way). + * * Revision 1.3 1997/07/07 03:24:53 nop * Merge UNSAFE_OPTS (r5) after extensive testing. * @@ -21,10 +21,14 @@ extern Program *generate_code(Stmt *, DB_Version); -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:25 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:31 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:25 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:02 nop * LambdaMOO 1.8.0p5 * @@ -516,10 +516,14 @@ extern void db_delete_verb(db_verb_handle); #endif /* !DB_h */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:26 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:32 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:26 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:02 nop * LambdaMOO 1.8.0p5 * @@ -720,10 +720,14 @@ db_shutdown() char rcsid_db_file[] = "$Id$"; -/* $Log$ -/* Revision 1.3 1998/02/19 07:36:16 nop -/* Initial string interning during db load. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:17:33 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1998/02/19 07:36:16 nop + * Initial string interning during db load. + * * Revision 1.2 1997/03/03 04:18:27 nop * GNU Indent normalization * @@ -418,10 +418,14 @@ dbio_write_forked_program(Program * program, int f_index) char rcsid_db_io[] = "$Id$"; -/* $Log$ -/* Revision 1.4 1998/02/19 07:36:16 nop -/* Initial string interning during db load. -/* +/* + * $Log$ + * Revision 1.5 1998/12/14 13:17:34 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.4 1998/02/19 07:36:16 nop + * Initial string interning during db load. + * * Revision 1.3 1997/07/07 03:24:53 nop * Merge UNSAFE_OPTS (r5) after extensive testing. * @@ -96,10 +96,14 @@ extern void dbio_write_var(Var); extern void dbio_write_program(Program *); extern void dbio_write_forked_program(Program * prog, int f_index); -/* $Log$ -/* Revision 1.3 1998/02/19 07:36:16 nop -/* Initial string interning during db load. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:17:35 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1998/02/19 07:36:16 nop + * Initial string interning during db load. + * * Revision 1.2 1997/03/03 04:18:28 nop * GNU Indent normalization * diff --git a/db_objects.c b/db_objects.c index ab2c678..26f658c 100644 --- a/db_objects.c +++ b/db_objects.c @@ -552,10 +552,14 @@ dbpriv_set_all_users(Var v) char rcsid_db_objects[] = "$Id$"; -/* $Log$ -/* Revision 1.3 1997/07/07 03:24:53 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:17:36 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/07/07 03:24:53 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.2.2.2 1997/07/07 01:40:20 nop * Because we use first-parent-with-verbs as a verb cache key, we can skip * a generation bump if the target of a chparent has no kids and no verbs. diff --git a/db_private.h b/db_private.h index c62b5d2..a9df49b 100644 --- a/db_private.h +++ b/db_private.h @@ -160,12 +160,13 @@ extern Exception dbpriv_dbio_failed; extern void dbpriv_set_dbio_input(FILE *); extern void dbpriv_set_dbio_output(FILE *); -/* $Log$ -/* Revision 1.3 1997/07/07 03:24:53 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* - * Revision 1.2.2.1 1997/03/20 07:26:03 nop - * First pass at the new verb cache. Some ugly code inside. +/* + * $Log$ + * Revision 1.4 1998/12/14 13:17:37 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/07/07 03:24:53 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. * * Revision 1.2 1997/03/03 04:18:30 nop * GNU Indent normalization diff --git a/db_properties.c b/db_properties.c index eb8fabc..c0b66fd 100644 --- a/db_properties.c +++ b/db_properties.c @@ -679,10 +679,14 @@ dbpriv_fix_properties_after_chparent(Objid oid, Objid old_parent) char rcsid_db_properties[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:31 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:38 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:31 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:44:59 nop * LambdaMOO 1.8.0p5 * @@ -758,11 +758,15 @@ db_verb_allows(db_verb_handle h, Objid progr, db_verb_flag flag) char rcsid_db_verbs[] = "$Id$"; -/* $Log$ -/* Revision 1.4 1997/09/07 23:58:37 nop -/* Bump up cache size to 7507, since lambdamoo has been running with that -/* for months. -/* +/* + * $Log$ + * Revision 1.5 1998/12/14 13:17:39 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.4 1997/09/07 23:58:37 nop + * Bump up cache size to 7507, since lambdamoo has been running with that + * for months. + * * Revision 1.3 1997/07/07 03:24:53 nop * Merge UNSAFE_OPTS (r5) after extensive testing. * diff --git a/decompile.c b/decompile.c index d78c652..b7803ad 100644 --- a/decompile.c +++ b/decompile.c @@ -155,6 +155,13 @@ decompile(Bytecodes bc, Byte * start, Byte * end, Stmt ** stmt_sink, e->e.id = PUSH_n_INDEX(op); push_expr(HOT_OP(e)); continue; +#ifdef BYTECODE_REDUCE_REF + } else if (IS_PUSH_CLEAR_n(op)) { + e = alloc_expr(EXPR_ID); + e->e.id = PUSH_CLEAR_n_INDEX(op); + push_expr(HOT_OP(e)); + continue; +#endif /* BYTECODE_REDUCE_REF */ } else if (IS_PUT_n(op)) { e = alloc_expr(EXPR_ID); e->e.id = PUT_n_INDEX(op); @@ -984,10 +991,22 @@ find_line_number(Program * prog, int vector, int pc) char rcsid_decompile[] = "$Id$"; -/* $Log$ -/* Revision 1.3 1997/07/07 03:24:53 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:17:40 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/07/07 03:24:53 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * + * Revision 1.2.2.2 1997/09/09 07:01:16 bjj + * Change bytecode generation so that x=f(x) calls f() without holding a ref + * to the value of x in the variable slot. See the options.h comment for + * BYTECODE_REDUCE_REF for more details. + * + * This checkin also makes x[y]=z (OP_INDEXSET) take advantage of that (that + * new code is not conditional and still works either way). + * * Revision 1.2.2.1 1997/06/05 09:00:00 bjj * Cache one pc/lineno pair with each Program. Hopefully most programs that * fail multiple times usually do it on the same line! diff --git a/decompile.h b/decompile.h index 5278917..90968c6 100644 --- a/decompile.h +++ b/decompile.h @@ -21,10 +21,14 @@ extern Stmt *decompile_program(Program * program, int vector); extern int find_line_number(Program * program, int vector, int pc); -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:33 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:41 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:33 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:02 nop * LambdaMOO 1.8.0p5 * diff --git a/disassemble.c b/disassemble.c index 13aefb7..0790b8a 100644 --- a/disassemble.c +++ b/disassemble.c @@ -75,6 +75,9 @@ struct mapping mappings[] = {OP_NOT, "NOT"}, {OP_G_PUT, "PUT"}, {OP_G_PUSH, "PUSH"}, +#ifdef BYTECODE_REDUCE_REF + {OP_G_PUSH_CLEAR, "PUSH_CLEAR"}, +#endif /* BYTECODE_REDUCE_REF */ {OP_IMM, "PUSH_LITERAL"}, {OP_MAKE_EMPTY_LIST, "MAKE_EMPTY_LIST"}, {OP_LIST_ADD_TAIL, "LIST_ADD_TAIL"}, @@ -243,6 +246,10 @@ disassemble(Program * prog, Printer p, void *data) stream_add_string(insn, COUNT_TICK(b) ? " * " : " "); if (IS_OPTIM_NUM_OPCODE(b)) stream_printf(insn, "NUM %d", OPCODE_TO_OPTIM_NUM(b)); +#ifdef BYTECODE_REDUCE_REF + else if (IS_PUSH_CLEAR_n(b)) + stream_printf(insn, "PUSH_CLEAR %s", NAMES(PUSH_CLEAR_n_INDEX(b))); +#endif /* BYTECODE_REDUCE_REF */ else if (IS_PUSH_n(b)) stream_printf(insn, "PUSH %s", NAMES(PUSH_n_INDEX(b))); else if (IS_PUT_n(b)) @@ -324,6 +331,9 @@ disassemble(Program * prog, Printer p, void *data) stream_printf(insn, " %s %d", NAMES(a1), a2); break; case OP_G_PUSH: +#ifdef BYTECODE_REDUCE_REF + case OP_G_PUSH_CLEAR: +#endif /* BYTECODE_REDUCE_REF */ case OP_G_PUT: stream_printf(insn, " %s", NAMES(ADD_BYTES(bc.numbytes_var_name))); @@ -464,10 +474,22 @@ register_disassemble(void) char rcsid_disassemble[] = "$Id"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:34 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:42 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2.2.1 1997/09/09 07:01:16 bjj + * Change bytecode generation so that x=f(x) calls f() without holding a ref + * to the value of x in the variable slot. See the options.h comment for + * BYTECODE_REDUCE_REF for more details. + * + * This checkin also makes x[y]=z (OP_INDEXSET) take advantage of that (that + * new code is not conditional and still works either way). + * + * Revision 1.2 1997/03/03 04:18:34 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:44:59 nop * LambdaMOO 1.8.0p5 * diff --git a/disassemble.h b/disassemble.h index bbb2adc..3e9fbc5 100644 --- a/disassemble.h +++ b/disassemble.h @@ -22,10 +22,14 @@ extern void disassemble_to_file(FILE * fp, Program * program); extern void disassemble_to_stderr(Program * program); -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:35 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:43 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:35 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:02 nop * LambdaMOO 1.8.0p5 * @@ -123,10 +123,15 @@ set_rt_env_var(Var * env, int slot, Var v) char rcsid_rt_env[] = "$Id$"; -/* $Log$ -/* Revision 1.4 1997/07/07 03:24:53 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* + +/* + * $Log$ + * Revision 1.5 1998/12/14 13:17:44 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.4 1997/07/07 03:24:53 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.3.2.1 1997/03/20 18:07:50 bjj * Add a flag to the in-memory type identifier so that inlines can cheaply * identify Vars that need actual work done to ref/free/dup them. Add the @@ -34,10 +34,14 @@ void fill_in_rt_consts(Var * env, DB_Version); #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:36 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:45 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:36 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:02 nop * LambdaMOO 1.8.0p5 * @@ -122,10 +122,14 @@ read_vm(int task_id) char rcsid_eval_vm[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:36 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:46 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:36 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:44:59 nop * LambdaMOO 1.8.0p5 * @@ -29,10 +29,14 @@ extern activation top_activ(vm); extern Objid progr_of_cur_verb(vm); extern unsigned suspended_lineno_of_vm(vm); -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:36 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:47 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:36 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:02 nop * LambdaMOO 1.8.0p5 * diff --git a/exceptions.c b/exceptions.c index 1f4ad38..76f1642 100644 --- a/exceptions.c +++ b/exceptions.c @@ -65,10 +65,14 @@ ES_RaiseException(Exception * exception, int value) char rcsid_exceptions[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:37 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:48 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:37 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:44:59 nop * LambdaMOO 1.8.0p5 * diff --git a/exceptions.h b/exceptions.h index 21a7076..37a9b45 100644 --- a/exceptions.h +++ b/exceptions.h @@ -158,10 +158,14 @@ extern void panic(const char *message); #endif /* !Exceptions_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:37 nop -/* GNU Indent normalization -/* +/* + *$Log$ + *Revision 1.3 1998/12/14 13:17:49 nop + *Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:37 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:02 nop * LambdaMOO 1.8.0p5 * @@ -955,8 +955,15 @@ do { \ free_var(list); PUSH_ERROR(E_INVARG); } else if (list.type == TYPE_LIST) { - PUSH(listset(var_dup(list), value, index.v.num)); - free_var(list); + Var res; + + if (var_refcount(list) == 1) + res = list; + else { + res = var_dup(list); + free_var(list); + } + PUSH(listset(res, value, index.v.num)); } else { /* TYPE_STR */ char *tmp_str = str_dup(list.v.str); free_str(list.v.str); @@ -1506,23 +1513,12 @@ do { \ free_var(time); RAISE_ERROR(E_INVARG); } else { - Var *copied_rt_env; - Var task_id; - - copied_rt_env = copy_rt_env(RUN_ACTIV.rt_env, - RUN_ACTIV.prog->num_var_names); - task_id = enqueue_forked_task(program_ref(RUN_ACTIV.prog), - RUN_ACTIV, copied_rt_env, - f_index, time.v.num); - if (task_id.type == TYPE_ERR) { - free_rt_env(copied_rt_env, RUN_ACTIV.prog->num_var_names); - RAISE_ERROR(task_id.v.err); - } else if (op == OP_FORK_WITH_ID) { - free_var(RUN_ACTIV.rt_env[id]); - RUN_ACTIV.rt_env[id] = task_id; - free_var(copied_rt_env[id]); - copied_rt_env[id] = task_id; - } + enum error e; + + e = enqueue_forked_task2(RUN_ACTIV, f_index, time.v.num, + op == OP_FORK_WITH_ID ? id : -1); + if (e != E_NONE) + RAISE_ERROR(e); } } break; @@ -1948,6 +1944,52 @@ do { \ } break; +#ifdef BYTECODE_REDUCE_REF + case OP_PUSH_CLEAR: + case OP_PUSH_CLEAR + 1: + case OP_PUSH_CLEAR + 2: + case OP_PUSH_CLEAR + 3: + case OP_PUSH_CLEAR + 4: + case OP_PUSH_CLEAR + 5: + case OP_PUSH_CLEAR + 6: + case OP_PUSH_CLEAR + 7: + case OP_PUSH_CLEAR + 8: + case OP_PUSH_CLEAR + 9: + case OP_PUSH_CLEAR + 10: + case OP_PUSH_CLEAR + 11: + case OP_PUSH_CLEAR + 12: + case OP_PUSH_CLEAR + 13: + case OP_PUSH_CLEAR + 14: + case OP_PUSH_CLEAR + 15: + case OP_PUSH_CLEAR + 16: + case OP_PUSH_CLEAR + 17: + case OP_PUSH_CLEAR + 18: + case OP_PUSH_CLEAR + 19: + case OP_PUSH_CLEAR + 20: + case OP_PUSH_CLEAR + 21: + case OP_PUSH_CLEAR + 22: + case OP_PUSH_CLEAR + 23: + case OP_PUSH_CLEAR + 24: + case OP_PUSH_CLEAR + 25: + case OP_PUSH_CLEAR + 26: + case OP_PUSH_CLEAR + 27: + case OP_PUSH_CLEAR + 28: + case OP_PUSH_CLEAR + 29: + case OP_PUSH_CLEAR + 30: + case OP_PUSH_CLEAR + 31: + { + Var *vp; + vp = &RUN_ACTIV.rt_env[PUSH_CLEAR_n_INDEX(op)]; + if (vp->type == TYPE_NONE) { + PUSH_ERROR(E_VARNF); + } else { + PUSH(*vp); + vp->type = TYPE_NONE; + } + } + break; +#endif /* BYTECODE_REDUCE_REF */ + case OP_PUT: case OP_PUT + 1: case OP_PUT + 2: @@ -2818,10 +2860,14 @@ read_activ(activation * a, int which_vector) char rcsid_execute[] = "$Id$"; -/* $Log$ -/* Revision 1.9 1998/02/19 07:36:17 nop -/* Initial string interning during db load. -/* +/* + * $Log$ + * Revision 1.10 1998/12/14 13:17:50 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.9 1998/02/19 07:36:17 nop + * Initial string interning during db load. + * * Revision 1.8 1997/07/07 03:24:54 nop * Merge UNSAFE_OPTS (r5) after extensive testing. * @@ -2831,6 +2877,20 @@ char rcsid_execute[] = "$Id$"; * get rid of if (task_killed) by introducing BI_KILL or by moving it into * the BI_FUNC_CALL case, at least. * + * Revision 1.6.2.4 1998/12/06 07:13:21 bjj + * Rationalize enqueue_forked_task interface and fix program_ref leak in + * the case where fork fails with E_QUOTA. Make .queued_task_limit=0 really + * enforce a limit of zero tasks (for old behavior set it to 1, that's the + * effect it used to have). + * + * Revision 1.6.2.3 1997/09/09 07:01:17 bjj + * Change bytecode generation so that x=f(x) calls f() without holding a ref + * to the value of x in the variable slot. See the options.h comment for + * BYTECODE_REDUCE_REF for more details. + * + * This checkin also makes x[y]=z (OP_INDEXSET) take advantage of that (that + * new code is not conditional and still works either way). + * * Revision 1.6.2.2 1997/05/24 07:08:37 bjj * Cleanup of Jay's last checkin to avoid some code duplication. * @@ -129,12 +129,16 @@ extern int read_activ(activation * a, int which_vector); #endif -/* $Log$ -/* Revision 1.3 1997/03/05 08:41:49 bjj -/* A few malloc-friendly changes: rt_stacks are now centrally allocated/freed -/* so that we can keep a pool of them handy. rt_envs are similarly pooled. -/* Both revert to malloc/free for large requests. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:17:51 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/03/05 08:41:49 bjj + * A few malloc-friendly changes: rt_stacks are now centrally allocated/freed + * so that we can keep a pool of them handy. rt_envs are similarly pooled. + * Both revert to malloc/free for large requests. + * * Revision 1.2 1997/03/03 04:18:40 nop * GNU Indent normalization * diff --git a/extensions.c b/extensions.c index 07883c6..86547fc 100644 --- a/extensions.c +++ b/extensions.c @@ -188,10 +188,14 @@ register_extensions() char rcsid_extensions[] = "$Id$"; -/* $Log$ -/* Revision 1.3 1997/07/07 03:24:54 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:17:52 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/07/07 03:24:54 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.2.2.3 1997/05/29 11:56:22 nop * Added Jason Maltzen's builtin to return a list version of cache stats. * diff --git a/functions.c b/functions.c index fdca898..fd9b83b 100644 --- a/functions.c +++ b/functions.c @@ -456,10 +456,14 @@ register_functions(void) char rcsid_functions[] = "$Id$"; -/* $Log$ -/* Revision 1.4 1997/07/07 03:24:54 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.5 1998/12/14 13:17:53 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.4 1997/07/07 03:24:54 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.3.2.2 1997/05/12 04:03:21 bjj * This time for sure! * diff --git a/functions.h b/functions.h index 1b49bd7..8661c7f 100644 --- a/functions.h +++ b/functions.h @@ -91,11 +91,15 @@ extern void load_server_options(void); #endif -/* $Log$ -/* Revision 1.3 1997/03/03 05:03:51 nop -/* steak2: move protectedness into builtin struct, load_server_options() -/* now required for $server_options updates. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:17:54 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/03/03 05:03:51 nop + * steak2: move protectedness into builtin struct, load_server_options() + * now required for $server_options updates. + * * Revision 1.2 1997/03/03 04:18:42 nop * GNU Indent normalization * @@ -218,10 +218,14 @@ find_keyword(const char *word) char rcsid_keywords[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:45 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:55 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:45 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:00 nop * LambdaMOO 1.8.0p5 * @@ -30,10 +30,14 @@ typedef const struct keyword Keyword; extern Keyword *find_keyword(const char *); -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:46 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:56 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:46 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:03 nop * LambdaMOO 1.8.0p5 * @@ -1137,10 +1137,14 @@ register_list(void) char rcsid_list[] = "$Id$"; -/* $Log$ -/* Revision 1.4 1997/07/07 03:24:54 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.5 1998/12/14 13:17:57 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.4 1997/07/07 03:24:54 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.3.2.3 1997/07/03 08:04:01 bjj * Pattern cache was not storing case_matters flag, causing many patterns to * be impossible to find in the cache. @@ -34,10 +34,14 @@ extern Var new_list(int size); extern const char *value2str(Var); extern const char *value_to_literal(Var); -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:47 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:58 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:47 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:03 nop * LambdaMOO 1.8.0p5 * @@ -151,10 +151,14 @@ register_log(void) char rcsid_log[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:48 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:17:59 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:48 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:00 nop * LambdaMOO 1.8.0p5 * @@ -30,10 +30,14 @@ extern void reset_command_history(void); extern void log_command_history(void); extern void add_command_to_history(Objid player, const char *command); -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:48 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:00 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:48 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:03 nop * LambdaMOO 1.8.0p5 * @@ -57,10 +57,14 @@ int malloc_dummy; /* Prevent `empty compilation unit' warning */ char rcsid_malloc[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:49 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:01 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:49 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:00 nop * LambdaMOO 1.8.0p5 * @@ -137,10 +137,14 @@ match_object(Objid player, const char *name) char rcsid_match[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:50 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:02 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:50 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:00 nop * LambdaMOO 1.8.0p5 * @@ -20,10 +20,14 @@ extern Objid match_object(Objid player, const char *name); -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:50 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:03 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:50 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:03 nop * LambdaMOO 1.8.0p5 * @@ -322,10 +322,14 @@ md5_Final(md5ctx_t * context, uint8 digest[16]) memset((char *) context, 0, sizeof(*context)); } -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:51 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:04 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:51 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:00 nop * LambdaMOO 1.8.0p5 * @@ -65,10 +65,14 @@ void md5_Final(md5ctx_t * context, uint8 digest[16]); #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:52 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:05 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:52 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -28,10 +28,14 @@ extern int toupper(int); #endif /* !My_Ctype_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:52 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:07 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:52 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -31,10 +31,14 @@ extern int open(const char *, int,...); #define NONBLOCK_FLAG O_NDELAY #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:52 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:08 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:52 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -40,10 +40,14 @@ extern unsigned32 ntohl(); #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:53 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:09 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:53 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -24,10 +24,14 @@ #include <arpa/inet.h> -/* $Log$ -/* Revision 1.1 1997/03/03 03:45:04 nop -/* Initial revision -/* +/* + * $Log$ + * Revision 1.2 1998/12/14 13:18:10 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.1.1.1 1997/03/03 03:45:04 nop + * LambdaMOO 1.8.0p5 + * * Revision 2.1 1996/02/08 06:04:48 pavel * Updated copyright notice for 1996. Release 1.8.0beta1. * @@ -23,10 +23,14 @@ extern int ioctl(int, int,...); #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:53 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:11 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:53 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -25,10 +25,14 @@ #endif -/* $Log$ -/* Revision 1.1 1997/03/03 03:45:04 nop -/* Initial revision -/* +/* + * $Log$ + * Revision 1.2 1998/12/14 13:18:12 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.1.1.1 1997/03/03 03:45:04 nop + * LambdaMOO 1.8.0p5 + * * Revision 2.2 1996/03/10 01:06:01 pavel * Replaced HUGE_VAL with DBL_MAX, since some systems (e.g., BSDi 1.1) * mis-define the former as positive infinity. Release 1.8.0. diff --git a/my-signal.h b/my-signal.h index fdb0db1..9309543 100644 --- a/my-signal.h +++ b/my-signal.h @@ -47,10 +47,14 @@ extern int sigrelse(int); #define SIGCHLD SIGCLD #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:54 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:13 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:54 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:05 nop * LambdaMOO 1.8.0p5 * diff --git a/my-socket.h b/my-socket.h index 3fa4062..7cfd299 100644 --- a/my-socket.h +++ b/my-socket.h @@ -43,10 +43,14 @@ extern int connect(int, struct sockaddr *, int); extern int shutdown(int, int); #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:54 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:14 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:54 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:05 nop * LambdaMOO 1.8.0p5 * @@ -36,10 +36,14 @@ extern int mknod(const char *file, int mode, int dev); #define mkfifo(path, mode) mknod(path, S_IFIFO | (mode), 0) #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:55 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:15 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:55 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:05 nop * LambdaMOO 1.8.0p5 * diff --git a/my-stdarg.h b/my-stdarg.h index aceb74c..6cd0db9 100644 --- a/my-stdarg.h +++ b/my-stdarg.h @@ -55,10 +55,14 @@ typedef void *va_list; #endif /* BUGGY_STDARG */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:55 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:16 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:55 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:05 nop * LambdaMOO 1.8.0p5 * @@ -64,10 +64,14 @@ extern int vfscanf(FILE *, const char *, va_list); #endif /* !My_Stdio_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:56 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:17 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:56 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:05 nop * LambdaMOO 1.8.0p5 * diff --git a/my-stdlib.h b/my-stdlib.h index 564b079..a8837cc 100644 --- a/my-stdlib.h +++ b/my-stdlib.h @@ -69,10 +69,14 @@ extern int srandom(unsigned); #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:56 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:18 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:56 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:05 nop * LambdaMOO 1.8.0p5 * diff --git a/my-string.h b/my-string.h index 2beb032..a95f6ca 100644 --- a/my-string.h +++ b/my-string.h @@ -85,10 +85,14 @@ extern void *memset(void *, int, size_t); #endif /* !My_String_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:57 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:19 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:57 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:05 nop * LambdaMOO 1.8.0p5 * diff --git a/my-sys-time.h b/my-sys-time.h index 5a5bab7..58e18d4 100644 --- a/my-sys-time.h +++ b/my-sys-time.h @@ -39,10 +39,14 @@ extern int setitimer(int, struct itimerval *, struct itimerval *); extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *); #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:57 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:20 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:57 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:05 nop * LambdaMOO 1.8.0p5 * @@ -51,10 +51,14 @@ extern char *tzname; #endif /* !My_Time_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:58 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:21 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:58 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:05 nop * LambdaMOO 1.8.0p5 * @@ -41,10 +41,14 @@ #endif /* !My_Types_h */ -/* $Log$ -/* Revision 1.3 1997/03/03 06:39:28 nop -/* sys/time.h necessary for FD_ZERO et al...maybe. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:18:22 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/03/03 06:39:28 nop + * sys/time.h necessary for FD_ZERO et al...maybe. + * * Revision 1.2 1997/03/03 04:18:58 nop * GNU Indent normalization * diff --git a/my-unistd.h b/my-unistd.h index 291e57b..5be5615 100644 --- a/my-unistd.h +++ b/my-unistd.h @@ -42,10 +42,14 @@ extern int write(int, const void *, unsigned); #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:18:59 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:23 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:18:59 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:05 nop * LambdaMOO 1.8.0p5 * @@ -24,10 +24,14 @@ extern pid_t waitpid(pid_t, int *, int); #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:00 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:24 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:00 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:05 nop * LambdaMOO 1.8.0p5 * diff --git a/name_lookup.c b/name_lookup.c index 3a6b4e4..f775621 100644 --- a/name_lookup.c +++ b/name_lookup.c @@ -385,10 +385,14 @@ lookup_addr_from_name(const char *name, unsigned timeout) char rcsid_name_lookup[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:00 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:25 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:00 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:00 nop * LambdaMOO 1.8.0p5 * diff --git a/name_lookup.h b/name_lookup.h index a10930f..b5b30c2 100644 --- a/name_lookup.h +++ b/name_lookup.h @@ -50,10 +50,14 @@ extern const char *lookup_name_from_addr(struct sockaddr_in *addr, #endif /* Name_Lookup_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:01 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:26 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:01 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * diff --git a/net_bsd_tcp.c b/net_bsd_tcp.c index 03d5c63..af36792 100644 --- a/net_bsd_tcp.c +++ b/net_bsd_tcp.c @@ -279,10 +279,14 @@ proto_open_connection(Var arglist, int *read_fd, int *write_fd, char rcsid_net_bsd_tcp[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:02 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:27 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:02 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:02 nop * LambdaMOO 1.8.0p5 * diff --git a/net_mp_selct.c b/net_mp_selct.c index 8ec786a..41eb4fb 100644 --- a/net_mp_selct.c +++ b/net_mp_selct.c @@ -85,10 +85,14 @@ mplex_is_writable(int fd) char rcsid_net_mp_selct[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:04 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:28 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:04 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:02 nop * LambdaMOO 1.8.0p5 * diff --git a/net_mplex.c b/net_mplex.c index b4acbf7..ffd63fd 100644 --- a/net_mplex.c +++ b/net_mplex.c @@ -31,10 +31,14 @@ char rcsid_net_mplex[] = "$Id$"; -/* $Log$ -/* Revision 1.1 1997/03/03 03:45:00 nop -/* Initial revision -/* +/* + * $Log$ + * Revision 1.2 1998/12/14 13:18:29 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.1.1.1 1997/03/03 03:45:00 nop + * LambdaMOO 1.8.0p5 + * * Revision 2.1 1996/02/08 06:58:20 pavel * Updated copyright notice for 1996. Release 1.8.0beta1. * diff --git a/net_mplex.h b/net_mplex.h index d1a316b..5d481f1 100644 --- a/net_mplex.h +++ b/net_mplex.h @@ -70,10 +70,14 @@ extern int mplex_is_writable(int fd); #endif /* !Net_MPlex_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:05 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:30 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:05 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * diff --git a/net_multi.c b/net_multi.c index d4ffa5e..7f3d570 100644 --- a/net_multi.c +++ b/net_multi.c @@ -724,10 +724,14 @@ network_shutdown(void) char rcsid_net_multi[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:05 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:31 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:05 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:02 nop * LambdaMOO 1.8.0p5 * diff --git a/net_multi.h b/net_multi.h index 0a05eae..daa9039 100644 --- a/net_multi.h +++ b/net_multi.h @@ -47,10 +47,14 @@ extern int network_set_nonblocking(int fd); #endif /* !Net_Multi_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:06 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:32 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:06 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * diff --git a/net_proto.c b/net_proto.c index 31d0335..9aa171b 100644 --- a/net_proto.c +++ b/net_proto.c @@ -37,10 +37,14 @@ char rcsid_net_proto[] = "$Id$"; -/* $Log$ -/* Revision 1.1 1997/03/03 03:45:00 nop -/* Initial revision -/* +/* + * $Log$ + * Revision 1.2 1998/12/14 13:18:33 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.1.1.1 1997/03/03 03:45:00 nop + * LambdaMOO 1.8.0p5 + * * Revision 2.1 1996/02/08 06:58:12 pavel * Updated copyright notice for 1996. Release 1.8.0beta1. * diff --git a/net_proto.h b/net_proto.h index 6153747..ab043fc 100644 --- a/net_proto.h +++ b/net_proto.h @@ -158,10 +158,14 @@ extern void proto_close_listener(int fd); #endif /* !Net_Proto_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:07 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:34 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:07 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -23,10 +23,14 @@ # include "net_multi.c" #endif -/* $Log$ -/* Revision 1.1 1997/03/03 03:45:00 nop -/* Initial revision -/* +/* + * $Log$ + * Revision 1.2 1998/12/14 13:18:35 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.1.1.1 1997/03/03 03:45:00 nop + * LambdaMOO 1.8.0p5 + * * Revision 2.0 1995/11/30 05:11:37 pavel * New baseline version, corresponding to release 1.8.0alpha1. * @@ -244,10 +244,14 @@ extern void network_shutdown(void); #endif /* Network_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:10 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:36 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:10 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -709,10 +709,14 @@ register_numbers(void) char rcsid_numbers[] = "$Id$"; -/* $Log$ -/* Revision 1.3 1997/03/08 06:25:42 nop -/* 1.8.0p6 merge by hand. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:18:37 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/03/08 06:25:42 nop + * 1.8.0p6 merge by hand. + * * Revision 1.2 1997/03/03 04:19:11 nop * GNU Indent normalization * @@ -31,10 +31,14 @@ extern Var do_divide(Var, Var); extern Var do_modulus(Var, Var); extern Var do_power(Var, Var); -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:11 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:38 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:11 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -620,10 +620,14 @@ register_objects(void) char rcsid_objects[] = "$Id$"; -/* $Log$ -/* Revision 1.3 1997/07/07 03:24:54 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:18:39 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/07/07 03:24:54 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.2.2.1 1997/03/20 18:07:50 bjj * Add a flag to the in-memory type identifier so that inlines can cheaply * identify Vars that need actual work done to ref/free/dup them. Add the @@ -18,6 +18,8 @@ #ifndef Opcode_h #define Opcode_h 1 +#include "options.h" + #define NUM_READY_VARS 32 enum Extended_Opcode { @@ -66,6 +68,12 @@ enum Opcode { OP_PUSH, OP_G_PUSH = OP_PUSH + NUM_READY_VARS, +#ifdef BYTECODE_REDUCE_REF + /* final variable references, no tick: */ + OP_PUSH_CLEAR, + OP_G_PUSH_CLEAR = OP_PUSH_CLEAR + NUM_READY_VARS, +#endif /* BYTECODE_REDUCE_REF */ + /* expr-related opcodes with no tick: */ OP_IMM, OP_MAKE_EMPTY_LIST, OP_LIST_ADD_TAIL, OP_LIST_APPEND, OP_PUSH_REF, OP_PUT_TEMP, OP_PUSH_TEMP, @@ -85,6 +93,11 @@ enum Opcode { #define IS_PUSH_n(o) ((o) >= (unsigned) OP_PUSH \ && (o) < (unsigned) OP_G_PUSH) +#ifdef BYTECODE_REDUCE_REF +#define IS_PUSH_CLEAR_n(o) ((o) >= (unsigned) OP_PUSH_CLEAR \ + && (o) < (unsigned) OP_G_PUSH_CLEAR) +#define PUSH_CLEAR_n_INDEX(o) ((o) - OP_PUSH_CLEAR) +#endif /* BYTECODE_REDUCE_REF */ #define IS_PUT_n(o) ((o) >= (unsigned) OP_PUT \ && (o) < (unsigned) OP_G_PUT) #define PUSH_n_INDEX(o) ((o) - OP_PUSH) @@ -109,10 +122,22 @@ typedef enum Extended_Opcode Extended_Opcode; #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:13 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:40 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2.2.1 1997/09/09 07:01:17 bjj + * Change bytecode generation so that x=f(x) calls f() without holding a ref + * to the value of x in the variable slot. See the options.h comment for + * BYTECODE_REDUCE_REF for more details. + * + * This checkin also makes x[y]=z (OP_INDEXSET) take advantage of that (that + * new code is not conditional and still works either way). + * + * Revision 1.2 1997/03/03 04:19:13 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -203,6 +203,23 @@ #define IGNORE_PROP_PROTECTED /****************************************************************************** + * The code generator can now recognize situations where the code will not + * refer to the value of a variable again and generate opcodes that will + * keep the interpreter from holding references to the value in the runtime + * environment variable slot. Before when doing something like x=f(x), the + * interpreter was guaranteed to have a reference to the value of x while f() + * was running, meaning that f() always had to copy x to modify it. With + * BYTECODE_REDUCE_REF enabled, f() could be called with the last reference + * to the value of x. So for example, x={@x,y} can (if there are no other + * references to the value of x in variables or properties) just append to + * x rather than make a copy and append to that. If it *does* have to copy, + * the next time (if it's in a loop) it will have the only reference to the + * copy and then it can take advantage. + ****************************************************************************** + */ +#define BYTECODE_REDUCE_REF + +/****************************************************************************** * This package comes with a copy of the implementation of malloc() from GNU * Emacs. This is a very nice and reasonably portable implementation, but some * systems, notably the NeXT machine, won't allow programs to provide their own @@ -300,11 +317,23 @@ #endif /* !Options_h */ -/* $Log$ -/* Revision 1.3 1997/03/03 06:14:45 nop -/* Nobody actually uses protected properties. Make IGNORE_PROP_PROTECTED -/* the default. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:18:41 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3.2.1 1997/09/09 07:01:17 bjj + * Change bytecode generation so that x=f(x) calls f() without holding a ref + * to the value of x in the variable slot. See the options.h comment for + * BYTECODE_REDUCE_REF for more details. + * + * This checkin also makes x[y]=z (OP_INDEXSET) take advantage of that (that + * new code is not conditional and still works either way). + * + * Revision 1.3 1997/03/03 06:14:45 nop + * Nobody actually uses protected properties. Make IGNORE_PROP_PROTECTED + * the default. + * * Revision 1.2 1997/03/03 04:19:13 nop * GNU Indent normalization * diff --git a/parse_cmd.c b/parse_cmd.c index d93a23d..0b49eac 100644 --- a/parse_cmd.c +++ b/parse_cmd.c @@ -251,10 +251,14 @@ free_parsed_command(Parsed_Command * pc) char rcsid_parse_cmd[] = "$Id$"; -/* $Log$ -/* Revision 1.3 1997/07/07 03:24:54 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:18:42 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/07/07 03:24:54 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.2.2.2 1997/05/30 18:36:17 nop * Oops, make sure to free words as M_STRING_PTRS, not M_STRING. I crashed * LambdaMOO for the first time with this! diff --git a/parse_cmd.h b/parse_cmd.h index 3a285eb..8454731 100644 --- a/parse_cmd.h +++ b/parse_cmd.h @@ -44,10 +44,14 @@ extern void free_parsed_command(Parsed_Command *); #endif /* !Parse_Cmd_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:15 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:43 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:15 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -33,10 +33,14 @@ extern Program *parse_list_as_program(Var code, Var * errors); #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:16 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:44 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:16 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -1224,10 +1224,14 @@ parse_list_as_program(Var code, Var *errors) char rcsid_parser[] = "$Id$"; -/* $Log$ -/* Revision 1.1 1997/03/03 03:45:02 nop -/* Initial revision -/* +/* + * $Log$ + * Revision 1.2 1998/12/14 13:18:45 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.1.1.1 1997/03/03 03:45:02 nop + * LambdaMOO 1.8.0p5 + * * Revision 2.11 1996/05/12 21:28:37 pavel * Removed non-backward-compatible parse error for negating a non-numeric * literal. Made certain aspects of floating-point literal parsing be @@ -176,10 +176,14 @@ free_pattern(Pattern p) char rcsid_pattern[] = "$Id"; -/* $Log$ -/* Revision 1.3 1997/03/03 07:04:01 bjj -/* fastmap is mymalloc'd, so myfree it -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:18:46 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/03/03 07:04:01 bjj + * fastmap is mymalloc'd, so myfree it + * * Revision 1.2 1997/03/03 04:19:16 nop * GNU Indent normalization * @@ -34,10 +34,14 @@ extern Match_Result match_pattern(Pattern p, const char *string, Match_Indices * indices, int is_reverse); extern void free_pattern(Pattern p); -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:17 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:47 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:17 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -114,10 +114,14 @@ free_program(Program * p) char rcsid_program[] = "$Id$"; -/* $Log$ -/* Revision 1.4 1997/07/07 03:24:54 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.5 1998/12/14 13:18:48 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.4 1997/07/07 03:24:54 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.3.2.1 1997/06/05 09:00:00 bjj * Cache one pc/lineno pair with each Program. Hopefully most programs that * fail multiple times usually do it on the same line! @@ -61,10 +61,14 @@ extern void free_program(Program *); #endif /* !Program_H */ -/* $Log$ -/* Revision 1.3 1997/07/07 03:24:55 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:18:49 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/07/07 03:24:55 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.2.2.1 1997/06/05 09:00:01 bjj * Cache one pc/lineno pair with each Program. Hopefully most programs that * fail multiple times usually do it on the same line! @@ -331,10 +331,14 @@ register_property(void) char rcsid_property[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:18 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:50 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:18 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:01 nop * LambdaMOO 1.8.0p5 * @@ -68,10 +68,14 @@ incr_quota(Objid player) char rcsid_quota[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:19 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:51 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:19 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:01 nop * LambdaMOO 1.8.0p5 * @@ -20,10 +20,14 @@ extern int decr_quota(Objid player); extern void incr_quota(Objid player); -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:19 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:52 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:19 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -33,10 +33,14 @@ extern void srand48(long); # endif #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:20 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:53 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:20 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * diff --git a/ref_count.c b/ref_count.c index eb820da..e4702bd 100644 --- a/ref_count.c +++ b/ref_count.c @@ -210,10 +210,14 @@ delref(const void *p) char rcsid_ref_count[] = "$Id$"; -/* $Log$ -/* Revision 1.3 1997/07/07 03:24:55 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:18:54 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/07/07 03:24:55 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.2.2.1 1997/03/20 18:59:24 bjj * Allocate refcounts with objects that can be addref()'d (strings, lists, * floats). Use macros to manipulate those counts. This completely replaces diff --git a/ref_count.h b/ref_count.h index ab4f332..9f4f61e 100644 --- a/ref_count.h +++ b/ref_count.h @@ -26,10 +26,14 @@ extern unsigned int delref(const void *p); #define refcount(X) (((int *)(X))[-1]) #endif -/* $Log$ -/* Revision 1.3 1997/07/07 03:24:55 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:18:55 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/07/07 03:24:55 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.2.2.1 1997/03/20 18:59:25 bjj * Allocate refcounts with objects that can be addref()'d (strings, lists, * floats). Use macros to manipulate those counts. This completely replaces @@ -1640,10 +1640,14 @@ main() char rcsid_regexpr[] = "$Id"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:22 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:56 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:22 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:01 nop * LambdaMOO 1.8.0p5 * @@ -1735,11 +1735,15 @@ register_server(void) char rcsid_server[] = "$Id$"; -/* $Log$ -/* Revision 1.3 1997/03/03 05:03:52 nop -/* steak2: move protectedness into builtin struct, load_server_options() -/* now required for $server_options updates. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:18:57 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/03/03 05:03:52 nop + * steak2: move protectedness into builtin struct, load_server_options() + * now required for $server_options updates. + * * Revision 1.2 1997/03/03 04:19:24 nop * GNU Indent normalization * @@ -160,10 +160,14 @@ extern int read_active_connections(void); #endif /* Server_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:26 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:18:58 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:26 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -223,10 +223,14 @@ memory_usage(void) char rcsid_storage[] = "$Id$"; -/* $Log$ -/* Revision 1.4 1997/07/07 03:24:55 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.5 1998/12/14 13:18:59 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.4 1997/07/07 03:24:55 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.3.2.3 1997/05/29 20:47:32 nop * Stupid hack to allow non-gcc compilers to use -Dinline= to make the server * compile. @@ -56,10 +56,14 @@ free_str(const char *s) #endif /* Storage_h */ -/* $Log$ -/* Revision 1.4 1998/02/19 07:36:17 nop -/* Initial string interning during db load. -/* +/* + * $Log$ + * Revision 1.5 1998/12/14 13:19:00 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.4 1998/02/19 07:36:17 nop + * Initial string interning during db load. + * * Revision 1.3 1997/07/07 03:24:55 nop * Merge UNSAFE_OPTS (r5) after extensive testing. * @@ -229,10 +229,14 @@ stream_length(Stream * s) char rcsid_streams[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:28 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:19:01 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:28 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:01 nop * LambdaMOO 1.8.0p5 * @@ -37,10 +37,14 @@ extern int stream_length(Stream *); #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:28 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:19:02 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:28 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * diff --git a/structures.h b/structures.h index d6ff260..1964e90 100644 --- a/structures.h +++ b/structures.h @@ -111,10 +111,14 @@ extern Var zero; /* useful constant */ #endif /* !Structures_h */ -/* $Log$ -/* Revision 1.3 1997/07/07 03:24:55 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:19:04 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/07/07 03:24:55 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.2.2.2 1997/05/23 07:01:30 nop * Added experimental support for 32-bit pointer model on Alpha with DEC cc. * diff --git a/sym_table.c b/sym_table.c index e16bca3..f5141a6 100644 --- a/sym_table.c +++ b/sym_table.c @@ -148,10 +148,14 @@ free_names(Names * names) char rcsid_sym_table[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:29 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:19:05 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:29 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:01 nop * LambdaMOO 1.8.0p5 * diff --git a/sym_table.h b/sym_table.h index d027b28..2472838 100644 --- a/sym_table.h +++ b/sym_table.h @@ -57,10 +57,14 @@ extern void free_names(Names *); #endif /* !Sym_Table_h */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:30 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:19:06 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:30 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -717,7 +717,9 @@ enqueue_input_task(tqueue * tq, const char *input, int at_front) if (!tq->hold_input || tq->reading) /* Anything to do with this line? */ ensure_usage(tq); - if (!tq->input_suspended && tq->total_input_length > INPUT_HIWAT) { + if (!tq->input_suspended + && tq->connected + && tq->total_input_length > INPUT_HIWAT) { server_suspend_input(tq->player); tq->input_suspended = 1; } @@ -814,31 +816,36 @@ check_user_task_limit(Objid user) if (limit < 0) limit = server_int_option("queued_task_limit", -1); - if (tq && limit >= 0 && tq->num_bg_tasks >= limit) + if (limit < 0) + return 1; + else if ((tq ? tq->num_bg_tasks : 0) >= limit) return 0; else return 1; } -Var -enqueue_forked_task(Program * program, activation a, Var * rt_env, - int f_index, unsigned after_seconds) +enum error +enqueue_forked_task2(activation a, int f_index, unsigned after_seconds, int vid) { - int id = new_task_id(); - Var v; + int id; + Var *rt_env; - if (check_user_task_limit(a.progr)) { - a.verb = str_ref(a.verb); - a.verbname = str_ref(a.verbname); - enqueue_ft(program, a, rt_env, f_index, time(0) + after_seconds, id); - v.type = TYPE_INT; - v.v.num = id; - } else { - v.type = TYPE_ERR; - v.v.err = E_QUOTA; + if (!check_user_task_limit(a.progr)) + return E_QUOTA; + + id = new_task_id(); + a.verb = str_ref(a.verb); + a.verbname = str_ref(a.verbname); + a.prog = program_ref(a.prog); + if (vid >= 0) { + free_var(a.rt_env[vid]); + a.rt_env[vid].type = TYPE_INT; + a.rt_env[vid].v.num = id; } + rt_env = copy_rt_env(a.rt_env, a.prog->num_var_names); + enqueue_ft(a.prog, a, rt_env, f_index, time(0) + after_seconds, id); - return v; + return E_NONE; } enum error @@ -1939,10 +1946,24 @@ register_tasks(void) char rcsid_tasks[] = "$Id$"; -/* $Log$ -/* Revision 1.4 1997/07/07 03:24:55 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.5 1998/12/14 13:19:07 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.4 1997/07/07 03:24:55 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * + * Revision 1.3.2.3 1998/12/06 07:13:22 bjj + * Rationalize enqueue_forked_task interface and fix program_ref leak in + * the case where fork fails with E_QUOTA. Make .queued_task_limit=0 really + * enforce a limit of zero tasks (for old behavior set it to 1, that's the + * effect it used to have). + * + * Revision 1.3.2.2 1998/11/23 01:10:55 bjj + * Fix a server crash when force_input() fills the input queue of an + * unconnected object. No observable behavior has changed. + * * Revision 1.3.2.1 1997/05/21 03:41:34 bjj * Fix a memleak when a forked task was killed before it ever started. * @@ -36,9 +36,8 @@ extern int tasks_set_connection_option(task_queue, const char *, Var); extern void new_input_task(task_queue, const char *); -extern Var enqueue_forked_task(Program * program, activation a, - Var * rt_env, int f_index, - unsigned after_seconds); +extern enum error enqueue_forked_task2(activation a, int f_index, + unsigned after_seconds, int vid); extern enum error enqueue_suspended_task(vm the_vm, void *data); /* data == &(int after_seconds) */ extern enum error make_reading_task(vm the_vm, void *data); @@ -109,10 +108,20 @@ extern db_verb_handle find_verb_for_programming(Objid player, #endif /* !Tasks_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:32 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:19:08 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2.2.1 1998/12/06 07:13:23 bjj + * Rationalize enqueue_forked_task interface and fix program_ref leak in + * the case where fork fails with E_QUOTA. Make .queued_task_limit=0 really + * enforce a limit of zero tasks (for old behavior set it to 1, that's the + * effect it used to have). + * + * Revision 1.2 1997/03/03 04:19:32 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -302,10 +302,14 @@ reenable_timers(void) char rcsid_timers[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:33 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:19:09 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:33 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:01 nop * LambdaMOO 1.8.0p5 * @@ -34,10 +34,14 @@ extern int virtual_timer_available(); #endif /* !Timers_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:33 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:19:10 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:33 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -24,10 +24,14 @@ #endif -/* $Log$ -/* Revision 1.1 1997/03/03 03:45:04 nop -/* Initial revision -/* +/* + * $Log$ + * Revision 1.2 1998/12/14 13:19:11 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.1.1.1 1997/03/03 03:45:04 nop + * LambdaMOO 1.8.0p5 + * * Revision 2.0 1995/11/30 05:08:14 pavel * New baseline version, corresponding to release 1.8.0alpha1. * @@ -734,10 +734,14 @@ unparse_to_stderr(Program * p, int fully_parenthesize, int indent_lines, char rcsid_unparse[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:34 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:19:12 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:34 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:01 nop * LambdaMOO 1.8.0p5 * @@ -41,10 +41,14 @@ extern const char *unparse_error(enum error); /* E_NONE -> "No error" */ #endif -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:35 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:19:13 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:35 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -435,10 +435,14 @@ binary_to_raw_bytes(const char *binary, int *buflen) char rcsid_utils[] = "$Id$"; -/* $Log$ -/* Revision 1.3 1997/07/07 03:24:55 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.4 1998/12/14 13:19:14 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.3 1997/07/07 03:24:55 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.2.2.3 1997/03/21 15:11:22 bjj * add var_refcount interface * @@ -84,10 +84,14 @@ extern const char *binary_to_raw_bytes(const char *binary, int *rawlen); #endif -/* $Log$ -/* Revision 1.5 1997/07/07 03:24:55 nop -/* Merge UNSAFE_OPTS (r5) after extensive testing. -/* +/* + * $Log$ + * Revision 1.6 1998/12/14 13:19:15 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.5 1997/07/07 03:24:55 nop + * Merge UNSAFE_OPTS (r5) after extensive testing. + * * Revision 1.4.2.2 1997/03/21 15:11:22 bjj * add var_refcount interface * @@ -577,10 +577,14 @@ register_verbs(void) char rcsid_verbs[] = "$Id$"; -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:37 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:19:16 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:37 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:01 nop * LambdaMOO 1.8.0p5 * @@ -21,10 +21,14 @@ extern enum error validate_verb_descriptor(Var desc); extern db_verb_handle find_described_verb(Objid oid, Var desc); -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:38 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:19:17 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:38 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * @@ -40,7 +40,7 @@ #include "config.h" #include "version.h" -const char *server_version = "1.8.0r5"; +const char *server_version = "1.8.0r6-pre"; int check_version(DB_Version version) @@ -57,10 +57,14 @@ extern int check_version(DB_Version); #endif /* !Version_H */ -/* $Log$ -/* Revision 1.2 1997/03/03 04:19:39 nop -/* GNU Indent normalization -/* +/* + * $Log$ + * Revision 1.3 1998/12/14 13:19:19 nop + * Merge UNSAFE_OPTS (ref fixups); fix Log tag placement to fit CVS whims + * + * Revision 1.2 1997/03/03 04:19:39 nop + * GNU Indent normalization + * * Revision 1.1.1.1 1997/03/03 03:45:04 nop * LambdaMOO 1.8.0p5 * |