diff --git a/src/array.c b/src/array.c
index dd69f7c72f1848bbee41853be92e1a5a04714838..e2aadaab90e0b75c3a64f3994fdc12941fd58698 100644
--- a/src/array.c
+++ b/src/array.c
@@ -23,7 +23,7 @@
 #include "stuff.h"
 #include "bignum.h"
 
-RCSID("$Id: array.c,v 1.75 2000/07/06 23:25:25 mast Exp $");
+RCSID("$Id: array.c,v 1.76 2000/07/07 01:26:39 hubbe Exp $");
 
 struct array empty_array=
 {
@@ -187,11 +187,11 @@ void simple_array_index_no_free(struct svalue *s,
     {
       check_stack(4);
       ref_push_array(a);
-      assign_svalue_no_free(sp++,ind);
+      assign_svalue_no_free(Pike_sp++,ind);
       f_column(2);
-      s[0]=sp[-1];
-      sp--;
-      dmalloc_touch_svalue(sp);
+      s[0]=Pike_sp[-1];
+      Pike_sp--;
+      dmalloc_touch_svalue(Pike_sp);
       break;
     }
 	
@@ -258,11 +258,11 @@ void simple_set_index(struct array *a,struct svalue *ind,struct svalue *s)
     {
       INT32 i, n;
       check_stack(2);
-      sp++->type = T_VOID;
+      Pike_sp++->type = T_VOID;
       push_svalue(ind);
       for (i = 0, n = a->size; i < n; i++) {
-	assign_svalue(sp-2, &a->item[i]);
-	assign_lvalue(sp-2, s);
+	assign_svalue(Pike_sp-2, &a->item[i]);
+	assign_lvalue(Pike_sp-2, s);
       }
       pop_n_elems(2);
       break;
@@ -1455,13 +1455,13 @@ void push_array_items(struct array *a)
   check_array_for_destruct(a);
   if(a->refs == 1)
   {
-    MEMCPY(sp,ITEM(a),sizeof(struct svalue)*a->size);
-    sp += a->size;
+    MEMCPY(Pike_sp,ITEM(a),sizeof(struct svalue)*a->size);
+    Pike_sp += a->size;
     a->size=0;
     free_array(a);
   }else{
-    assign_svalues_no_free(sp, ITEM(a), a->size, a->type_field);
-    sp += a->size;
+    assign_svalues_no_free(Pike_sp, ITEM(a), a->size, a->type_field);
+    Pike_sp += a->size;
     free_array(a);
   }
 }
@@ -1536,10 +1536,10 @@ struct array *aggregate_array(INT32 args)
   struct array *a;
 
   a=allocate_array_no_init(args,0);
-  MEMCPY((char *)ITEM(a),(char *)(sp-args),args*sizeof(struct svalue));
+  MEMCPY((char *)ITEM(a),(char *)(Pike_sp-args),args*sizeof(struct svalue));
   a->type_field=BIT_MIXED;
-  sp-=args;
-  DO_IF_DMALLOC(while(args--) dmalloc_touch_svalue(sp + args));
+  Pike_sp-=args;
+  DO_IF_DMALLOC(while(args--) dmalloc_touch_svalue(Pike_sp + args));
   return a;
 }
 
@@ -1705,14 +1705,14 @@ void apply_array(struct array *a, INT32 args)
   struct array *ret;
   INT32 argp;
 
-  argp=sp-args - evaluator_stack;
+  argp=Pike_sp-args - Pike_interpreter.evaluator_stack;
 
   check_stack(a->size + args + 1);
   check_array_for_destruct(a);
   for(e=0;e<a->size;e++)
   {
-    assign_svalues_no_free(sp,evaluator_stack+argp,args,BIT_MIXED);
-    sp+=args;
+    assign_svalues_no_free(Pike_sp,Pike_interpreter.evaluator_stack+argp,args,BIT_MIXED);
+    Pike_sp+=args;
     apply_svalue(ITEM(a)+e,args);
   }
   ret=aggregate_array(a->size);
diff --git a/src/docode.c b/src/docode.c
index 9556d1c46ddf14bea9b2972f0ee021e039debb64..d94322088acfa80d35a9087f5a0256093dd4505a 100644
--- a/src/docode.c
+++ b/src/docode.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: docode.c,v 1.74 2000/06/24 00:48:13 hubbe Exp $");
+RCSID("$Id: docode.c,v 1.75 2000/07/07 01:28:57 hubbe Exp $");
 #include "las.h"
 #include "program.h"
 #include "pike_types.h"
@@ -273,7 +273,7 @@ static int do_docode2(node *n,int flags)
 
   /* Stack check */
   {
-    long x_= ((char *)&x_) + STACK_DIRECTION * (32768) - stack_top ;
+    long x_= ((char *)&x_) + STACK_DIRECTION * (32768) - Pike_interpreter.stack_top ;
     x_*=STACK_DIRECTION;						
     if(x_>0)
     {
@@ -879,7 +879,7 @@ static int do_docode2(node *n,int flags)
     INT32 break_save = current_break;
     struct pike_string *prev_switch_type = current_switch_type;
 #ifdef PIKE_DEBUG
-    struct svalue *save_sp=sp;
+    struct svalue *save_sp=Pike_sp;
 #endif
 
     if(do_docode(CAR(n),0)!=1)
@@ -913,12 +913,12 @@ static int do_docode2(node *n,int flags)
     DO_CODE_BLOCK(CDR(n));
     
 #ifdef PIKE_DEBUG
-    if(sp-save_sp != cases)
+    if(Pike_sp-save_sp != cases)
       fatal("Count cases is wrong!\n");
 #endif
 
     f_aggregate(cases);
-    order=get_switch_order(sp[-1].u.array);
+    order=get_switch_order(Pike_sp[-1].u.array);
 
     if (!Pike_compiler->num_parse_error) {
       /* Check for cases inside a range */
@@ -945,7 +945,7 @@ static int do_docode2(node *n,int flags)
       if(current_switch_jumptable[e]==-1)
 	current_switch_jumptable[e]=current_switch_default;
 
-    order_array(sp[-1].u.array,order);
+    order_array(Pike_sp[-1].u.array,order);
 
     reorder((void *)(current_switch_jumptable+2),cases,sizeof(INT32)*2,order);
     free((char *)order);
@@ -953,7 +953,7 @@ static int do_docode2(node *n,int flags)
     for(e=1; e<cases*2+2; e++)
       update_arg(jumptable[e], current_switch_jumptable[e]);
 
-    update_arg(tmp1, store_constant(sp-1,1,0));
+    update_arg(tmp1, store_constant(Pike_sp-1,1,0));
 
     pop_stack();
     free((char *)jumptable);
@@ -969,7 +969,7 @@ static int do_docode2(node *n,int flags)
 
     current_break=break_save;
 #ifdef PIKE_DEBUG
-    if(recoveries && sp-evaluator_stack < recoveries->sp)
+    if(Pike_interpreter.recoveries && Pike_sp-Pike_interpreter.evaluator_stack < Pike_interpreter.recoveries->stack_pointer)
       fatal("Stack error after F_SWITCH (underflow)\n");
 #endif
     return 0;
@@ -1010,7 +1010,7 @@ static int do_docode2(node *n,int flags)
 	pop_n_elems(tmp1-1);
 	current_switch_values_on_stack++;
 	for(tmp1=current_switch_values_on_stack; tmp1 > 1; tmp1--)
-	  if(is_equal(sp-tmp1, sp-1))
+	  if(is_equal(Pike_sp-tmp1, Pike_sp-1))
 	    yyerror("Duplicate case.");
       } else {
 	push_int(0);
@@ -1044,7 +1044,7 @@ static int do_docode2(node *n,int flags)
 	    pop_n_elems(tmp1-1);
 	    current_switch_values_on_stack++;
 	    for(tmp1=current_switch_values_on_stack; tmp1 > 1; tmp1--)
-	      if(is_equal(sp-tmp1, sp-1))
+	      if(is_equal(Pike_sp-tmp1, Pike_sp-1))
 		yyerror("Duplicate case.");
 	  } else {
 	    push_int(0);
diff --git a/src/encode.c b/src/encode.c
index c85e6fae0ae2e193891430bde9183265db6b1510..a2786c70324e6ff8e575826c23e624dd48426cfc 100644
--- a/src/encode.c
+++ b/src/encode.c
@@ -25,7 +25,7 @@
 #include "version.h"
 #include "bignum.h"
 
-RCSID("$Id: encode.c,v 1.60 2000/06/24 00:48:13 hubbe Exp $");
+RCSID("$Id: encode.c,v 1.61 2000/07/07 01:27:16 hubbe Exp $");
 
 /* #define ENCODE_DEBUG */
 
@@ -311,7 +311,7 @@ one_more_type:
       }else{
 	push_int(0);
       }
-      encode_value2(sp-1, data);
+      encode_value2(Pike_sp-1, data);
       pop_stack();
       break;
     }
@@ -324,7 +324,7 @@ static void encode_value2(struct svalue *val, struct encode_data *data)
 
 #ifdef PIKE_DEBUG
 #undef encode_value2
-#define encode_value2(X,Y) do { struct svalue *_=sp; encode_value2_(X,Y); if(sp!=_) fatal("encode_value2 failed!\n"); } while(0)
+#define encode_value2(X,Y) do { struct svalue *_=Pike_sp; encode_value2_(X,Y); if(Pike_sp!=_) fatal("encode_value2 failed!\n"); } while(0)
 #endif
 
 {
@@ -418,17 +418,17 @@ static void encode_value2(struct svalue *val, struct encode_data *data)
 	     * sort function. */
 	    error("Canonical encoding requires basic types in indices.\n");
 	}
-	order = get_switch_order(sp[-2].u.array);
-	order_array(sp[-2].u.array, order);
-	order_array(sp[-1].u.array, order);
+	order = get_switch_order(Pike_sp[-2].u.array);
+	order_array(Pike_sp[-2].u.array, order);
+	order_array(Pike_sp[-1].u.array, order);
 	free((char *) order);
       }
 
-      code_entry(TAG_MAPPING, sp[-2].u.array->size,data);
-      for(i=0; i<sp[-2].u.array->size; i++)
+      code_entry(TAG_MAPPING, Pike_sp[-2].u.array->size,data);
+      for(i=0; i<Pike_sp[-2].u.array->size; i++)
       {
-	encode_value2(ITEM(sp[-2].u.array)+i, data); /* indices */
-	encode_value2(ITEM(sp[-1].u.array)+i, data); /* values */
+	encode_value2(ITEM(Pike_sp[-2].u.array)+i, data); /* indices */
+	encode_value2(ITEM(Pike_sp[-1].u.array)+i, data); /* values */
       }
       pop_n_elems(2);
       break;
@@ -447,11 +447,11 @@ static void encode_value2(struct svalue *val, struct encode_data *data)
 	}
 	check_stack(1);
 	ref_push_array(val->u.multiset->ind);
