summaryrefslogtreecommitdiff
path: root/Zend/zend_ast.c
diff options
context:
space:
mode:
authorBob Weinand <bobwei9@hotmail.com>2013-11-07 16:39:47 +0100
committerBob Weinand <bobwei9@hotmail.com>2013-11-07 16:39:47 +0100
commit152898ff2872f2bdf2123a52c37f6e64c18ab88a (patch)
tree8db78b279ed15c587e328f55b49687f6fbc22b19 /Zend/zend_ast.c
parente0135014c3b4edaf67312677c440a93133fe6a0c (diff)
downloadphp-git-152898ff2872f2bdf2123a52c37f6e64c18ab88a.tar.gz
Moved arrays again to "static_scalar:" & little cleanup
Diffstat (limited to 'Zend/zend_ast.c')
-rw-r--r--Zend/zend_ast.c174
1 files changed, 87 insertions, 87 deletions
diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c
index 7495da38e5..fb5a7eb403 100644
--- a/Zend/zend_ast.c
+++ b/Zend/zend_ast.c
@@ -25,42 +25,42 @@
ZEND_API zend_ast *zend_ast_create_constant(zval *zv)
{
- zend_ast *node = emalloc(sizeof(zend_ast) + sizeof(zval));
- node->kind = ZEND_CONST;
- node->children = 0;
- node->u.val = (zval*)(node + 1);
- INIT_PZVAL_COPY(node->u.val, zv);
- return node;
+ zend_ast *ast = emalloc(sizeof(zend_ast) + sizeof(zval));
+ ast->kind = ZEND_CONST;
+ ast->children = 0;
+ ast->u.val = (zval*)(ast + 1);
+ INIT_PZVAL_COPY(ast->u.val, zv);
+ return ast;
}
ZEND_API zend_ast* zend_ast_create_unary(uint kind, zend_ast *op0)
{
- zend_ast *node = emalloc(sizeof(zend_ast));
- node->kind = kind;
- node->children = 1;
- node->u.child[0] = op0;
- return node;
+ zend_ast *ast = emalloc(sizeof(zend_ast));
+ ast->kind = kind;
+ ast->children = 1;
+ (&ast->u.child)[0] = op0;
+ return ast;
}
ZEND_API zend_ast* zend_ast_create_binary(uint kind, zend_ast *op0, zend_ast *op1)
{
- zend_ast *node = emalloc(sizeof(zend_ast) + sizeof(zend_ast*));
- node->kind = kind;
- node->children = 2;
- node->u.child[0] = op0;
- node->u.child[1] = op1;
- return node;
+ zend_ast *ast = emalloc(sizeof(zend_ast) + sizeof(zend_ast*));
+ ast->kind = kind;
+ ast->children = 2;
+ (&ast->u.child)[0] = op0;
+ (&ast->u.child)[1] = op1;
+ return ast;
}
ZEND_API zend_ast* zend_ast_create_ternary(uint kind, zend_ast *op0, zend_ast *op1, zend_ast *op2)
{
- zend_ast *node = emalloc(sizeof(zend_ast) + sizeof(zend_ast*) * 2);
- node->kind = kind;
- node->children = 3;
- node->u.child[0] = op0;
- node->u.child[1] = op1;
- node->u.child[2] = op2;
- return node;
+ zend_ast *ast = emalloc(sizeof(zend_ast) + sizeof(zend_ast*) * 2);
+ ast->kind = kind;
+ ast->children = 3;
+ (&ast->u.child)[0] = op0;
+ (&ast->u.child)[1] = op1;
+ (&ast->u.child)[2] = op2;
+ return ast;
}
ZEND_API int zend_ast_is_ct_constant(zend_ast *ast)
@@ -71,8 +71,8 @@ ZEND_API int zend_ast_is_ct_constant(zend_ast *ast)
return !IS_CONSTANT_TYPE(Z_TYPE_P(ast->u.val));
} else {
for (i = 0; i < ast->children; i++) {
- if (ast->u.child[i]) {
- if (!zend_ast_is_ct_constant(ast->u.child[i])) {
+ if ((&ast->u.child)[i]) {
+ if (!zend_ast_is_ct_constant((&ast->u.child)[i])) {
return 0;
}
}
@@ -87,137 +87,137 @@ ZEND_API void zend_ast_evaluate(zval *result, zend_ast *ast TSRMLS_DC)
switch (ast->kind) {
case ZEND_ADD:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
add_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_SUB:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
sub_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_MUL:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
mul_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_DIV:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
div_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_MOD:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
mod_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_SL:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
shift_left_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_SR:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
shift_right_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_CONCAT:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
concat_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_BW_OR:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
bitwise_or_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_BW_AND:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
bitwise_and_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_BW_XOR:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
bitwise_xor_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_BW_NOT:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
bitwise_not_function(result, &op1 TSRMLS_CC);
zval_dtor(&op1);
break;
case ZEND_BOOL_NOT:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
boolean_not_function(result, &op1 TSRMLS_CC);
zval_dtor(&op1);
break;
case ZEND_BOOL_XOR:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
boolean_xor_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_IS_IDENTICAL:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
is_identical_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_IS_NOT_IDENTICAL:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
is_not_identical_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_IS_EQUAL:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
is_equal_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_IS_NOT_EQUAL:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
is_not_equal_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_IS_SMALLER:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
is_smaller_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
break;
case ZEND_IS_SMALLER_OR_EQUAL:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
is_smaller_or_equal_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op1);
zval_dtor(&op2);
@@ -230,9 +230,9 @@ ZEND_API void zend_ast_evaluate(zval *result, zend_ast *ast TSRMLS_DC)
}
break;
case ZEND_BOOL_AND:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
if (zend_is_true(&op1)) {
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
ZVAL_BOOL(result, zend_is_true(&op2));
zval_dtor(&op2);
} else {
@@ -241,39 +241,39 @@ ZEND_API void zend_ast_evaluate(zval *result, zend_ast *ast TSRMLS_DC)
zval_dtor(&op1);
break;
case ZEND_BOOL_OR:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
if (zend_is_true(&op1)) {
ZVAL_BOOL(result, 1);
} else {
- zend_ast_evaluate(&op2, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[1] TSRMLS_CC);
ZVAL_BOOL(result, zend_is_true(&op2));
zval_dtor(&op2);
}
zval_dtor(&op1);
break;
case ZEND_SELECT:
- zend_ast_evaluate(&op1, ast->u.child[0] TSRMLS_CC);
+ zend_ast_evaluate(&op1, (&ast->u.child)[0] TSRMLS_CC);
if (zend_is_true(&op1)) {
- if (!ast->u.child[1]) {
+ if (!(&ast->u.child)[1]) {
*result = op1;
} else {
- zend_ast_evaluate(result, ast->u.child[1] TSRMLS_CC);
+ zend_ast_evaluate(result, (&ast->u.child)[1] TSRMLS_CC);
zval_dtor(&op1);
}
} else {
- zend_ast_evaluate(result, ast->u.child[2] TSRMLS_CC);
+ zend_ast_evaluate(result, (&ast->u.child)[2] TSRMLS_CC);
zval_dtor(&op1);
}
break;
case ZEND_UNARY_PLUS:
ZVAL_LONG(&op1, 0);
- zend_ast_evaluate(&op2, ast->u.child[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[0] TSRMLS_CC);
add_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op2);
break;
case ZEND_UNARY_MINUS:
ZVAL_LONG(&op1, 0);
- zend_ast_evaluate(&op2, ast->u.child[0] TSRMLS_CC);
+ zend_ast_evaluate(&op2, (&ast->u.child)[0] TSRMLS_CC);
sub_function(result, &op1, &op2 TSRMLS_CC);
zval_dtor(&op2);
break;
@@ -284,29 +284,29 @@ ZEND_API void zend_ast_evaluate(zval *result, zend_ast *ast TSRMLS_DC)
ZEND_API zend_ast *zend_ast_copy(zend_ast *ast)
{
- if (ast == NULL) {
- return NULL;
+ if (ast == NULL) {
+ return NULL;
} else if (ast->kind == ZEND_CONST) {
- zend_ast *node = zend_ast_create_constant(ast->u.val);
- zval_copy_ctor(node->u.val);
- return node;
+ zend_ast *copy = zend_ast_create_constant(ast->u.val);
+ zval_copy_ctor(copy->u.val);
+ return copy;
} else {
switch (ast->children) {
case 1:
return zend_ast_create_unary(
ast->kind,
- zend_ast_copy(ast->u.child[0]));
+ zend_ast_copy((&ast->u.child)[0]));
case 2:
return zend_ast_create_binary(
ast->kind,
- zend_ast_copy(ast->u.child[0]),
- zend_ast_copy(ast->u.child[1]));
+ zend_ast_copy((&ast->u.child)[0]),
+ zend_ast_copy((&ast->u.child)[1]));
case 3:
return zend_ast_create_ternary(
ast->kind,
- zend_ast_copy(ast->u.child[0]),
- zend_ast_copy(ast->u.child[1]),
- zend_ast_copy(ast->u.child[2]));
+ zend_ast_copy((&ast->u.child)[0]),
+ zend_ast_copy((&ast->u.child)[1]),
+ zend_ast_copy((&ast->u.child)[2]));
}
}
return NULL;
@@ -320,8 +320,8 @@ ZEND_API void zend_ast_destroy(zend_ast *ast)
zval_dtor(ast->u.val);
} else {
for (i = 0; i < ast->children; i++) {
- if (ast->u.child[i]) {
- zend_ast_destroy(ast->u.child[i]);
+ if ((&ast->u.child)[i]) {
+ zend_ast_destroy((&ast->u.child)[i]);
}
}
}