diff --git a/src/apply_low.h b/src/apply_low.h
index 9e25771a62401ac3e1cc7b7ad15d92a83bfc3102..dec5c63c1154022f1737040adf5bc9b4c81c5d3b 100644
--- a/src/apply_low.h
+++ b/src/apply_low.h
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: apply_low.h,v 1.13 2003/01/05 19:54:04 grubba Exp $
+|| $Id: apply_low.h,v 1.14 2003/01/09 15:21:26 grubba Exp $
 */
 
     {
@@ -108,7 +108,7 @@
 
       
 #ifdef PIKE_DEBUG
-	if(t_flag > 9)
+	if(Pike_interpreter.trace_level > 9)
 	{
 	  fprintf(stderr,"-- ref: inoff=%d idoff=%d flags=%d\n",
 		  ref->inherit_offset,
@@ -123,7 +123,7 @@
 		  new_frame->context.parent_offset,
 		  DO_NOT_WARN((long)new_frame->context.storage_offset),
 		  new_frame->context.name ? new_frame->context.name->str  : "NULL");
-	  if(t_flag>19)
+	  if(Pike_interpreter.trace_level>19)
 	  {
 	    describe(new_frame->context.prog);
 	  }
@@ -154,7 +154,7 @@
       if(new_frame->scope) add_ref(new_frame->scope);
 #endif
 
-      if(t_flag)
+      if(Pike_interpreter.trace_level)
       {
 	char buf[50];
 
diff --git a/src/builtin.cmod b/src/builtin.cmod
index 79ac8d48e00ee6a1362dd52b93b6e88d86c5f34f..5846d98c17b4c27d16a21967df28396f733c6e51 100644
--- a/src/builtin.cmod
+++ b/src/builtin.cmod
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: builtin.cmod,v 1.104 2003/01/08 19:35:42 mast Exp $
+|| $Id: builtin.cmod,v 1.105 2003/01/09 15:21:26 grubba Exp $
 */
 
 #include "global.h"
@@ -344,16 +344,16 @@ PIKEFUN int trace(int t, void|int all_threads)
   optflags OPT_SIDE_EFFECT;
 {
   pop_n_elems(args);
-  push_int(t_flag);
+  push_int(Pike_interpreter.trace_level);
 #ifdef PIKE_THREADS
   if (!all_threads || UNSAFE_IS_ZERO (all_threads))
-    t_flag=t;
+    Pike_interpreter.trace_level=t;
   else {
     struct thread_state *s;
     FOR_EACH_THREAD(s, s->state.trace_level = t);
   }
 #else
-  t_flag=t;
+  Pike_interpreter.trace_level=t;
 #endif
 }
 
diff --git a/src/error.c b/src/error.c
index ee995893a52f42868798ce2fc83a81d266416b04..7360d918faaddcb2f532325acc4e2c9e8ab6563d 100644
--- a/src/error.c
+++ b/src/error.c
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: error.c,v 1.100 2003/01/05 00:58:02 nilsson Exp $
+|| $Id: error.c,v 1.101 2003/01/09 15:21:26 grubba Exp $
 */
 
 #define NO_PIKE_SHORTHAND
@@ -23,7 +23,7 @@
 #include "threads.h"
 #include "gc.h"
 
-RCSID("$Id: error.c,v 1.100 2003/01/05 00:58:02 nilsson Exp $");
+RCSID("$Id: error.c,v 1.101 2003/01/09 15:21:26 grubba Exp $");
 
 #undef ATTRIBUTE
 #define ATTRIBUTE(X)
@@ -389,7 +389,7 @@ PMOD_EXPORT DECLSPEC(noreturn) void debug_fatal(const char *fmt, ...) ATTRIBUTE(
 
   (void)VFPRINTF(stderr, fmt, args);
 
-  d_flag=t_flag=0;
+  d_flag=Pike_interpreter.trace_level=0;
   if(Pike_sp && Pike_interpreter.evaluator_stack &&
      master_object && master_object->prog)
   {
diff --git a/src/gc.c b/src/gc.c
index 9eaca5e8aeb5500cf526048dd153a289d37d0c09..301cda662bb81be70c05df8ea128a716691342c8 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: gc.c,v 1.191 2002/12/07 16:10:34 grubba Exp $
+|| $Id: gc.c,v 1.192 2003/01/09 15:21:26 grubba Exp $
 */
 
 #include "global.h"
@@ -31,7 +31,7 @@ struct callback *gc_evaluator_callback=0;
 
 #include "block_alloc.h"
 
-RCSID("$Id: gc.c,v 1.191 2002/12/07 16:10:34 grubba Exp $");
+RCSID("$Id: gc.c,v 1.192 2003/01/09 15:21:26 grubba Exp $");
 
 /* Run garbage collect approximately every time
  * 20 percent of all arrays, objects and programs is
@@ -2466,7 +2466,7 @@ int do_gc(void)
   last_cycle = 0;
 
 #ifdef PIKE_DEBUG
-  if(GC_VERBOSE_DO(1 ||) t_flag) {
+  if(GC_VERBOSE_DO(1 ||) Pike_interpreter.trace_level) {
     fprintf(stderr,"Garbage collecting ... ");
     GC_VERBOSE_DO(fprintf(stderr, "\n"));
 #ifdef HAVE_GETHRTIME
@@ -2843,7 +2843,7 @@ int do_gc(void)
 
 #ifdef PIKE_DEBUG
   UNSET_ONERROR (uwp);
-  if(GC_VERBOSE_DO(1 ||) t_flag)
+  if(GC_VERBOSE_DO(1 ||) Pike_interpreter.trace_level)
   {
 #ifdef HAVE_GETHRTIME
     fprintf(stderr,
diff --git a/src/interpret.c b/src/interpret.c
index bc700f0092c633c3744712dd9870ed1ab244e14a..c9741d50272a1e2bac45aa5d00bb547979a0b7f5 100644
--- a/src/interpret.c
+++ b/src/interpret.c
@@ -2,11 +2,11 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: interpret.c,v 1.286 2003/01/05 19:54:04 grubba Exp $
+|| $Id: interpret.c,v 1.287 2003/01/09 15:21:26 grubba Exp $
 */
 
 #include "global.h"
-RCSID("$Id: interpret.c,v 1.286 2003/01/05 19:54:04 grubba Exp $");
+RCSID("$Id: interpret.c,v 1.287 2003/01/09 15:21:26 grubba Exp $");
 #include "interpret.h"
 #include "object.h"
 #include "program.h"
@@ -59,7 +59,7 @@ RCSID("$Id: interpret.c,v 1.286 2003/01/05 19:54:04 grubba Exp $");
  */
 #define EVALUATOR_STACK_SIZE	100000
 
-#define TRACE_LEN (100 + t_flag * 10)
+#define TRACE_LEN (100 + Pike_interpreter.trace_level * 10)
 
 /* Keep some margin on the stack space checks. They're lifted when
  * handle_error runs to give it some room. */
@@ -464,7 +464,7 @@ union anything *get_pointer_if_this_type(struct svalue *lval, TYPE_T t)
 inline void pike_trace(int level,char *fmt, ...) ATTRIBUTE((format (printf, 2, 3)));
 inline void pike_trace(int level,char *fmt, ...)
 {
-  if(t_flag > level)
+  if(Pike_interpreter.trace_level > level)
   {
     va_list args;
     va_start(args,fmt);
@@ -531,7 +531,7 @@ PMOD_EXPORT void find_external_context(struct external_variable_context *loc,
   while(--arg2>=0)
   {
 #ifdef PIKE_DEBUG  
-    if(t_flag>8 && loc->o->prog)
+    if(Pike_interpreter.trace_level>8 && loc->o->prog)
       my_describe_inherit_structure(loc->o->prog);
 #endif
 
@@ -621,7 +621,7 @@ PMOD_EXPORT void find_external_context(struct external_variable_context *loc,
     loc->inherit=INHERIT_FROM_INT(p, loc->parent_identifier);
 
 #ifdef PIKE_DEBUG  
-    if(t_flag>28)
+    if(Pike_interpreter.trace_level>28)
       my_describe_inherit_structure(p);
 #endif
 
@@ -652,7 +652,7 @@ PMOD_EXPORT void find_external_context(struct external_variable_context *loc,
 #ifdef PIKE_DEBUG
 void print_return_value(void)
 {
-  if(t_flag>3)
+  if(Pike_interpreter.trace_level>3)
   {
     char *s;
 	
@@ -822,20 +822,20 @@ void *dummy_label = NULL;
 #define OPCODE0(O,N,F,C) \
 void PIKE_CONCAT(opcode_,O)(void) { \
   DEF_PROG_COUNTER; \
-DO_IF_DEBUG(if(t_flag > 3) fprintf(stderr,"- (%p,%ld): %s()\n",PROG_COUNTER,DO_NOT_WARN((long)(Pike_sp-Pike_interpreter.evaluator_stack)),N));\
+DO_IF_DEBUG(if(Pike_interpreter.trace_level > 3) fprintf(stderr,"- (%p,%ld): %s()\n",PROG_COUNTER,DO_NOT_WARN((long)(Pike_sp-Pike_interpreter.evaluator_stack)),N));\
 C }
 
 #define OPCODE1(O,N,F,C) \
 void PIKE_CONCAT(opcode_,O)(INT32 arg1) {\
   DEF_PROG_COUNTER; \
-DO_IF_DEBUG(if(t_flag > 3) fprintf(stderr,"- (%p,%ld): %s(%d)\n",PROG_COUNTER,DO_NOT_WARN((long)(Pike_sp-Pike_interpreter.evaluator_stack)),N,arg1)); \
+DO_IF_DEBUG(if(Pike_interpreter.trace_level > 3) fprintf(stderr,"- (%p,%ld): %s(%d)\n",PROG_COUNTER,DO_NOT_WARN((long)(Pike_sp-Pike_interpreter.evaluator_stack)),N,arg1)); \
 C }
 
 
 #define OPCODE2(O,N,F,C) \
 void PIKE_CONCAT(opcode_,O)(INT32 arg1,INT32 arg2) { \
   DEF_PROG_COUNTER; \
-DO_IF_DEBUG(if(t_flag > 3) fprintf(stderr,"- (%p,%ld): %s(%d,%d)\n",PROG_COUNTER,DO_NOT_WARN((long)(Pike_sp-Pike_interpreter.evaluator_stack)),N,arg1,arg2)); \
+DO_IF_DEBUG(if(Pike_interpreter.trace_level > 3) fprintf(stderr,"- (%p,%ld): %s(%d,%d)\n",PROG_COUNTER,DO_NOT_WARN((long)(Pike_sp-Pike_interpreter.evaluator_stack)),N,arg1,arg2)); \
 C }
 
 #ifdef OPCODE_INLINE_BRANCH
@@ -843,7 +843,7 @@ C }
 int PIKE_CONCAT(test_opcode_,O)(void) { \
     int branch_taken = 0;	\
     DEF_PROG_COUNTER; \
-    DO_IF_DEBUG(if(t_flag > 3) \
+    DO_IF_DEBUG(if(Pike_interpreter.trace_level > 3) \
       fprintf(stderr, "- (%p,%ld): %s()\n", PROG_COUNTER, \
               DO_NOT_WARN((long)(Pike_sp-Pike_interpreter.evaluator_stack)), \
               N));\
@@ -855,7 +855,7 @@ int PIKE_CONCAT(test_opcode_,O)(void) { \
 int PIKE_CONCAT(test_opcode_,O)(INT32 arg1) {\
     int branch_taken = 0;	\
     DEF_PROG_COUNTER; \
-    DO_IF_DEBUG(if(t_flag > 3) \
+    DO_IF_DEBUG(if(Pike_interpreter.trace_level > 3) \
       fprintf(stderr, "- (%p,%ld): %s(%d)\n", PROG_COUNTER, \
               DO_NOT_WARN((long)(Pike_sp-Pike_interpreter.evaluator_stack)), \
               N, arg1)); \
@@ -868,7 +868,7 @@ int PIKE_CONCAT(test_opcode_,O)(INT32 arg1) {\
 int PIKE_CONCAT(test_opcode_,O)(INT32 arg1, INT32 arg2) { \
     int branch_taken = 0;	\
     DEF_PROG_COUNTER; \
-    DO_IF_DEBUG(if(t_flag > 3) \
+    DO_IF_DEBUG(if(Pike_interpreter.trace_level > 3) \
       fprintf(stderr, "- (%p,%ld): %s(%d,%d)\n", PROG_COUNTER, \
               DO_NOT_WARN((long)(Pike_sp-Pike_interpreter.evaluator_stack)), \
               N, arg1, arg2)); \
@@ -933,7 +933,7 @@ static int eval_instruction_low(PIKE_OPCODE_T *pc);
 static int eval_instruction(PIKE_OPCODE_T *pc)
 #ifdef PIKE_DEBUG
 {
-  if (t_flag && pc) {
+  if (Pike_interpreter.trace_level && pc) {
     int i;
     fprintf(stderr, "Calling code at %p:\n", pc);
 #ifdef PIKE_OPCODE_ALIGN
@@ -1048,7 +1048,7 @@ int lookup_sort_fun(const void *a, const void *b)
 
 static inline int eval_instruction(unsigned char *pc)
 {
-  if(d_flag || t_flag>2)
+  if(d_flag || Pike_interpreter.trace_level>2)
     return eval_instruction_with_debug(pc);
   else
     return eval_instruction_without_debug(pc);
@@ -1260,7 +1260,7 @@ int low_mega_apply(enum apply_type type, INT32 args, void *arg1, void *arg2)
       {
 #ifdef PIKE_DEBUG
 	struct svalue *expected_stack = Pike_sp-args;
-	if(t_flag>1)
+	if(Pike_interpreter.trace_level>1)
 	{
 	  init_buf();
 	  describe_svalue(s,0,0);
@@ -1307,7 +1307,7 @@ int low_mega_apply(enum apply_type type, INT32 args, void *arg1, void *arg2)
 
     case T_ARRAY:
 #ifdef PIKE_DEBUG
-      if(t_flag>1)
+      if(Pike_interpreter.trace_level>1)
       {
 	init_buf();
 	describe_svalue(s,0,0);
@@ -1319,7 +1319,7 @@ int low_mega_apply(enum apply_type type, INT32 args, void *arg1, void *arg2)
 
     case T_PROGRAM:
 #ifdef PIKE_DEBUG
-      if(t_flag>1)
+      if(Pike_interpreter.trace_level>1)
       {
 	init_buf();
 	describe_svalue(s,0,0);
@@ -1390,7 +1390,7 @@ int low_mega_apply(enum apply_type type, INT32 args, void *arg1, void *arg2)
       low_destruct_objects_to_destruct(); /* consider using a flag for immediate destruct instead... */
       
     }
-    if(t_flag>1) trace_return_value();
+    if(Pike_interpreter.trace_level>1) trace_return_value();
   }
   return 0;
 }
@@ -1446,7 +1446,7 @@ void low_return(void)
       /* consider using a flag for immediate destruct instead... */
       destruct_objects_to_destruct();
     }
-    if(t_flag>1) trace_return_value();
+    if(Pike_interpreter.trace_level>1) trace_return_value();
   }
 }
 
@@ -1618,8 +1618,8 @@ PMOD_EXPORT void call_handle_error(void)
   dmalloc_touch_svalue(&throw_value);
   if (Pike_interpreter.svalue_stack_margin) {
     ONERROR tmp;
-    int old_t_flag = t_flag;
-    t_flag = 0;
+    int old_t_flag = Pike_interpreter.trace_level;
+    Pike_interpreter.trace_level = 0;
     Pike_interpreter.svalue_stack_margin = 0;
     Pike_interpreter.c_stack_margin = 0;
     SET_ONERROR(tmp,exit_on_error,"Error in handle_error in master object!");
@@ -1630,7 +1630,7 @@ PMOD_EXPORT void call_handle_error(void)
     UNSET_ONERROR(tmp);
     Pike_interpreter.svalue_stack_margin = SVALUE_STACK_MARGIN;
     Pike_interpreter.c_stack_margin = C_STACK_MARGIN;
-    t_flag = old_t_flag;
+    Pike_interpreter.trace_level = old_t_flag;
   }
   else {
     free_svalue(&throw_value);
diff --git a/src/interpret.h b/src/interpret.h
index ae54653cdd316efb8eefd709a668ca0c5a2025d9..f1aaa8ca6606657dad6db35ffc844258987e6cac 100644
--- a/src/interpret.h
+++ b/src/interpret.h
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: interpret.h,v 1.121 2003/01/08 19:35:42 mast Exp $
+|| $Id: interpret.h,v 1.122 2003/01/09 15:21:26 grubba Exp $
 */
 
 #ifndef INTERPRET_H
@@ -43,8 +43,6 @@ struct Pike_interpreter {
   int trace_level;
 };
 
-#define t_flag (Pike_interpreter.trace_level)
-
 #ifndef STRUCT_FRAME_DECLARED
 #define STRUCT_FRAME_DECLARED
 #endif
diff --git a/src/interpret_functions.h b/src/interpret_functions.h
index bbe2db5af54012ab663c64c1c1d5743ba3a8bdc5..92696c3f5fe3beb048da8e306a6892659e442fc0 100644
--- a/src/interpret_functions.h
+++ b/src/interpret_functions.h
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: interpret_functions.h,v 1.125 2003/01/06 14:39:03 grubba Exp $
+|| $Id: interpret_functions.h,v 1.126 2003/01/09 15:21:26 grubba Exp $
 */
 
 /*
@@ -106,10 +106,11 @@
 
 #ifdef PIKE_DEBUG
 
-#define GET_JUMP() (backlog[backlogp].arg=(\
-  (t_flag>3 ? sprintf(trace_buffer, "-    Target = %+ld\n", \
-                      (long)LOW_GET_JUMP()), \
-              write_to_stderr(trace_buffer,strlen(trace_buffer)) : 0), \
+#define GET_JUMP() (backlog[backlogp].arg=(			\
+  (Pike_interpreter.trace_level>3 ?				\
+     sprintf(trace_buffer, "-    Target = %+ld\n",		\
+             (long)LOW_GET_JUMP()),				\
+     write_to_stderr(trace_buffer,strlen(trace_buffer)) : 0),	\
   LOW_GET_JUMP()))
 
 #define SKIPJUMP() (GET_JUMP(), LOW_SKIPJUMP())
@@ -156,12 +157,12 @@
      else						\
        low_return();					\
 							\
-    DO_IF_DEBUG(if (t_flag)				\
+    DO_IF_DEBUG(if (Pike_interpreter.trace_level)	\
       fprintf(stderr, "Returning to 0x%p\n",		\
 	      Pike_fp->pc));				\
     DO_JUMP_TO(Pike_fp->pc);				\
   }							\
-  DO_IF_DEBUG(if (t_flag)				\
+  DO_IF_DEBUG(if (Pike_interpreter.trace_level)		\
     fprintf(stderr, "Inter return\n"));			\
   INTER_RETURN;						\
 }
@@ -2015,7 +2016,7 @@ OPCODE1(F_CALL_OTHER_AND_RETURN,"call other & return", 0, {
   int args=(ARGS);							 \
   struct svalue *expected_stack=Pike_sp-args;				 \
     struct svalue *s=&Pike_fp->context.prog->constants[arg1].sval;	 \
-  if(t_flag>1)								 \
+  if(Pike_interpreter.trace_level>1)					 \
   {									 \
     init_buf();								 \
     describe_svalue(s, 0,0);						 \
@@ -2026,21 +2027,22 @@ OPCODE1(F_CALL_OTHER_AND_RETURN,"call other & return", 0, {
   if(Pike_sp != expected_stack + !s->u.efun->may_return_void)		 \
   {									 \
     if(Pike_sp < expected_stack)					 \
-      Pike_fatal("Function popped too many arguments: %s\n",			 \
+      Pike_fatal("Function popped too many arguments: %s\n",		 \
 	    s->u.efun->name->str);					 \
     if(Pike_sp>expected_stack+1)					 \
       Pike_fatal("Function left %d droppings on stack: %s\n",		 \
            Pike_sp-(expected_stack+1),					 \
 	    s->u.efun->name->str);					 \
     if(Pike_sp == expected_stack && !s->u.efun->may_return_void)	 \
-      Pike_fatal("Non-void function returned without return value "		 \
+      Pike_fatal("Non-void function returned without return value "	 \
 	    "on stack: %s %d\n",					 \
 	    s->u.efun->name->str,s->u.efun->may_return_void);		 \
     if(Pike_sp==expected_stack+1 && s->u.efun->may_return_void)		 \
       Pike_fatal("Void function returned with a value on the stack: %s %d\n", \
 	    s->u.efun->name->str, s->u.efun->may_return_void);		 \
   }									 \
-  if(t_flag>1 && Pike_sp>expected_stack) trace_return_value();		 \
+  if(Pike_interpreter.trace_level>1 && Pike_sp>expected_stack)		 \
+    trace_return_value();						 \
 }while(0)
 #else
 #define DO_CALL_BUILTIN(ARGS) \
@@ -2117,7 +2119,7 @@ OPCODE1(F_CALL_BUILTIN1_AND_POP, "call builtin1 & pop", 0, {
   push_zeroes(new_frame->num_locals - args);				   \
                                                                            \
   DO_IF_DEBUG({								   \
-    if(t_flag > 3)							   \
+    if(Pike_interpreter.trace_level > 3)				   \
       fprintf(stderr,"-    Allocating %d extra locals.\n",		   \
 	      new_frame->num_locals - new_frame->num_args);		   \
   });									   \
diff --git a/src/interpreter.h b/src/interpreter.h
index 5b1d6dccce9dcbe34e1da8d5078b0d20f8697380..83350358e93e62492c153d4d2ad4cff9cbf9622c 100644
--- a/src/interpreter.h
+++ b/src/interpreter.h
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: interpreter.h,v 1.80 2002/11/10 20:19:18 grubba Exp $
+|| $Id: interpreter.h,v 1.81 2003/01/09 15:21:26 grubba Exp $
 */
 
 #undef LOW_GET_ARG
@@ -55,22 +55,22 @@
 
 #ifdef PIKE_DEBUG
 
-#define GET_ARG() (backlog[backlogp].arg=(\
-  instr=prefix,\
-  prefix=0,\
-  instr += LOW_GET_ARG(),\
-  (t_flag>3 ? sprintf(trace_buffer, "-    Arg = %ld\n", \
-                     (long)instr), \
-              write_to_stderr(trace_buffer,strlen(trace_buffer)) : 0),\
+#define GET_ARG() (backlog[backlogp].arg=(			\
+  instr=prefix,							\
+  prefix=0,							\
+  instr += LOW_GET_ARG(),					\
+  (Pike_interpreter.trace_level>3 ?				\
+     sprintf(trace_buffer, "-    Arg = %ld\n", (long)instr),	\
+     write_to_stderr(trace_buffer,strlen(trace_buffer)) : 0),	\
   instr))
 
-#define GET_ARG2() (backlog[backlogp].arg2=(\
-  instr=prefix2,\
-  prefix2=0,\
-  instr += LOW_GET_ARG(),\
-  (t_flag>3 ? sprintf(trace_buffer, "-    Arg2 = %ld\n", \
-                      (long)instr), \
-              write_to_stderr(trace_buffer,strlen(trace_buffer)) : 0),\
+#define GET_ARG2() (backlog[backlogp].arg2=(			\
+  instr=prefix2,						\
+  prefix2=0,							\
+  instr += LOW_GET_ARG(),					\
+  (Pike_interpreter.trace_level>3 ?				\
+     sprintf(trace_buffer, "-    Arg2 = %ld\n",	(long)instr),	\
+     write_to_stderr(trace_buffer,strlen(trace_buffer)) : 0),	\
   instr))
 
 #else /* !PIKE_DEBUG */
@@ -111,7 +111,7 @@ static int eval_instruction(PIKE_OPCODE_T *pc)
     
 #ifdef PIKE_DEBUG
 
-    if(t_flag > 2)
+    if(Pike_interpreter.trace_level > 2)
     {
       char *file, *f;
       struct pike_string *filep;
diff --git a/src/main.c b/src/main.c
index efab12a2709193ba9132453b7849d5c0374e7bbf..be571f4773da9f526d0c0205ec5692ae5b17050d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2,11 +2,11 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: main.c,v 1.161 2003/01/08 19:35:42 mast Exp $
+|| $Id: main.c,v 1.162 2003/01/09 15:21:26 grubba Exp $
 */
 
 #include "global.h"
-RCSID("$Id: main.c,v 1.161 2003/01/08 19:35:42 mast Exp $");
+RCSID("$Id: main.c,v 1.162 2003/01/09 15:21:26 grubba Exp $");
 #include "fdlib.h"
 #include "backend.h"
 #include "module.h"
@@ -479,10 +479,10 @@ int dbm_main(int argc, char **argv)
 
 	case 't':
 	  if(p[1]>='0' && p[1]<='9')
-	    t_flag+=STRTOL(p+1,&p,10);
+	    Pike_interpreter.trace_level+=STRTOL(p+1,&p,10);
 	  else
-	    t_flag++,p++;
-	  default_t_flag = t_flag;
+	    Pike_interpreter.trace_level++,p++;
+	  default_t_flag = Pike_interpreter.trace_level;
 	  break;
 
 	case 'p':
diff --git a/src/mapping.c b/src/mapping.c
index 066ce8cf0d76e29a28b7e4e348386d815dfff259..01fd596aa47f3d407c391c6c5d34e194a0e6ec49 100644
--- a/src/mapping.c
+++ b/src/mapping.c
@@ -2,11 +2,11 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: mapping.c,v 1.157 2002/12/01 00:16:54 mast Exp $
+|| $Id: mapping.c,v 1.158 2003/01/09 15:21:26 grubba Exp $
 */
 
 #include "global.h"
-RCSID("$Id: mapping.c,v 1.157 2002/12/01 00:16:54 mast Exp $");
+RCSID("$Id: mapping.c,v 1.158 2003/01/09 15:21:26 grubba Exp $");
 #include "main.h"
 #include "object.h"
 #include "mapping.h"
@@ -1706,7 +1706,7 @@ void describe_mapping(struct mapping *m,struct processing *p,int indent)
     my_strcat("([ ])");
   }
   else {
-    int save_t_flag = t_flag;
+    int save_t_flag = Pike_interpreter.trace_level;
 
     if (m->data->size == 1) {
       my_strcat("([ /* 1 element */\n");
@@ -1715,7 +1715,7 @@ void describe_mapping(struct mapping *m,struct processing *p,int indent)
       my_strcat(buf);
     }
 
-    t_flag = 0;
+    Pike_interpreter.trace_level = 0;
     if(SETJMP(catch)) {
       free_svalue(&throw_value);
       throw_value.type = T_INT;
@@ -1723,7 +1723,7 @@ void describe_mapping(struct mapping *m,struct processing *p,int indent)
     else
       sort_array_destructively(a);
     UNSETJMP(catch);
-    t_flag = save_t_flag;
+    Pike_interpreter.trace_level = save_t_flag;
 
     for(e = 0; e < a->size; e++)
     {
@@ -1738,12 +1738,12 @@ void describe_mapping(struct mapping *m,struct processing *p,int indent)
       my_putchar(':');
       
       {
-	int save_t_flag=t_flag;
-	t_flag=0;
+	int save_t_flag=Pike_interpreter.trace_level;
+	Pike_interpreter.trace_level=0;
 	
 	tmp=low_mapping_lookup(m, ITEM(a)+e);
 	
-	t_flag=save_t_flag;
+	Pike_interpreter.trace_level=save_t_flag;
       }
       if(tmp)
 	describe_svalue(tmp, indent+2, &doing);
diff --git a/src/multiset.c b/src/multiset.c
index e77ca2f05a9ed2acf532b09c28e8a68c79a27231..60a204bcd5e12d57c0ee6d264dd6ba33382d8f8c 100644
--- a/src/multiset.c
+++ b/src/multiset.c
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: multiset.c,v 1.64 2003/01/08 22:28:06 grubba Exp $
+|| $Id: multiset.c,v 1.65 2003/01/09 15:21:27 grubba Exp $
 */
 
 #include "global.h"
@@ -14,7 +14,7 @@
  * Created by Martin Stjernholm 2001-05-07
  */
 
-RCSID("$Id: multiset.c,v 1.64 2003/01/08 22:28:06 grubba Exp $");
+RCSID("$Id: multiset.c,v 1.65 2003/01/09 15:21:27 grubba Exp $");
 
 #include "builtin_functions.h"
 #include "gc.h"
@@ -93,7 +93,7 @@ PMOD_EXPORT const char msg_multiset_no_node_refs[] =
     struct svalue *_cmp_a_ = (A);					\
     struct svalue *_cmp_b_ = (B);					\
     int _cmp_res_;							\
-    if (t_flag) {							\
+    if (Pike_interpreter.trace_level) {					\
       fputs ("internal cmp ", stderr);					\
       print_svalue (stderr, _cmp_a_);					\
       fputs (" <=> ", stderr);						\
@@ -101,12 +101,12 @@ PMOD_EXPORT const char msg_multiset_no_node_refs[] =
       fputs (": ", stderr);						\
     }									\
     _cmp_res_ = (CMP_RES) = set_svalue_cmpfun (_cmp_a_, _cmp_b_);	\
-    if (t_flag)								\
+    if (Pike_interpreter.trace_level)					\
       fprintf (stderr, "%d\n", _cmp_res_);				\
   } while (0)
 
 #define EXTERNAL_CMP(CMP_LESS) do {					\
-    if (t_flag) {							\
+    if (Pike_interpreter.trace_level) {					\
       fputs ("external cmp ", stderr);					\
       print_svalue (stderr, sp - 2);					\
       fputs (" <=> ", stderr);						\
@@ -114,7 +114,7 @@ PMOD_EXPORT const char msg_multiset_no_node_refs[] =
       fputs (": ", stderr);						\
     }									\
     apply_svalue (CMP_LESS, 2);						\
-    if (t_flag) {							\
+    if (Pike_interpreter.trace_level) {					\
       print_svalue (stderr, sp - 1);					\
       fputc ('\n', stderr);						\
     }									\
@@ -5277,7 +5277,7 @@ void test_multiset (void)
 #include "gc.h"
 #include "security.h"
 
-RCSID("$Id: multiset.c,v 1.64 2003/01/08 22:28:06 grubba Exp $");
+RCSID("$Id: multiset.c,v 1.65 2003/01/09 15:21:27 grubba Exp $");
 
 struct multiset *first_multiset;
 
diff --git a/src/opcodes.c b/src/opcodes.c
index c297e909ee199f9d7680bdc3f7777306dbcff0ba..1c3fb0e3f27353a7a9d02f5925dd994d2012a749 100644
--- a/src/opcodes.c
+++ b/src/opcodes.c
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: opcodes.c,v 1.130 2003/01/08 19:35:42 mast Exp $
+|| $Id: opcodes.c,v 1.131 2003/01/09 15:21:27 grubba Exp $
 */
 
 #include "global.h"
@@ -30,7 +30,7 @@
 
 #define sp Pike_sp
 
-RCSID("$Id: opcodes.c,v 1.130 2003/01/08 19:35:42 mast Exp $");
+RCSID("$Id: opcodes.c,v 1.131 2003/01/09 15:21:27 grubba Exp $");
 
 void index_no_free(struct svalue *to,struct svalue *what,struct svalue *ind)
 {
@@ -1907,7 +1907,7 @@ void o_sscanf(INT32 args)
   pop_n_elems(sp-save_sp +args);
 
 #ifdef PIKE_DEBUG
-  if(t_flag >2)
+  if(Pike_interpreter.trace_level >2)
   {
     int nonblock;
     if((nonblock=query_nonblocking(2)))
diff --git a/src/svalue.c b/src/svalue.c
index c9260ea2fb5a6e5c0e6b7c9b2be9b6357ace657c..3cc630e4f9bef08fbd1e014964d3f87a4fae4958 100644
--- a/src/svalue.c
+++ b/src/svalue.c
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: svalue.c,v 1.153 2002/12/01 18:44:43 mast Exp $
+|| $Id: svalue.c,v 1.154 2003/01/09 15:21:27 grubba Exp $
 */
 
 #include "global.h"
@@ -66,7 +66,7 @@ static int pike_isnan(double x)
 #endif /* HAVE__ISNAN */
 #endif /* HAVE_ISNAN */
 
-RCSID("$Id: svalue.c,v 1.153 2002/12/01 18:44:43 mast Exp $");
+RCSID("$Id: svalue.c,v 1.154 2003/01/09 15:21:27 grubba Exp $");
 
 struct svalue dest_ob_zero = {
   T_INT, 0,
@@ -1285,10 +1285,10 @@ PMOD_EXPORT void describe_svalue(const struct svalue *s,int indent,struct proces
 	      /* We require some tricky coding to make this work
 	       * with tracing...
 	       */
-	      int save_t_flag=t_flag;
+	      int save_t_flag=Pike_interpreter.trace_level;
 	      dynbuf_string save_buffer=complex_free_buf();
 	    
-	      t_flag=0;
+	      Pike_interpreter.trace_level=0;
 	      SET_CYCLIC_RET(1);
 	    
 	      ref_push_object(obj);
@@ -1305,7 +1305,7 @@ PMOD_EXPORT void describe_svalue(const struct svalue *s,int indent,struct proces
 		    }
 	      
 		  init_buf_with_string(save_buffer);
-		  t_flag=save_t_flag;
+		  Pike_interpreter.trace_level=save_t_flag;
 		
 		  dsv_add_string_to_buf( sp[-1].u.string );
 		  my_binary_strcat(name->str,name->len);
@@ -1318,7 +1318,7 @@ PMOD_EXPORT void describe_svalue(const struct svalue *s,int indent,struct proces
 	      debug_malloc_touch(save_buffer.str);
 	      
 	      init_buf_with_string(save_buffer);
-	      t_flag=save_t_flag;
+	      Pike_interpreter.trace_level=save_t_flag;
 	      pop_stack();
 	      prog = obj->prog;
 	    }
@@ -1371,10 +1371,10 @@ PMOD_EXPORT void describe_svalue(const struct svalue *s,int indent,struct proces
 	      /* We require some tricky coding to make this work
 	       * with tracing...
 	       */
-	      int save_t_flag=t_flag;
+	      int save_t_flag=Pike_interpreter.trace_level;
 	      dynbuf_string save_buffer=complex_free_buf();
 	      
-	      t_flag=0;
+	      Pike_interpreter.trace_level=0;
 	      SET_CYCLIC_RET(1);
 	      
 	      debug_malloc_touch(obj);
@@ -1396,7 +1396,7 @@ PMOD_EXPORT void describe_svalue(const struct svalue *s,int indent,struct proces
 		    }
 
 		  init_buf_with_string(save_buffer);
-		  t_flag=save_t_flag;
+		  Pike_interpreter.trace_level=save_t_flag;
 
 		  dsv_add_string_to_buf( sp[-1].u.string );
 
@@ -1408,7 +1408,7 @@ PMOD_EXPORT void describe_svalue(const struct svalue *s,int indent,struct proces
 	      debug_malloc_touch(save_buffer.str);
 
 	      init_buf_with_string(save_buffer);
-	      t_flag=save_t_flag;
+	      Pike_interpreter.trace_level=save_t_flag;
 	      pop_stack();
 	      prog = obj->prog;
 	    }
@@ -1419,10 +1419,10 @@ PMOD_EXPORT void describe_svalue(const struct svalue *s,int indent,struct proces
 	    /* We require some tricky coding to make this work
 	     * with tracing...
 	     */
-	    int save_t_flag=t_flag;
+	    int save_t_flag=Pike_interpreter.trace_level;
 	    dynbuf_string save_buffer=complex_free_buf();
 	    
-	    t_flag=0;
+	    Pike_interpreter.trace_level=0;
 	    SET_CYCLIC_RET(1);
 	    
 	    debug_malloc_touch(obj);
@@ -1441,7 +1441,7 @@ PMOD_EXPORT void describe_svalue(const struct svalue *s,int indent,struct proces
 		  }
 		
 		init_buf_with_string(save_buffer);
-		t_flag=save_t_flag;
+		Pike_interpreter.trace_level=save_t_flag;
 		
 		dsv_add_string_to_buf( sp[-1].u.string );
 
@@ -1453,7 +1453,7 @@ PMOD_EXPORT void describe_svalue(const struct svalue *s,int indent,struct proces
 	    debug_malloc_touch(save_buffer.str);
 	    
 	    init_buf_with_string(save_buffer);
-	    t_flag=save_t_flag;
+	    Pike_interpreter.trace_level=save_t_flag;
 	    pop_stack();
 	    prog = obj->prog;
 	  }
@@ -1496,10 +1496,10 @@ PMOD_EXPORT void describe_svalue(const struct svalue *s,int indent,struct proces
 	  /* We require some tricky coding to make this work
 	   * with tracing...
 	   */
-	  int save_t_flag=t_flag;
+	  int save_t_flag=Pike_interpreter.trace_level;
 	  dynbuf_string save_buffer=complex_free_buf();
 	    
-	  t_flag=0;
+	  Pike_interpreter.trace_level=0;
 	  SET_CYCLIC_RET(1);
 	    
 	  debug_malloc_touch(prog);
@@ -1518,7 +1518,7 @@ PMOD_EXPORT void describe_svalue(const struct svalue *s,int indent,struct proces
 		}
 	      
 	      init_buf_with_string(save_buffer);
-	      t_flag=save_t_flag;
+	      Pike_interpreter.trace_level=save_t_flag;
 		
 	      dsv_add_string_to_buf( sp[-1].u.string );
 
@@ -1530,7 +1530,7 @@ PMOD_EXPORT void describe_svalue(const struct svalue *s,int indent,struct proces
 	  debug_malloc_touch(save_buffer.str);
 	    
 	  init_buf_with_string(save_buffer);
-	  t_flag=save_t_flag;
+	  Pike_interpreter.trace_level=save_t_flag;
 	  pop_stack();
 	}
 	END_CYCLIC();
diff --git a/src/threads.c b/src/threads.c
index 4bd4cbec46e5f3bf4edae107026aa9384d472d31..e0c121faed763b0221651a8eaf56f55ac0ea473f 100644
--- a/src/threads.c
+++ b/src/threads.c
@@ -2,11 +2,11 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: threads.c,v 1.195 2003/01/08 19:32:08 mast Exp $
+|| $Id: threads.c,v 1.196 2003/01/09 15:21:27 grubba Exp $
 */
 
 #include "global.h"
-RCSID("$Id: threads.c,v 1.195 2003/01/08 19:32:08 mast Exp $");
+RCSID("$Id: threads.c,v 1.196 2003/01/09 15:21:27 grubba Exp $");
 
 PMOD_EXPORT int num_threads = 1;
 PMOD_EXPORT int threads_disabled = 0;
@@ -721,7 +721,7 @@ TH_RETURN_TYPE new_thread_func(void * data)
     }
 #endif
 
-  t_flag = default_t_flag;
+  Pike_interpreter.trace_level = default_t_flag;
 
   THREADS_FPRINTF(0, (stderr,"THREAD %08x INITED\n",(unsigned int)Pike_interpreter.thread_id));