diff --git a/src/interpret_functions.h b/src/interpret_functions.h index 2097c31513a1d772ffb2c36e3b18b47b9cc00124..eb35afb54a330daa5e168372a984c6ecfe68bae6 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.184 2005/05/19 22:35:28 mast Exp $ +|| $Id: interpret_functions.h,v 1.185 2005/06/20 12:52:01 grubba Exp $ */ /* @@ -429,9 +429,7 @@ OPCODE2(F_EXTERNAL_LVALUE, "& external", I_UPDATE_SP, { }); ref_push_object(loc.o); - Pike_sp->type=T_OBJ_INDEX; - Pike_sp->u.integer=arg1 + loc.inherit->identifier_level; - Pike_sp++; + push_obj_index(arg1 + loc.inherit->identifier_level); }); OPCODE1(F_MARK_AND_LOCAL, "mark & local", I_UPDATE_SP|I_UPDATE_M_SP, { @@ -659,7 +657,6 @@ OPCODE0(F_LTOSVAL2, "ltosval2", I_UPDATE_SP, { Pike_sp[-1].type = PIKE_T_INT; Pike_sp++; lvalue_to_svalue_no_free(Pike_sp-2, Pike_sp-4); - /* This is so that foo+=bar (and similar things) will be faster. * It's done by freeing the old reference to foo after it has been * pushed on the stack. That way foo can have only 1 reference if we @@ -852,8 +849,7 @@ OPCODE0(F_ADD_TO_AND_POP, "+= and pop", I_UPDATE_SP, { OPCODE1(F_GLOBAL_LVALUE, "& global", I_UPDATE_SP, { ref_push_object(Pike_fp->current_object); - push_int(arg1 + Pike_fp->context.identifier_level); - Pike_sp[-1].type = T_OBJ_INDEX; + push_obj_index(rg1 + Pike_fp->context.identifier_level); }); OPCODE0(F_INC, "++x", I_UPDATE_SP, {