pike.git/
src/
interpret.c
Branch:
Tag:
Non-build tags
All tags
No tags
2017-11-18
2017-11-18 10:13:14 by Arne Goedeke <el@laramies.com>
a6cecc7bde68ad9e320d3da6f4f0a82f367510e3 (
11
lines) (+
6
/-
5
)
[
Show
|
Annotate
]
Branch:
arne/faster_calls_again
Interpreter: cleanup some local variables
3298:
struct inherit *context; struct reference *ref; struct identifier *function;
-
struct pike_frame *scope = NULL;
+
INT32 args = c->args; if(UNLIKELY(!p))
3312:
if(UNLIKELY(p == pike_trampoline_program && fun == QUICK_FIND_LFUN(pike_trampoline_program, LFUN_CALL))) {
-
scope = ((struct pike_trampoline *)(o->storage))->frame;
+
struct pike_frame *
scope = ((struct pike_trampoline *)(o->storage))->frame;
fun = ((struct pike_trampoline *)(o->storage))->func; o = scope->current_object; callsite_resolve_fun(c, o, fun);
3369:
/* this case needs a frame, too */ break; }
-
/*
Fall
through
*/
+
callsite_resolve_svalue(c,
s);
+
return;
} case IDENTIFIER_VARIABLE:
3403:
} default:
-
if (IDENTIFIER_IS_ALIAS(function->identifier_flags)) {
+
if (
UNLIKELY(
IDENTIFIER_IS_ALIAS(function->identifier_flags))
)
{
do { struct external_variable_context loc; loc.o = o;
3470:
frame->current_storage = o->storage + context->storage_offset; frame->expendible_offset = 0; frame->args = args;
+
frame->scope = NULL;
frame->num_locals = 0; frame->num_args = 0;
-
frame->scope = scope;
+
frame->return_addr = NULL; check_stack(256);