]> granicus.if.org Git - php/commitdiff
Use embedded json parser method structure
authorJakub Zelenka <bukka@php.net>
Mon, 2 May 2016 12:02:40 +0000 (13:02 +0100)
committerJakub Zelenka <bukka@php.net>
Mon, 2 May 2016 12:02:40 +0000 (13:02 +0100)
ext/json/json_parser.tab.c
ext/json/json_parser.y
ext/json/php_json_parser.h

index eb8c6be5ff641245a96ced2878ca3c4771d89785..7a799f9739e3f5bb4e515fb5fbcae40debbe992b 100644 (file)
@@ -1464,7 +1464,7 @@ yyreduce:
 
     {
                                PHP_JSON_DEPTH_INC;
-                               if (parser->methods->object_start && FAILURE == parser->methods->object_start(parser)) {
+                               if (parser->methods.object_start && FAILURE == parser->methods.object_start(parser)) {
                                        YYERROR;
                                }
                        }
@@ -1476,7 +1476,7 @@ yyreduce:
     {
                                ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-1].value));
                                PHP_JSON_DEPTH_DEC;
-                               if (parser->methods->object_end && FAILURE == parser->methods->object_end(parser, &(yyval.value))) {
+                               if (parser->methods.object_end && FAILURE == parser->methods.object_end(parser, &(yyval.value))) {
                                        YYERROR;
                                }
                        }
@@ -1495,7 +1495,7 @@ yyreduce:
   case 8:
 
     {
-                               parser->methods->object_create(parser, &(yyval.value));
+                               parser->methods.object_create(parser, &(yyval.value));
                        }
 
     break;
@@ -1503,8 +1503,8 @@ yyreduce:
   case 10:
 
     {
-                               parser->methods->object_create(parser, &(yyval.value));
-                               if (parser->methods->object_update(parser, &(yyval.value), (yyvsp[0].pair).key, &(yyvsp[0].pair).val) == FAILURE) {
+                               parser->methods.object_create(parser, &(yyval.value));
+                               if (parser->methods.object_update(parser, &(yyval.value), (yyvsp[0].pair).key, &(yyvsp[0].pair).val) == FAILURE) {
                                        YYERROR;
                                }
                        }
@@ -1514,7 +1514,7 @@ yyreduce:
   case 11:
 
     {
-                               if (parser->methods->object_update(parser, &(yyvsp[-2].value), (yyvsp[0].pair).key, &(yyvsp[0].pair).val) == FAILURE) {
+                               if (parser->methods.object_update(parser, &(yyvsp[-2].value), (yyvsp[0].pair).key, &(yyvsp[0].pair).val) == FAILURE) {
                                        YYERROR;
                                }
                                ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-2].value));
@@ -1551,7 +1551,7 @@ yyreduce:
 
     {
                                PHP_JSON_DEPTH_INC;
-                               if (parser->methods->array_start && FAILURE == parser->methods->array_start(parser)) {
+                               if (parser->methods.array_start && FAILURE == parser->methods.array_start(parser)) {
                                        YYERROR;
                                }
                        }
@@ -1563,7 +1563,7 @@ yyreduce:
     {
                                ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-1].value));
                                PHP_JSON_DEPTH_DEC;
-                               if (parser->methods->array_end && FAILURE == parser->methods->array_end(parser, &(yyval.value))) {
+                               if (parser->methods.array_end && FAILURE == parser->methods.array_end(parser, &(yyval.value))) {
                                        YYERROR;
                                }
                        }
@@ -1582,7 +1582,7 @@ yyreduce:
   case 19:
 
     {
-                               parser->methods->array_create(parser, &(yyval.value));
+                               parser->methods.array_create(parser, &(yyval.value));
                        }
 
     break;
@@ -1590,8 +1590,8 @@ yyreduce:
   case 21:
 
     {
-                               parser->methods->array_create(parser, &(yyval.value));
-                               parser->methods->array_append(parser, &(yyval.value), &(yyvsp[0].value));
+                               parser->methods.array_create(parser, &(yyval.value));
+                               parser->methods.array_append(parser, &(yyval.value), &(yyvsp[0].value));
                        }
 
     break;
@@ -1599,7 +1599,7 @@ yyreduce:
   case 22:
 
     {
-                               parser->methods->array_append(parser, &(yyvsp[-2].value), &(yyvsp[0].value));
+                               parser->methods.array_append(parser, &(yyvsp[-2].value), &(yyvsp[0].value));
                                ZVAL_COPY_VALUE(&(yyval.value), &(yyvsp[-2].value));
                        }
 