-	order = get_switch_order(sp[-1].u.array);
-	order_array(sp[-1].u.array, order);
+	order = get_switch_order(Pike_sp[-1].u.array);
+	order_array(Pike_sp[-1].u.array, order);
 	free((char *) order);
-	for (i = 0; i < sp[-1].u.array->size; i++)
-	  encode_value2(ITEM(sp[-1].u.array)+i, data);
+	for (i = 0; i < Pike_sp[-1].u.array->size; i++)
+	  encode_value2(ITEM(Pike_sp[-1].u.array)+i, data);
 	pop_stack();
       }
       else
@@ -474,9 +474,9 @@ static void encode_value2(struct svalue *val, struct encode_data *data)
 	 */
 	push_int(36);
 	apply(val->u.object,"digits",1);
-	if(sp[-1].type != T_STRING)
+	if(Pike_sp[-1].type != T_STRING)
 	  error("Gmp.mpz->digits did not return a string!\n");
-	encode_value2(sp-1, data);
+	encode_value2(Pike_sp-1, data);
 	pop_stack();
 	break;
       }
@@ -486,17 +486,17 @@ static void encode_value2(struct svalue *val, struct encode_data *data)
 	error("Canonical encoding of objects not supported.\n");
       push_svalue(val);
       apply(data->codec, "nameof", 1);
