Skip to content

Commit

Permalink
* Optimize argument_stack top lookup
Browse files Browse the repository at this point in the history
* Fix a nasty bug in zend_ptr_stack_clean()
  • Loading branch information
Andi Gutmans committed Apr 13, 1999
1 parent 533f135 commit 3fcc651
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 4 deletions.
2 changes: 1 addition & 1 deletion Zend/libzend.dsp

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions Zend/zend_API.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ HashTable list_destructors, module_registry;
/* this function doesn't check for too many parameters */
int getParameters(int ht, int param_count,...)
{
void **p = EG(argument_stack).elements+EG(argument_stack).top-1;
void **p = EG(argument_stack).top_element-1;
int arg_count = (ulong) *p;
va_list ptr;
zval **param, *param_ptr;
Expand All @@ -57,6 +57,7 @@ int getParameters(int ht, int param_count,...)
new_tmp->refcount = 1;
new_tmp->is_ref = 0;
param_ptr = new_tmp;
((zval *) *(p-param_count))->refcount--;
*(p-param_count) = param_ptr;
}
*param = param_ptr;
Expand All @@ -70,7 +71,7 @@ int getParameters(int ht, int param_count,...)

int getParametersArray(int ht, int param_count, zval **argument_array)
{
void **p = EG(argument_stack).elements+EG(argument_stack).top-1;
void **p = EG(argument_stack).top_element-1;
int arg_count = (ulong) *p;
zval *param_ptr;
ELS_FETCH();
Expand All @@ -91,6 +92,7 @@ int getParametersArray(int ht, int param_count, zval **argument_array)
new_tmp->refcount = 1;
new_tmp->is_ref = 0;
param_ptr = new_tmp;
((zval *) *(p-param_count))->refcount--;
*(p-param_count) = param_ptr;
}
*(argument_array++) = param_ptr;
Expand Down
2 changes: 1 addition & 1 deletion Zend/zend_execute_API.c
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,7 @@ ZEND_API inline void zend_ptr_stack_clear_multiple(ELS_D)

ZEND_API int zend_ptr_stack_get_arg(int requested_arg, void **data)
{
void **p = EG(argument_stack).elements+EG(argument_stack).top-1;
void **p = EG(argument_stack).top_element-1;
int arg_count = (ulong) *p;

if (requested_arg>arg_count) {
Expand Down
1 change: 1 addition & 0 deletions Zend/zend_ptr_stack.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ ZEND_API void zend_ptr_stack_clean(zend_ptr_stack *stack, void (*func)(void *))
{
zend_ptr_stack_apply(stack, func);
stack->top = 0;
stack->top_element = stack->elements;
}


0 comments on commit 3fcc651

Please sign in to comment.