@@ -1947,7 +1947,7 @@ void php_json_parser_init_ex(php_json_parser *parser,
        parser->depth = 1;
        parser->max_depth = max_depth;
        parser->return_value = return_value;
-       parser->methods = parser_methods;
+       memcpy(&parser->methods, parser_methods, sizeof(php_json_parser_methods));
 }
 
 void php_json_parser_init(php_json_parser *parser,
index c7c4f74a160f874b79e2463c2c369c06b0b5e170..a2d96efd8e53641b11aa678d19c8f71604db7599 100644 (file)
@@ -102,7 +102,7 @@ object:
                '{'
                        {
                                PHP_JSON_DEPTH_INC;
-                               if (parser->methods->object_start && FAILURE == parser->methods->object_start(parser)) {
+                               if (parser->methods.object_start && FAILURE == parser->methods.object_start(parser)) {
                                        YYERROR;
                                }
                        }
@@ -110,7 +110,7 @@ object:
                        {
                                ZVAL_COPY_VALUE(&$$, &$3);
                                PHP_JSON_DEPTH_DEC;
-                               if (parser->methods->object_end && FAILURE == parser->methods->object_end(parser, &$$)) {
+                               if (parser->methods.object_end && FAILURE == parser->methods.object_end(parser, &$$)) {
                                        YYERROR;
                                }
                        }
@@ -128,7 +128,7 @@ object_end:
 members:
                /* empty */
                        {
-                               parser->methods->object_create(parser, &$$);
+                               parser->methods.object_create(parser, &$$);
                        }
        |       member
 ;
@@ -136,14 +136,14 @@ members:
 member:
                pair
                        {
-                               parser->methods->object_create(parser, &$$);
-                               if (parser->methods->object_update(parser, &$$, $1.key, &$1.val) == FAILURE) {
+                               parser->methods.object_create(parser, &$$);
+                               if (parser->methods.object_update(parser, &$$, $1.key, &$1.val) == FAILURE) {
                                        YYERROR;
                                }
                        }
        |       member ',' pair
                        {
-                               if (parser->methods->object_update(parser, &$1, $3.key, &$3.val) == FAILURE) {
+                               if (parser->methods.object_update(parser, &$1, $3.key, &$3.val) == FAILURE) {
                                        YYERROR;
                                }
                                ZVAL_COPY_VALUE(&$$, &$1);
@@ -170,7 +170,7 @@ array:
                '['
                        {
                                PHP_JSON_DEPTH_INC;
-                               if (parser->methods->array_start && FAILURE == parser->methods->array_start(parser)) {
+                               if (parser->methods.array_start && FAILURE == parser->methods.array_start(parser)) {
                                        YYERROR;
                                }
                        }
@@ -178,7 +178,7 @@ array:
                        {
                                ZVAL_COPY_VALUE(&$$, &$3);
                                PHP_JSON_DEPTH_DEC;
-                               if (parser->methods->array_end && FAILURE == parser->methods->array_end(parser, &$$)) {
+                               if (parser->methods.array_end && FAILURE == parser->methods.array_end(parser, &$$)) {
                                        YYERROR;
                                }
                        }
@@ -196,7 +196,7 @@ array_end:
 elements:
                /* empty */
                        {
-                               parser->methods->array_create(parser, &$$);
+                               parser->methods.array_create(parser, &$$);
                        }
        |       element
 ;
@@ -204,12 +204,12 @@ elements:
 element:
                value
                        {
-                               parser->methods->array_create(parser, &$$);
-                               parser->methods->array_append(parser, &$$, &$1);
+                               parser->methods.array_create(parser, &$$);
+                               parser->methods.array_append(parser, &$$, &$1);
                        }
        |       element ',' value
                        {
-                               parser->methods->array_append(parser, &$1, &$3);
+                               parser->methods.array_append(parser, &$1, &$3);
                                ZVAL_COPY_VALUE(&$$, &$1);
                        }
        |       element errlex
@@ -339,7 +339,7 @@ void php_json_parser_init_ex(php_json_parser *parser,
        parser->depth = 1;
        parser->max_depth = max_depth;
        parser->return_value = return_value;
-       parser->methods = parser_methods;
+       memcpy(&parser->methods, parser_methods, sizeof(php_json_parser_methods));
 }
 
 void php_json_parser_init(php_json_parser *parser,
index edc6c4ee41bc6804f14ce2a3ee0e326385d6ace2..997213f42e44fb3a4b67389e8e41117776eb809a 100644 (file)
@@ -57,7 +57,7 @@ struct _php_json_parser {
        zval *return_value;
        unsigned int depth;
        int max_depth;
-       const php_json_parser_methods *methods;
+       php_json_parser_methods methods;
 };
 
 PHP_JSON_API void php_json_parser_init_ex(