pike.git
/
src
/
docode.c
version
»
Context lines:
10
20
40
80
file
none
3
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.
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" #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:433:
/* Emit code for a function call to the identifier reference #id, * with the arguments specified by args. */ int do_lfun_call(int id, node *args) { #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 == Pike_compiler->new_program-> identifier_references[Pike_compiler->compiler_frame-> current_function_number].identifier_offset)))) { int n=count_args(args); if(n == Pike_compiler->compiler_frame->num_args) {