X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=src%2Fcall.c;h=6c924c8fa8872e1f475239d1ff74256b1e302287;hp=9b6f79f32c3af14382df03cac252fb86077c7552;hb=53495ef4bd0321f7f92dd05eef8e01b90d7b415a;hpb=d583a661f2349ac7be4922e6eca0687ea8ccfef3 diff --git a/src/call.c b/src/call.c index 9b6f79f..6c924c8 100644 --- a/src/call.c +++ b/src/call.c @@ -234,6 +234,22 @@ void **psi_call_frame_get_arg_pointers(struct psi_call_frame *frame) { return frame->pointers; } +void *psi_call_frame_get_rpointer(struct psi_call_frame *frame) { + return frame->rpointer; +} + +struct psi_decl *psi_call_frame_get_decl(struct psi_call_frame *frame) { + return frame->decl; +} + +struct psi_impl *psi_call_frame_get_impl(struct psi_call_frame *frame) { + return frame->impl; +} + +struct psi_context *psi_call_frame_get_context(struct psi_call_frame *frame) { + return frame->context; +} + ZEND_RESULT_CODE psi_call_frame_parse_args(struct psi_call_frame *frame, zend_execute_data *execute_data) { size_t i, argc = psi_plist_count(frame->impl->func->args); @@ -419,36 +435,7 @@ ZEND_RESULT_CODE psi_call_frame_do_assert(struct psi_call_frame *frame, enum psi } void psi_call_frame_do_call(struct psi_call_frame *frame) { - size_t va_count = psi_call_frame_num_var_args(frame); - - if (va_count) { - void **va_types = ecalloc(va_count, sizeof(void *)); - size_t i; - - for (i = 0; i < va_count; ++i) { - struct psi_call_frame_argument *frame_arg; - - frame_arg = psi_call_frame_get_var_argument(frame, i); - va_types[i] = frame->context->ops->query(frame->context, - PSI_CONTEXT_QUERY_TYPE, &frame_arg->va_type); - } - - frame->context->ops->call_va(frame->context, - frame, - frame->decl, - frame->rpointer, - frame->pointers, - va_count, - va_types); - - efree(va_types); - } else { - frame->context->ops->call(frame->context, - frame, - frame->decl, - frame->rpointer, - frame->pointers); - } + frame->context->ops->call(frame); } void psi_call_frame_do_callback(struct psi_call_frame *frame, struct psi_call_frame_callback *cbdata)