-      switch(sp[-1].type)
+      switch(Pike_sp[-1].type)
       {
 	case T_INT:
-	  if(sp[-1].subtype == NUMBER_UNDEFINED)
+	  if(Pike_sp[-1].subtype == NUMBER_UNDEFINED)
 	  {
 	    pop_stack();
 	    push_svalue(val);
 	    f_object_program(1);
 
 	    code_entry(type_to_tag(val->type), 1,data);
-	    encode_value2(sp-1, data);
+	    encode_value2(Pike_sp-1, data);
 	    pop_stack();
 
 	    push_svalue(val);
@@ -509,7 +509,7 @@ static void encode_value2(struct svalue *val, struct encode_data *data)
 	  code_entry(type_to_tag(val->type), 0,data);
 	  break;
       }
-      encode_value2(sp-1, data);
+      encode_value2(Pike_sp-1, data);
       pop_stack();
       break;
 
@@ -519,7 +519,7 @@ static void encode_value2(struct svalue *val, struct encode_data *data)
       check_stack(1);
       push_svalue(val);
       apply(data->codec,"nameof", 1);
-      if(sp[-1].type == T_INT && sp[-1].subtype==NUMBER_UNDEFINED)
+      if(Pike_sp[-1].type == T_INT && Pike_sp[-1].subtype==NUMBER_UNDEFINED)
       {
 	if(val->subtype != FUNCTION_BUILTIN)
 	{
@@ -527,10 +527,10 @@ static void encode_value2(struct svalue *val, struct encode_data *data)
 
 	  code_entry(type_to_tag(val->type), 1, data);
 	  push_svalue(val);
-	  sp[-1].type=T_OBJECT;
+	  Pike_sp[-1].type=T_OBJECT;
 	  ref_push_string(ID_FROM_INT(val->u.object->prog, val->subtype)->name);
 	  f_arrow(2);
-	  eq=is_eq(sp-1, val);
+	  eq=is_eq(Pike_sp-1, val);
 	  pop_stack();
 	  if(eq)
 	  {
@@ -540,10 +540,10 @@ static void encode_value2(struct svalue *val, struct encode_data *data)
 	    map_delete(data->encoded, val);
 
 	    push_svalue(val);
-	    sp[-1].type=T_OBJECT;
-	    encode_value2(sp-1, data);
+	    Pike_sp[-1].type=T_OBJECT;
+	    encode_value2(Pike_sp-1, data);
 	    ref_push_string(ID_FROM_INT(val->u.object->prog, val->subtype)->name);
-	    encode_value2(sp-1, data);
+	    encode_value2(Pike_sp-1, data);
 	    pop_n_elems(3);
 
 	    /* Put value back in cache */
@@ -554,7 +554,7 @@ static void encode_value2(struct svalue *val, struct encode_data *data)
       }
 
       code_entry(type_to_tag(val->type), 0,data);
-      encode_value2(sp-1, data);
+      encode_value2(Pike_sp-1, data);
       pop_stack();
       break;
 
@@ -567,9 +567,9 @@ static void encode_value2(struct svalue *val, struct encode_data *data)
       check_stack(1);
       push_svalue(val);
       apply(data->codec,"nameof", 1);
-      if(sp[-1].type == val->type)
+      if(Pike_sp[-1].type == val->type)
 	error("Error in master()->nameof(), same type returned.\n");
-      if(sp[-1].type == T_INT && sp[-1].subtype == NUMBER_UNDEFINED)
+      if(Pike_sp[-1].type == T_INT && Pike_sp[-1].subtype == NUMBER_UNDEFINED)
       {
 	INT32 e;
 	struct program *p=val->u.program;
@@ -578,7 +578,7 @@ static void encode_value2(struct svalue *val, struct encode_data *data)
 	  error("Cannot encode C programs.\n");
 	code_entry(type_to_tag(val->type), 1,data);
 	f_version(0);
-	encode_value2(sp-1,data);
+	encode_value2(Pike_sp-1,data);
 	pop_stack();
 	code_number(p->flags,data);
 	code_number(p->storage_needed,data);
@@ -618,14 +618,14 @@ static void encode_value2(struct svalue *val, struct encode_data *data)
 	  if(p->inherits[d].parent)
 	  {
 	    ref_push_object(p->inherits[d].parent);
-	    sp[-1].subtype=p->inherits[d].parent_identifier;
-	    sp[-1].type=T_FUNCTION;
+	    Pike_sp[-1].subtype=p->inherits[d].parent_identifier;
+	    Pike_sp[-1].type=T_FUNCTION;
 	  }else if(p->inherits[d].prog){
 	    ref_push_program(p->inherits[d].prog);
 	  }else{
 	    push_int(0);
 	  }
-	  encode_value2(sp-1,data);
+	  encode_value2(Pike_sp-1,data);
 	  pop_stack();
 
           adddata3(p->inherits[d].name);
@@ -650,7 +650,7 @@ static void encode_value2(struct svalue *val, struct encode_data *data)
 	  code_number(p->lfuns[d], data);
       }else{
 	code_entry(type_to_tag(val->type), 0,data);
-	encode_value2(sp-1, data);
+	encode_value2(Pike_sp-1, data);
       }
       pop_stack();
       break;
@@ -679,14 +679,14 @@ void f_encode_value(INT32 args)
   data->counter.u.integer=COUNTER_START;
   if(args > 1)
   {
-    data->codec=sp[1-args].u.object;
+    data->codec=Pike_sp[1-args].u.object;
   }else{
     data->codec=get_master();
   }
 
   SET_ONERROR(tmp, free_encode_data, data);
   addstr("\266ke0", 4);
-  encode_value2(sp-args, data);
+  encode_value2(Pike_sp-args, data);
   UNSET_ONERROR(tmp);
 
   free_mapping(data->encoded);
@@ -710,14 +710,14 @@ void f_encode_value_canonic(INT32 args)
   data->counter.u.integer=COUNTER_START;
   if(args > 1)
   {
-    data->codec=sp[1-args].u.object;
+    data->codec=Pike_sp[1-args].u.object;
   }else{
     data->codec=get_master();
   }
 
   SET_ONERROR(tmp, free_encode_data, data);
   addstr("\266ke0", 4);
-  encode_value2(sp-args, data);
+  encode_value2(Pike_sp-args, data);
   UNSET_ONERROR(tmp);
 
   free_mapping(data->encoded);
@@ -872,7 +872,7 @@ static void restore_type_mark(unsigned char **old_type_mark_stackp)
 #endif /* 0 */
 #ifdef PIKE_DEBUG
   if (old_type_mark_stackp > Pike_compiler->pike_type_mark_stackp) {
-    fatal("type mark_stack out of sync!\n");
+    fatal("type Pike_interpreter.mark_stack out of sync!\n");
   }
 #endif /* PIKE_DEBUG */
   Pike_compiler->pike_type_mark_stackp = old_type_mark_stackp;
@@ -960,23 +960,23 @@ one_more_type:
       push_type(GETC());
       decode_value2(data);
       type_stack_mark();
-      switch(sp[-1].type)
+      switch(Pike_sp[-1].type)
       {
 	case T_INT:
 	  push_type_int(0);
 	  break;
 
 	case T_PROGRAM:
-	  push_type_int(sp[-1].u.program->id);
+	  push_type_int(Pike_sp[-1].u.program->id);
 	  break;
 
         case T_FUNCTION:
 	  {
 	    struct program *prog;
-	    if (sp[-1].subtype == FUNCTION_BUILTIN) {
+	    if (Pike_sp[-1].subtype == FUNCTION_BUILTIN) {
 	      error("Failed to decode object type.\n");
 	    }
-	    prog = program_from_svalue(sp-1);
+	    prog = program_from_svalue(Pike_sp-1);
 	    if (!prog) {
 	      error("Failed to decode object type.\n");
 	    }
@@ -987,7 +987,7 @@ one_more_type:
 	default:
 	  error("Failed to decode type "
 		"(object(%s), expected object(zero|program)).\n",
-		get_name_of_type(sp[-1].type));
+		get_name_of_type(Pike_sp[-1].type));
       }
       pop_stack();
       type_stack_reverse();
@@ -1011,7 +1011,7 @@ static void decode_value2(struct decode_data *data)
 
 #ifdef PIKE_DEBUG
 #undef decode_value2
-#define decode_value2(X) do { struct svalue *_=sp; decode_value2_(X); if(sp!=_+1) fatal("decode_value2 failed!\n"); } while(0)
+#define decode_value2(X) do { struct svalue *_=Pike_sp; decode_value2_(X); if(Pike_sp!=_+1) fatal("decode_value2 failed!\n"); } while(0)
 #endif
 
 
@@ -1096,9 +1096,9 @@ static void decode_value2(struct decode_data *data)
       for(e=0;e<num;e++)
       {
 	decode_value2(data);
-	ITEM(a)[e]=sp[-1];
-	sp--;
-	dmalloc_touch_svalue(sp);
+	ITEM(a)[e]=Pike_sp[-1];
+	Pike_sp--;
+	dmalloc_touch_svalue(Pike_sp);
       }
       ref_push_array(a);
       return;
@@ -1125,7 +1125,7 @@ static void decode_value2(struct decode_data *data)
       {
 	decode_value2(data);
 	decode_value2(data);
-	mapping_insert(m, sp-2, sp-1);
+	mapping_insert(m, Pike_sp-2, Pike_sp-1);
 	pop_n_elems(2);
       }
       ref_push_mapping(m);
@@ -1153,7 +1153,7 @@ static void decode_value2(struct decode_data *data)
       for(e=0;e<num;e++)
       {
 	decode_value2(data);
-	multiset_insert(m, sp-1);
+	multiset_insert(m, Pike_sp-1);
 	pop_stack();
       }
       ref_push_multiset(m);
@@ -1180,22 +1180,22 @@ static void decode_value2(struct decode_data *data)
 	  break;
 
 	case 1:
-	  if(IS_ZERO(sp-1))
+	  if(IS_ZERO(Pike_sp-1))
 	  {
-	    mapping_insert(data->decoded, &tmp, sp-1);
+	    mapping_insert(data->decoded, &tmp, Pike_sp-1);
 	    decode_value2(data);
 	    pop_stack();
 	  }else{
 	    f_call_function(1);
-	    mapping_insert(data->decoded, &tmp, sp-1);
-	    push_svalue(sp-1);
+	    mapping_insert(data->decoded, &tmp, Pike_sp-1);
+	    push_svalue(Pike_sp-1);
 	    decode_value2(data);
 	    if(!data->codec)
 	      error("Failed to decode (no codec)\n");
 	    apply(data->codec,"decode_object",2);
 	    pop_stack();
 	  }
-	  if(data->pickyness && sp[-1].type != T_OBJECT)
+	  if(data->pickyness && Pike_sp[-1].type != T_OBJECT)
 	    error("Failed to decode object.\n");
 	  return;
 
@@ -1222,9 +1222,9 @@ static void decode_value2(struct decode_data *data)
 	  error("Object coding not compatible.\n");
 	  break;
       }
-      if(data->pickyness && sp[-1].type != T_OBJECT)
+      if(data->pickyness && Pike_sp[-1].type != T_OBJECT)
 	error("Failed to decode (got type %d; expected object).\n",
-              sp[-1].type);
+              Pike_sp[-1].type);
       break;
 
     case TAG_FUNCTION:
@@ -1247,7 +1247,7 @@ static void decode_value2(struct decode_data *data)
 
 	case 1:
 	  decode_value2(data);
-	  if(sp[-2].type==T_INT)
+	  if(Pike_sp[-2].type==T_INT)
 	  {
 	    pop_stack();
 	  }else{
@@ -1259,7 +1259,7 @@ static void decode_value2(struct decode_data *data)
 	  error("Function coding not compatible.\n");
 	  break;
       }
-      if(data->pickyness && sp[-1].type != T_FUNCTION)
+      if(data->pickyness && Pike_sp[-1].type != T_FUNCTION)
 	error("Failed to decode function.\n");
       break;
 
@@ -1276,7 +1276,7 @@ static void decode_value2(struct decode_data *data)
 	  decode_value2(data);
 
 	  /* Keep the value so that we can make a good error-message. */
-	  prog_code = sp-1;
+	  prog_code = Pike_sp-1;
 	  stack_dup();
 
 	  if(data->codec)
@@ -1287,7 +1287,7 @@ static void decode_value2(struct decode_data *data)
 	    stack_swap();
 	    f_index(2);
 	  }
-	  if(data->pickyness && !program_from_svalue(sp-1)) {
+	  if(data->pickyness && !program_from_svalue(Pike_sp-1)) {
 	    if ((prog_code->type == T_STRING) &&
 		(prog_code->u.string->len < 128) &&
 		(!prog_code->u.string->size_shift)) {
@@ -1326,7 +1326,7 @@ static void decode_value2(struct decode_data *data)
 
 	  decode_value2(data);
 	  f_version(0);
-	  if(!is_eq(sp-1,sp-2))
+	  if(!is_eq(Pike_sp-1,Pike_sp-2))
 	    error("Cannot decode programs encoded with other driver version.\n");
 	  pop_n_elems(2);
 
@@ -1438,33 +1438,33 @@ static void decode_value2(struct decode_data *data)
 	    decode_value2(data);
 	    if(d==0)
 	    {
-	      if(sp[-1].type != T_PROGRAM ||
-		 sp[-1].u.program != p)
+	      if(Pike_sp[-1].type != T_PROGRAM ||
+		 Pike_sp[-1].u.program != p)
 		error("Program decode failed!\n");
 	      p->refs--;
 	    }
 
-	    switch(sp[-1].type)
+	    switch(Pike_sp[-1].type)
 	    {
 	      case T_FUNCTION:
-		if(sp[-1].subtype == FUNCTION_BUILTIN)
+		if(Pike_sp[-1].subtype == FUNCTION_BUILTIN)
 		  error("Failed to decode parent.\n");
 
-		p->inherits[d].parent_identifier=sp[-1].subtype;
-		p->inherits[d].prog=program_from_svalue(sp-1);
+		p->inherits[d].parent_identifier=Pike_sp[-1].subtype;
+		p->inherits[d].prog=program_from_svalue(Pike_sp-1);
 		if(!p->inherits[d].prog)
 		  error("Failed to decode parent.\n");
 		add_ref(p->inherits[d].prog);
-		p->inherits[d].parent=sp[-1].u.object;
-		sp--;
-		dmalloc_touch_svalue(sp);
+		p->inherits[d].parent=Pike_sp[-1].u.object;
+		Pike_sp--;
+		dmalloc_touch_svalue(Pike_sp);
 		break;
 
 	      case T_PROGRAM:
 		p->inherits[d].parent_identifier=0;
-		p->inherits[d].prog=sp[-1].u.program;
-		sp--;
-		dmalloc_touch_svalue(sp);
+		p->inherits[d].prog=Pike_sp[-1].u.program;
+		Pike_sp--;
+		dmalloc_touch_svalue(Pike_sp);
 		break;
 	      default:
 		error("Failed to decode inheritance.\n");
@@ -1495,8 +1495,8 @@ static void decode_value2(struct decode_data *data)
 	  for(d=0;d<p->num_constants;d++)
 	  {
 	    decode_value2(data);
-	    p->constants[d].sval=*--sp;
-	    dmalloc_touch_svalue(sp);
+	    p->constants[d].sval=*--Pike_sp;
+	    dmalloc_touch_svalue(Pike_sp);
 	    getdata3(p->constants[d].name);
 	  }
 	  data->pickyness--;
@@ -1540,7 +1540,7 @@ static void decode_value2(struct decode_data *data)
     error("Failed to restore string. (Illegal type)\n");
   }
 
-  mapping_insert(data->decoded, & tmp, sp-1);
+  mapping_insert(data->decoded, & tmp, Pike_sp-1);
 }
 
 
@@ -1619,7 +1619,7 @@ static void rec_restore_value(char **v, INT32 *l)
     if(sizeof(INT32) < sizeof(float))  /* FIXME FIXME FIXME FIXME */
       error("Float architecture not supported.\n");
     push_int(t); /* WARNING! */
-    sp[-1].type = T_FLOAT;
+    Pike_sp[-1].type = T_FLOAT;
     return;
 
   case TAG_TYPE:
@@ -1695,14 +1695,14 @@ void f_decode_value(INT32 args)
   check_all_args("decode_value", args,
 		 BIT_STRING, BIT_VOID | BIT_OBJECT | BIT_INT, 0);
 
-  s = sp[-args].u.string;
+  s = Pike_sp[-args].u.string;
   if(args<2)
   {
     codec=get_master();
   }
-  else if(sp[1-args].type == T_OBJECT)
+  else if(Pike_sp[1-args].type == T_OBJECT)
   {
-    codec=sp[1-args].u.object;
+    codec=Pike_sp[1-args].u.object;
   }
   else
   {
@@ -1715,6 +1715,6 @@ void f_decode_value(INT32 args)
     INT32 l=s->len;
     rec_restore_value(&v, &l);
   }
-  assign_svalue(sp-args-1, sp-1);
+  assign_svalue(Pike_sp-args-1, Pike_sp-1);
   pop_n_elems(args);
 }
diff --git a/src/error.c b/src/error.c
index bb0aa28d7062f64bb6798b76177e6c34475864c8..d8a17718f5f7daad26934cd1443d42e652dfaf3d 100644
--- a/src/error.c
+++ b/src/error.c
@@ -20,20 +20,19 @@
 #include "threads.h"
 #include "gc.h"
 
-RCSID("$Id: error.c,v 1.51 2000/05/25 02:18:35 hubbe Exp $");
+RCSID("$Id: error.c,v 1.52 2000/07/07 01:24:14 hubbe Exp $");
 
 #undef ATTRIBUTE
 #define ATTRIBUTE(X)
 
-JMP_BUF *recoveries=0;
 
 #ifdef PIKE_DEBUG
 void check_recovery_context(void)
 {
   char foo;
-#define TESTILITEST ((((char *)recoveries)-((char *)&foo))*STACK_DIRECTION)
-  if(recoveries && TESTILITEST > 0)
-    fatal("Recoveries is out biking (recoveries=%p, sp=%p, %d)!\n",recoveries, &foo,TESTILITEST);
+#define TESTILITEST ((((char *)Pike_interpreter.recoveries)-((char *)&foo))*STACK_DIRECTION)
+  if(Pike_interpreter.recoveries && TESTILITEST > 0)
+    fatal("Recoveries is out biking (Pike_interpreter.recoveries=%p, Pike_sp=%p, %d)!\n",Pike_interpreter.recoveries, &foo,TESTILITEST);
 
   /* Add more stuff here when required */
 }
@@ -51,57 +50,57 @@ JMP_BUF *init_recovery(JMP_BUF *r DEBUG_LINE_ARGS)
   r->file=file;
   OED_FPRINTF((stderr, "init_recovery(%p) %s:%d\n", r, file, line));
 #endif
-  r->fp=fp;
-  r->sp=sp-evaluator_stack;
-  r->mark_sp=mark_sp - mark_stack;
-  r->previous=recoveries;
+  r->frame_pointer=Pike_fp;
+  r->stack_pointer=Pike_sp-Pike_interpreter.evaluator_stack;
+  r->mark_sp=Pike_mark_sp - Pike_interpreter.mark_stack;
+  r->previous=Pike_interpreter.recoveries;
   r->onerror=0;
   r->severity=THROW_ERROR;
-  recoveries=r;
+  Pike_interpreter.recoveries=r;
   check_recovery_context();
   return r;
 }
 
 void pike_throw(void) ATTRIBUTE((noreturn))
 {
-  while(recoveries && throw_severity > recoveries->severity)
+  while(Pike_interpreter.recoveries && throw_severity > Pike_interpreter.recoveries->severity)
   {
-    while(recoveries->onerror)
+    while(Pike_interpreter.recoveries->onerror)
     {
-      (*recoveries->onerror->func)(recoveries->onerror->arg);
-      recoveries->onerror=recoveries->onerror->previous;
+      (*Pike_interpreter.recoveries->onerror->func)(Pike_interpreter.recoveries->onerror->arg);
+      Pike_interpreter.recoveries->onerror=Pike_interpreter.recoveries->onerror->previous;
     }
     
-    recoveries=recoveries->previous;
+    Pike_interpreter.recoveries=Pike_interpreter.recoveries->previous;
   }
 
-  if(!recoveries)
+  if(!Pike_interpreter.recoveries)
     fatal("No error recovery context.\n");
 
 #ifdef PIKE_DEBUG
-  if(sp - evaluator_stack < recoveries->sp)
+  if(Pike_sp - Pike_interpreter.evaluator_stack < Pike_interpreter.recoveries->stack_pointer)
     fatal("Stack error in error.\n");
 #endif
 
-  while(fp != recoveries->fp)
+  while(Pike_fp != Pike_interpreter.recoveries->frame_pointer)
   {
 #ifdef PIKE_DEBUG
-    if(!fp)
+    if(!Pike_fp)
       fatal("Popped out of stack frames.\n");
 #endif
     POP_PIKE_FRAME();
   }
 
-  pop_n_elems(sp - evaluator_stack - recoveries->sp);
-  mark_sp = mark_stack + recoveries->mark_sp;
+  pop_n_elems(Pike_sp - Pike_interpreter.evaluator_stack - Pike_interpreter.recoveries->stack_pointer);
+  Pike_mark_sp = Pike_interpreter.mark_stack + Pike_interpreter.recoveries->mark_sp;
 
-  while(recoveries->onerror)
+  while(Pike_interpreter.recoveries->onerror)
   {
-    (*recoveries->onerror->func)(recoveries->onerror->arg);
-    recoveries->onerror=recoveries->onerror->previous;
+    (*Pike_interpreter.recoveries->onerror->func)(Pike_interpreter.recoveries->onerror->arg);
+    Pike_interpreter.recoveries->onerror=Pike_interpreter.recoveries->onerror->previous;
   }
 
-  longjmp(recoveries->recovery,1);
+  longjmp(Pike_interpreter.recoveries->recovery,1);
 }
 
 void push_error(char *description)
@@ -119,7 +118,7 @@ void low_error(char *buf) ATTRIBUTE((noreturn))
 {
   push_error(buf);
   free_svalue(& throw_value);
-  throw_value = *--sp;
+  throw_value = *--Pike_sp;
   throw_severity = THROW_ERROR;
   in_error=0;
   pike_throw();  /* Hope someone is catching, or we will be out of balls. */
@@ -147,7 +146,7 @@ void va_error(const char *fmt, va_list args) ATTRIBUTE((noreturn))
   VSPRINTF(buf, fmt, args);
 #endif /* HAVE_VSNPRINTF */
 
-  if(!recoveries)
+  if(!Pike_interpreter.recoveries)
   {
 #ifdef PIKE_DEBUG
     dump_backlog();
@@ -179,7 +178,7 @@ void new_error(const char *name, const char *text, struct svalue *oldsp,
 
   in_error=text;
 
-  if(!recoveries)
+  if(!Pike_interpreter.recoveries)
   {
 #ifdef PIKE_DEBUG
     dump_backlog();
@@ -216,7 +215,7 @@ void new_error(const char *name, const char *text, struct svalue *oldsp,
   f_aggregate(2);
 
   free_svalue(& throw_value);
-  throw_value = *--sp;
+  throw_value = *--Pike_sp;
   throw_severity=THROW_ERROR;
 
   in_error=0;
@@ -295,13 +294,13 @@ void debug_fatal(const char *fmt, ...) ATTRIBUTE((noreturn,format (printf, 1, 2)
   (void)VFPRINTF(stderr, fmt, args);
 
   d_flag=t_flag=0;
-  if(Pike_sp && evaluator_stack)
+  if(Pike_sp && Pike_interpreter.evaluator_stack)
   {
     fprintf(stderr,"Attempting to dump backlog (may fail)...\n");
     push_error("Backtrace at time of fatal:\n");
     APPLY_MASTER("describe_backtrace",1);
-    if(sp[-1].type==T_STRING)
-      write_to_stderr(sp[-1].u.string->str, sp[-1].u.string->len);
+    if(Pike_sp[-1].type==T_STRING)
+      write_to_stderr(Pike_sp[-1].u.string->str, Pike_sp[-1].u.string->len);
   }else{
     fprintf(stderr,"No stack - no backtrace.\n");
   }
@@ -346,7 +345,7 @@ void f_error_index(INT32 args)
       ref_push_array(GENERIC_ERROR_THIS->backtrace);
       break;
     default:
-      index_error("error->`[]", sp-args, args, NULL, sp-args,
+      index_error("error->`[]", Pike_sp-args, args, NULL, Pike_sp-args,
 		  "Index %d is out of range 0 - 1.\n", ind);
       break;
   }
@@ -356,7 +355,7 @@ void f_error_index(INT32 args)
 void f_error_describe(INT32 args)
 {
   pop_n_elems(args);
-  ref_push_object(fp->current_object);
+  ref_push_object(Pike_fp->current_object);
   APPLY_MASTER("describe_backtrace",1);
 }
 
@@ -448,12 +447,12 @@ void generic_error_va(struct object *o,
     f_add(2);
   }
 
-  if(sp[-1].type!=T_ARRAY)
+  if(Pike_sp[-1].type!=T_ARRAY)
     fatal("Error failed to generate a backtrace!\n");
 
-  ERROR_STRUCT(generic,o)->backtrace=sp[-1].u.array;
-  sp--;
-  dmalloc_touch_svalue(sp);
+  ERROR_STRUCT(generic,o)->backtrace=Pike_sp[-1].u.array;
+  Pike_sp--;
+  dmalloc_touch_svalue(Pike_sp);
 
   free_svalue(& throw_value);
   throw_value.type=T_OBJECT;
@@ -562,7 +561,7 @@ void wrong_number_of_args_error(char *name, int args, int expected)
     msg="Too many arguments";
   }
 
-  new_error(name, msg, sp-args, args, 0,0);
+  new_error(name, msg, Pike_sp-args, args, 0,0);
 }
 
 #ifdef PIKE_DEBUG
diff --git a/src/interpret.c b/src/interpret.c
index 4d34d31ee120eef57c557dab1a34b9e6e66fa09d..0fd0a8855a192c780c6a9cc8e44190d99727117e 100644
--- a/src/interpret.c
+++ b/src/interpret.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: interpret.c,v 1.156 2000/07/07 00:54:54 hubbe Exp $");
+RCSID("$Id: interpret.c,v 1.157 2000/07/07 01:24:14 hubbe Exp $");
 #include "interpret.h"
 #include "object.h"
 #include "program.h"
@@ -71,17 +71,17 @@ int mark_stack_malloced = 0;
 
 void push_sp_mark(void)
 {
-  if(Pike_interpreter.mark_sp == Pike_interpreter.mark_stack + stack_size)
+  if(Pike_mark_sp == Pike_interpreter.mark_stack + stack_size)
     error("No more mark stack!\n");
-  *Pike_interpreter.mark_sp++=Pike_sp;
+  *Pike_mark_sp++=Pike_sp;
 }
 int pop_sp_mark(void)
 {
 #ifdef PIKE_DEBUG
-  if(Pike_interpreter.mark_sp < Pike_interpreter.mark_stack)
+  if(Pike_mark_sp < Pike_interpreter.mark_stack)
     fatal("Mark stack underflow!\n");
 #endif
-  return Pike_sp - *--Pike_interpreter.mark_sp;
+  return Pike_sp - *--Pike_mark_sp;
 }
 
 
@@ -167,7 +167,7 @@ use_malloc:
   }
 
   Pike_sp=Pike_interpreter.evaluator_stack;
-  Pike_interpreter.mark_sp=Pike_interpreter.mark_stack;
+  Pike_mark_sp=Pike_interpreter.mark_stack;
   Pike_fp=0;
 
 #ifdef PIKE_DEBUG
@@ -1086,11 +1086,11 @@ void mega_apply2(enum apply_type type, INT32 args, void *arg1, void *arg2)
 	check_threads_etc();
 
 	{
-	  struct svalue **save_mark_sp=Pike_interpreter.mark_sp;
+	  struct svalue **save_mark_sp=Pike_mark_sp;
 	  tailrecurse=eval_instruction(pc);
-	  Pike_interpreter.mark_sp=save_mark_sp;
+	  Pike_mark_sp=save_mark_sp;
 #ifdef PIKE_DEBUG
-	  if(Pike_interpreter.mark_sp < save_mark_sp)
+	  if(Pike_mark_sp < save_mark_sp)
 	    fatal("Popped below save_mark_sp!\n");
 #endif
 	}
@@ -1213,15 +1213,15 @@ static int o_catch(unsigned char *pc)
     Pike_fp->expendible=expendible;
     return 0;
   }else{
-    struct svalue **save_mark_sp=Pike_interpreter.mark_sp;
+    struct svalue **save_mark_sp=Pike_mark_sp;
     int x;
     Pike_fp->expendible=Pike_fp->locals + Pike_fp->num_locals;
     x=eval_instruction(pc);
 #ifdef PIKE_DEBUG
-    if(Pike_interpreter.mark_sp < save_mark_sp)
+    if(Pike_mark_sp < save_mark_sp)
       fatal("mark Pike_sp underflow in catch.\n");
 #endif
-    Pike_interpreter.mark_sp=save_mark_sp;
+    Pike_mark_sp=save_mark_sp;
     Pike_fp->expendible=expendible;
     if(x!=-1) mega_apply(APPLY_STACK, x, 0,0);
     UNSETJMP(tmp);
@@ -1261,9 +1261,9 @@ int apply_low_safe_and_stupid(struct object *o, INT32 offset)
   {
     ret=1;
   }else{
-    struct svalue **save_mark_sp=Pike_interpreter.mark_sp;
+    struct svalue **save_mark_sp=Pike_mark_sp;
     int tmp=eval_instruction(o->prog->program + offset);
-    Pike_interpreter.mark_sp=save_mark_sp;
+    Pike_mark_sp=save_mark_sp;
     if(tmp!=-1) mega_apply(APPLY_STACK, tmp, 0,0);
     
 #ifdef PIKE_DEBUG
@@ -1398,16 +1398,16 @@ void slow_check_stack(void)
 	  "(%d entries on stack, stack_size is %d entries)\n",
 	  Pike_sp-Pike_interpreter.evaluator_stack,stack_size);
 
-  if(Pike_interpreter.mark_sp > &(Pike_interpreter.mark_stack[stack_size]))
+  if(Pike_mark_sp > &(Pike_interpreter.mark_stack[stack_size]))
     fatal("Mark stack overflow.\n");
 
-  if(Pike_interpreter.mark_sp < Pike_interpreter.mark_stack)
+  if(Pike_mark_sp < Pike_interpreter.mark_stack)
     fatal("Mark stack underflow.\n");
 
   for(s=Pike_interpreter.evaluator_stack;s<Pike_sp;s++) check_svalue(s);
 
   s=Pike_interpreter.evaluator_stack;
-  for(m=Pike_interpreter.mark_stack;m<Pike_interpreter.mark_sp;m++)
+  for(m=Pike_interpreter.mark_stack;m<Pike_mark_sp;m++)
   {
     if(*m < s)
       fatal("Mark stack failure.\n");
diff --git a/src/interpret.h b/src/interpret.h
index c4d060539909831b8dfae41103bc26a43368c8d9..273984c8fd17eca045fb2481a53da86f5079798c 100644
--- a/src/interpret.h
+++ b/src/interpret.h
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: interpret.h,v 1.48 2000/07/07 01:19:04 hubbe Exp $
+ * $Id: interpret.h,v 1.49 2000/07/07 01:24:14 hubbe Exp $
  */
 #ifndef INTERPRET_H
 #define INTERPRET_H
@@ -80,7 +80,7 @@ struct pike_frame
   }while(0)
 
 #define check_mark_stack(X) do {		\
-  if(Pike_interpreter.mark_sp - Pike_interpreter.mark_stack + (X) >= Pike_stack_size)	\
+  if(Pike_mark_sp - Pike_interpreter.mark_stack + (X) >= Pike_stack_size)	\
     error("Mark stack overflow.\n");		\
   }while(0)