pike.git / src / docode.c

version» Context lines:

pike.git/src/docode.c:1:   /*   || 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.154 2002/11/14 12:36:42 grubba Exp $ + || $Id: docode.c,v 1.155 2002/11/14 12:45:44 grubba Exp $   */      #include "global.h" - RCSID("$Id: docode.c,v 1.154 2002/11/14 12:36:42 grubba Exp $"); + RCSID("$Id: docode.c,v 1.155 2002/11/14 12:45:44 grubba Exp $");   #include "las.h"   #include "program.h"   #include "pike_types.h"   #include "stralloc.h"   #include "interpret.h"   #include "constants.h"   #include "array.h"   #include "pike_macros.h"   #include "pike_error.h"   #include "pike_memory.h"
pike.git/src/docode.c:451: Inside #if 1
   int n=count_args(args);    if(n == Pike_compiler->compiler_frame->num_args)    {    do_docode(args,0);    if(Pike_compiler->compiler_frame->is_inline ||    (ref->id_flags & ID_INLINE))    {    /* Identifier is declared inline/local    * or in inlining pass.    */ +  if ((ref->id_flags & ID_INLINE) && +  (!Pike_compiler->compiler_frame->is_inline)) { +  /* Explicit local:: reference in first pass. +  * +  * RECUR directly to label 0. +  * +  * (We don't want to trigger the second pass if it's not needed.) +  */ +  do_jump(F_RECUR, 0); +  } else {    Pike_compiler->compiler_frame->    recur_label=do_jump(F_RECUR,    Pike_compiler->compiler_frame->recur_label); -  +  }    } else {    /* Recur if not overloaded. */    emit1(F_COND_RECUR,id);    Pike_compiler->compiler_frame->    recur_label=do_jump(F_POINTER,    Pike_compiler->compiler_frame->recur_label);    }    return 1;    }    }
pike.git/src/docode.c:2205:    init_bytecode();    label_no=1;      #ifdef ALIGN_PIKE_FUNCTION_BEGINNINGS    while( ( (((INT32) PIKE_PC)+2) & (ALIGN_PIKE_JUMPS-1)))    ins_byte(0);   #endif       ret=PIKE_PC;    /* NOTE: This is no ordinary label... */ -  Pike_compiler->compiler_frame->recur_label=0; +     low_insert_label(0);    emit1(F_BYTE,Pike_compiler->compiler_frame->max_number_of_locals);    emit1(F_BYTE,Pike_compiler->compiler_frame->num_args);    emit0(F_ENTRY);    emit0(F_START_FUNCTION);       if(Pike_compiler->compiler_frame->current_function_number >= 0 &&    (Pike_compiler->new_program->identifier_references[    Pike_compiler->compiler_frame->current_function_number].id_flags &    ID_INLINE))    { -  +  Pike_compiler->compiler_frame->recur_label=0;    Pike_compiler->compiler_frame->is_inline=1;    }       DO_CODE_BLOCK(n);       if(Pike_compiler->compiler_frame->recur_label > 0)    {   #ifdef PIKE_DEBUG    if(l_flag)    {