Branch: Tag:

2002-11-22

2002-11-22 15:45:48 by Henrik Grubbström (Grubba) <grubba@grubba.org>

do_lfun_call() now looks at IDENTIFIER_VARARGS before emitting F_RECUR opcodes.

Rev: src/docode.c:1.159

2:   || 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: docode.c,v 1.158 2002/11/22 14:47:43 grubba Exp $ + || $Id: docode.c,v 1.159 2002/11/22 15:45:48 grubba Exp $   */      #include "global.h" - RCSID("$Id: docode.c,v 1.158 2002/11/22 14:47:43 grubba Exp $"); + RCSID("$Id: docode.c,v 1.159 2002/11/22 15:45:48 grubba Exp $");   #include "las.h"   #include "program.h"   #include "pike_types.h"
440: Inside #if 1
   struct reference *ref =    Pike_compiler->new_program->identifier_references + id;    -  /* NB: The second part handles use of local::fun(). */ +  /* Test description: +  * +  * * Test if we have a valid current function. +  * +  * * Check that the function isn't varargs. +  * +  * * Quick check if id is the current function. +  * +  * * Check if id is an alternate reference to the current function. +  */    if((Pike_compiler->compiler_frame->current_function_number >= 0) && -  +  (!(Pike_compiler->new_program-> +  identifiers[ref->identifier_offset].identifier_flags & +  IDENTIFIER_VARARGS)) &&    ((id == Pike_compiler->compiler_frame->current_function_number) ||    ((!ref->inherit_offset) &&    (ref->identifier_offset ==