aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ast.c12
-rw-r--r--ast.h12
-rw-r--r--bf_register.h12
-rw-r--r--code_gen.c119
-rw-r--r--code_gen.h12
-rw-r--r--db.h12
-rw-r--r--db_file.c12
-rw-r--r--db_io.c12
-rw-r--r--db_io.h12
-rw-r--r--db_objects.c12
-rw-r--r--db_private.h13
-rw-r--r--db_properties.c12
-rw-r--r--db_verbs.c14
-rw-r--r--decompile.c27
-rw-r--r--decompile.h12
-rw-r--r--disassemble.c30
-rw-r--r--disassemble.h12
-rw-r--r--eval_env.c13
-rw-r--r--eval_env.h12
-rw-r--r--eval_vm.c12
-rw-r--r--eval_vm.h12
-rw-r--r--exceptions.c12
-rw-r--r--exceptions.h12
-rw-r--r--execute.c106
-rw-r--r--execute.h16
-rw-r--r--extensions.c12
-rw-r--r--functions.c12
-rw-r--r--functions.h14
-rw-r--r--keywords.c12
-rw-r--r--keywords.h12
-rw-r--r--list.c12
-rw-r--r--list.h12
-rw-r--r--log.c12
-rw-r--r--log.h12
-rw-r--r--malloc.c12
-rw-r--r--match.c12
-rw-r--r--match.h12
-rw-r--r--md5.c12
-rw-r--r--md5.h12
-rw-r--r--my-ctype.h12
-rw-r--r--my-fcntl.h12
-rw-r--r--my-in.h12
-rw-r--r--my-inet.h12
-rw-r--r--my-ioctl.h12
-rw-r--r--my-math.h12
-rw-r--r--my-signal.h12
-rw-r--r--my-socket.h12
-rw-r--r--my-stat.h12
-rw-r--r--my-stdarg.h12
-rw-r--r--my-stdio.h12
-rw-r--r--my-stdlib.h12
-rw-r--r--my-string.h12
-rw-r--r--my-sys-time.h12
-rw-r--r--my-time.h12
-rw-r--r--my-types.h12
-rw-r--r--my-unistd.h12
-rw-r--r--my-wait.h12
-rw-r--r--name_lookup.c12
-rw-r--r--name_lookup.h12
-rw-r--r--net_bsd_tcp.c12
-rw-r--r--net_mp_selct.c12
-rw-r--r--net_mplex.c12
-rw-r--r--net_mplex.h12
-rw-r--r--net_multi.c12
-rw-r--r--net_multi.h12
-rw-r--r--net_proto.c12
-rw-r--r--net_proto.h12
-rw-r--r--network.c12
-rw-r--r--network.h12
-rw-r--r--numbers.c12
-rw-r--r--numbers.h12
-rw-r--r--objects.c12
-rw-r--r--opcode.h33
-rw-r--r--options.h39
-rw-r--r--parse_cmd.c12
-rw-r--r--parse_cmd.h12
-rw-r--r--parser.h12
-rw-r--r--parser.y12
-rw-r--r--pattern.c12
-rw-r--r--pattern.h12
-rw-r--r--program.c12
-rw-r--r--program.h12
-rw-r--r--property.c12
-rw-r--r--quota.c12
-rw-r--r--quota.h12
-rw-r--r--random.h12
-rw-r--r--ref_count.c12
-rw-r--r--ref_count.h12
-rw-r--r--regexpr.c12
-rw-r--r--server.c14
-rw-r--r--server.h12
-rw-r--r--storage.c12
-rw-r--r--storage.h12
-rw-r--r--streams.c12
-rw-r--r--streams.h12
-rw-r--r--structures.h12
-rw-r--r--sym_table.c12
-rw-r--r--sym_table.h12
-rw-r--r--tasks.c63
-rw-r--r--tasks.h23
-rw-r--r--timers.c12
-rw-r--r--timers.h12
-rw-r--r--tokens.h12
-rw-r--r--unparse.c12
-rw-r--r--unparse.h12
-rw-r--r--utils.c12
-rw-r--r--utils.h12
-rw-r--r--verbs.c12
-rw-r--r--verbs.h12
-rw-r--r--version.c2
-rw-r--r--version.h12
111 files changed, 1179 insertions, 499 deletions
diff --git a/ast.c b/ast.c
index dcdbebd..01160d9 100644
--- a/ast.c
+++ b/ast.c
@@ -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
*
diff --git a/ast.h b/ast.h
index e5f949e..578d95a 100644
--- a/ast.h
+++ b/ast.h
@@ -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.
*
diff --git a/code_gen.c b/code_gen.c
index 54d1a94..354fa6c 100644
--- a/code_gen.c
+++ b/code_gen.c
@@ -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.
*
diff --git a/code_gen.h b/code_gen.h
index 58e5ac6..c839642 100644
--- a/code_gen.h
+++ b/code_gen.h
@@ -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
*
diff --git a/db.h b/db.h
index 41c43e1..b1373f8 100644
--- a/db.h
+++ b/db.h
@@ -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
*
diff --git a/db_file.c b/db_file.c
index cf85047..78f94f1 100644
--- a/db_file.c
+++ b/db_file.c
@@ -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
*
diff --git a/db_io.c b/db_io.c
index 7c8c70e..f4366e5 100644
--- a/db_io.c
+++ b/db_io.c
@@ -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.
*
diff --git a/db_io.h b/db_io.h
index 0058338..6e00cd1 100644
--- a/db_io.h
+++ b/db_io.h
@@ -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
*
diff --git a/db_verbs.c b/db_verbs.c
index 700185a..423fb40 100644
--- a/db_verbs.c
+++ b/db_verbs.c
@@ -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
*
diff --git a/eval_env.c b/eval_env.c
index 0cc627f..7ad8ee3 100644
--- a/eval_env.c
+++ b/eval_env.c
@@ -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
diff --git a/eval_env.h b/eval_env.h
index a0d95e2..77441d8 100644
--- a/eval_env.h
+++ b/eval_env.h
@@ -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
*
diff --git a/eval_vm.c b/eval_vm.c
index 5e49658..1a7af65 100644
--- a/eval_vm.c
+++ b/eval_vm.c
@@ -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
*
diff --git a/eval_vm.h b/eval_vm.h
index 215aed3..90e4489 100644
--- a/eval_vm.h
+++ b/eval_vm.h
@@ -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
*
diff --git a/execute.c b/execute.c
index 7e7020e..ab8686b 100644
--- a/execute.c
+++ b/execute.c
@@ -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.
*
diff --git a/execute.h b/execute.h
index 82b0db7..6fba4d3 100644
--- a/execute.h
+++ b/execute.h
@@ -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
*
diff --git a/keywords.c b/keywords.c
index ed2f166..fa2f414 100644
--- a/keywords.c
+++ b/keywords.c
@@ -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
*
diff --git a/keywords.h b/keywords.h
index 8d81907..eceda48 100644
--- a/keywords.h
+++ b/keywords.h
@@ -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
*
diff --git a/list.c b/list.c
index 18fce9a..ccb53fc 100644
--- a/list.c
+++ b/list.c
@@ -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.
diff --git a/list.h b/list.h
index 2529db5..54458ec 100644
--- a/list.h
+++ b/list.h
@@ -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
*
diff --git a/log.c b/log.c
index 0b0c258..baf7b1d 100644
--- a/log.c
+++ b/log.c
@@ -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
*
diff --git a/log.h b/log.h
index bf1ab26..2beb53e 100644
--- a/log.h
+++ b/log.h
@@ -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
*
diff --git a/malloc.c b/malloc.c
index 29f443b..9f7c394 100644
--- a/malloc.c
+++ b/malloc.c
@@ -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
*
diff --git a/match.c b/match.c
index bb054d6..ec7a32c 100644
--- a/match.c
+++ b/match.c
@@ -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
*
diff --git a/match.h b/match.h
index c2a96ad..b34c07d 100644
--- a/match.h
+++ b/match.h
@@ -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
*
diff --git a/md5.c b/md5.c
index f6de70b..2cf50ca 100644
--- a/md5.c
+++ b/md5.c
@@ -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
*
diff --git a/md5.h b/md5.h
index ae96acd..444054b 100644
--- a/md5.h
+++ b/md5.h
@@ -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
*
diff --git a/my-ctype.h b/my-ctype.h
index e86b3bb..98d9f92 100644
--- a/my-ctype.h
+++ b/my-ctype.h
@@ -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
*
diff --git a/my-fcntl.h b/my-fcntl.h
index 3ff6015..7742329 100644
--- a/my-fcntl.h
+++ b/my-fcntl.h
@@ -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
*
diff --git a/my-in.h b/my-in.h
index 3472cfc..1c33c25 100644
--- a/my-in.h
+++ b/my-in.h
@@ -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
*
diff --git a/my-inet.h b/my-inet.h
index 72edafe..a28fce7 100644
--- a/my-inet.h
+++ b/my-inet.h
@@ -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.
*
diff --git a/my-ioctl.h b/my-ioctl.h
index 4e42118..0c7e152 100644
--- a/my-ioctl.h
+++ b/my-ioctl.h
@@ -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
*
diff --git a/my-math.h b/my-math.h
index 7108cfd..ca3d37d 100644
--- a/my-math.h
+++ b/my-math.h
@@ -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
*
diff --git a/my-stat.h b/my-stat.h
index a5c4168..70742ec 100644
--- a/my-stat.h
+++ b/my-stat.h
@@ -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
*
diff --git a/my-stdio.h b/my-stdio.h
index 1211475..6c705bb 100644
--- a/my-stdio.h
+++ b/my-stdio.h
@@ -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
*
diff --git a/my-time.h b/my-time.h
index b160151..6db883b 100644
--- a/my-time.h
+++ b/my-time.h
@@ -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
*
diff --git a/my-types.h b/my-types.h
index ee662a1..9fb650c 100644
--- a/my-types.h
+++ b/my-types.h
@@ -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
*
diff --git a/my-wait.h b/my-wait.h
index 3a775d3..c2d4438 100644
--- a/my-wait.h
+++ b/my-wait.h
@@ -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
*
diff --git a/network.c b/network.c
index 19bef5d..dab4abf 100644
--- a/network.c
+++ b/network.c
@@ -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.
*
diff --git a/network.h b/network.h
index 7f140c2..3a2660c 100644
--- a/network.h
+++ b/network.h
@@ -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
*
diff --git a/numbers.c b/numbers.c
index be85811..387cba4 100644
--- a/numbers.c
+++ b/numbers.c
@@ -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
*
diff --git a/numbers.h b/numbers.h
index a1004a3..6e833c5 100644
--- a/numbers.h
+++ b/numbers.h
@@ -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
*
diff --git a/objects.c b/objects.c
index 830266e..981a839 100644
--- a/objects.c
+++ b/objects.c
@@ -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
diff --git a/opcode.h b/opcode.h
index df0a460..a884c93 100644
--- a/opcode.h
+++ b/opcode.h
@@ -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
*
diff --git a/options.h b/options.h
index 4488f0f..9fbcc50 100644
--- a/options.h
+++ b/options.h
@@ -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
*
diff --git a/parser.h b/parser.h
index 63a0ff5..19a5221 100644
--- a/parser.h
+++ b/parser.h
@@ -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
*
diff --git a/parser.y b/parser.y
index 508f60a..ae8968f 100644
--- a/parser.y
+++ b/parser.y
@@ -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
diff --git a/pattern.c b/pattern.c
index 26dbe01..455f574 100644
--- a/pattern.c
+++ b/pattern.c
@@ -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
*
diff --git a/pattern.h b/pattern.h
index f293f04..9bef9ad 100644
--- a/pattern.h
+++ b/pattern.h
@@ -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
*
diff --git a/program.c b/program.c
index f6397e1..d3d752f 100644
--- a/program.c
+++ b/program.c
@@ -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!
diff --git a/program.h b/program.h
index d76abb3..83cc609 100644
--- a/program.h
+++ b/program.h
@@ -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!
diff --git a/property.c b/property.c
index d661a77..219153a 100644
--- a/property.c
+++ b/property.c
@@ -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
*
diff --git a/quota.c b/quota.c
index 21982f6..c2d9580 100644
--- a/quota.c
+++ b/quota.c
@@ -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
*
diff --git a/quota.h b/quota.h
index 4e83aa2..9a9ffa8 100644
--- a/quota.h
+++ b/quota.h
@@ -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
*
diff --git a/random.h b/random.h
index 8e1b669..c85e265 100644
--- a/random.h
+++ b/random.h
@@ -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
diff --git a/regexpr.c b/regexpr.c
index c086ead..7d9a763 100644
--- a/regexpr.c
+++ b/regexpr.c
@@ -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
*
diff --git a/server.c b/server.c
index c7a804e..eb3cbcc 100644
--- a/server.c
+++ b/server.c
@@ -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
*
diff --git a/server.h b/server.h
index cb0b58f..e21811f 100644
--- a/server.h
+++ b/server.h
@@ -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
*
diff --git a/storage.c b/storage.c
index 5fc74df..0e051f4 100644
--- a/storage.c
+++ b/storage.c
@@ -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.
diff --git a/storage.h b/storage.h
index ecc7e5b..11ca34a 100644
--- a/storage.h
+++ b/storage.h
@@ -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.
*
diff --git a/streams.c b/streams.c
index b60bbc2..ca318e3 100644
--- a/streams.c
+++ b/streams.c
@@ -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
*
diff --git a/streams.h b/streams.h
index 9bd0928..c2d6a9b 100644
--- a/streams.h
+++ b/streams.h
@@ -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
*
diff --git a/tasks.c b/tasks.c
index 6a7db7e..0cba46e 100644
--- a/tasks.c
+++ b/tasks.c
@@ -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.
*
diff --git a/tasks.h b/tasks.h
index 5c4c88f..81ba473 100644
--- a/tasks.h
+++ b/tasks.h
@@ -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
*
diff --git a/timers.c b/timers.c
index e6b1eb1..f408d8f 100644
--- a/timers.c
+++ b/timers.c
@@ -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
*
diff --git a/timers.h b/timers.h
index 14b31c6..e537b5a 100644
--- a/timers.h
+++ b/timers.h
@@ -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
*
diff --git a/tokens.h b/tokens.h
index b45af15..bb8ddfe 100644
--- a/tokens.h
+++ b/tokens.h
@@ -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.
*
diff --git a/unparse.c b/unparse.c
index 593495e..2302cc5 100644
--- a/unparse.c
+++ b/unparse.c
@@ -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
*
diff --git a/unparse.h b/unparse.h
index c9fbc5a..352a28b 100644
--- a/unparse.h
+++ b/unparse.h
@@ -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
*
diff --git a/utils.c b/utils.c
index af18f4f..61a5ad8 100644
--- a/utils.c
+++ b/utils.c
@@ -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
*
diff --git a/utils.h b/utils.h
index a462f9f..786d344 100644
--- a/utils.h
+++ b/utils.h
@@ -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
*
diff --git a/verbs.c b/verbs.c
index b474505..0e028bf 100644
--- a/verbs.c
+++ b/verbs.c
@@ -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
*
diff --git a/verbs.h b/verbs.h
index ca74504..22f6075 100644
--- a/verbs.h
+++ b/verbs.h
@@ -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
*
diff --git a/version.c b/version.c
index f889239..d8a7f67 100644
--- a/version.c
+++ b/version.c
@@ -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)
diff --git a/version.h b/version.h
index 5ed14fe..632764f 100644
--- a/version.h
+++ b/version.h
@@ -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
*