pike.git / src / docode.c

version» Context lines:

pike.git/src/docode.c:1:   /*\   ||| This file a part of Pike, and is copyright by Fredrik Hubinette   ||| Pike is distributed as GPL (General Public License)   ||| See the files COPYING and DISCLAIMER for more information.   \*/   #include "global.h" - RCSID("$Id: docode.c,v 1.16.2.1 1997/06/25 22:46:36 hubbe Exp $"); + RCSID("$Id: docode.c,v 1.16.2.2 1997/06/27 06:55:15 hubbe Exp $");   #include "las.h"   #include "program.h"   #include "language.h"   #include "pike_types.h"   #include "stralloc.h"   #include "interpret.h"   #include "constants.h"   #include "array.h"   #include "pike_macros.h"   #include "error.h"
pike.git/src/docode.c:248:    emit(F_NUMBER,0);    return 1;       case F_LVALUE_LIST:    case F_LOCAL:    case F_GLOBAL:    case F_IDENTIFIER:    case F_INDEX:    case F_ARROW:    case F_ARG_LIST: +  case F_EXTERNAL:    break;    }    }       switch(n->token)    { -  +  case F_EXTERNAL: +  emit(F_LDA, n->u.integer.a); +  if(flags & DO_LVALUE) +  { +  emit(F_EXTERNAL_LVALUE, n->u.integer.b); +  return 2; +  }else{ +  emit(F_EXTERNAL, n->u.integer.b); +  return 1; +  } +  break; +     case F_UNDEFINED:    yyerror("Undefined identifier");    emit(F_NUMBER,0);    return 1;       case F_PUSH_ARRAY:    code_expression(CAR(n), 0, "`@");    emit2(F_PUSH_ARRAY);    return -0x7ffffff;   
pike.git/src/docode.c:686:    struct pike_string *tmp;    struct efun *fun;    node *foo;       emit2(F_MARK);    do_docode(CAR(n),0);    do_docode(CDR(n),0);       tmp=findstring("call_function");    if(!tmp) yyerror("No call_function efun."); -  if(!find_module_identifier(tmp)) +  foo=find_module_identifier(tmp); +  if(!foo || !foo->token==F_CONSTANT)    {    yyerror("No call_function efun.");    }else{ -  tmp1=store_constant(sp-1, 1); -  pop_stack(); +  tmp1=store_constant(& foo->u.sval, 1);    emit(F_APPLY, tmp1);    } -  +  free_node(foo);    return 1;    }       case F_ARG_LIST:    tmp1=do_docode(CAR(n),flags & ~DO_LVALUE);    tmp1+=do_docode(CDR(n),flags);    return tmp1;          /* Switch: