pike.git/
src/
builtin.cmod
Branch:
Tag:
Non-build tags
All tags
No tags
2016-06-14
2016-06-14 09:13:37 by Martin Karlgren <marty@roxen.com>
d3a10b6a1563927016f4844ddcd7a60a817f36e1 (
23
lines) (+
20
/-
3
)
[
Show
|
Annotate
]
Branch:
arne/faster_calls
Use new frame API in low_automap.
4253:
push_array(ret=allocate_array(size)); types = 0;
+
struct pike_frame *frame;
+
+
if (d == depth) {
+
frame = frame_init();
+
frame_setup_from_svalue(frame, fun);
+
} else {
+
frame = NULL;
+
}
+
for(x=0;x<size;x++) { for(e=0;e<args;e++)
4271:
} }
-
if(
d
=
=
depth
)
-
apply
_
svalue
(
fun
,args);
-
else
+
if(
frame
!
=
NULL
)
{
+
frame
_
prepare
(
frame
,
args);
+
frame_execute (frame);
+
}
else
{
low_automap(d+1,depth,fun,real_args,args);
-
+
}
stack_pop_to_no_free (ITEM(ret) + x); types |= 1 << TYPEOF(ITEM(ret)[x]); }
-
+
+
if (frame != NULL) {
+
frame_pop (frame);
+
}
+
ret->type_field = types; stack_unlink(args); }