Skip to content

Commit d24a04b

Browse files
authored
Use fast ZPP in very commonly used DOM functions (#14077)
Start using fast ZPP in very commonly used DOM functions, and also try to unify some branches by using RETURN_BOOL where appropriate.
1 parent cf7c592 commit d24a04b

File tree

2 files changed

+20
-45
lines changed

2 files changed

+20
-45
lines changed

ext/dom/document.c

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -525,19 +525,17 @@ PHP_METHOD(DOMDocument, createDocumentFragment)
525525
*/
526526
PHP_METHOD(DOMDocument, createTextNode)
527527
{
528-
zval *id;
529528
xmlNode *node;
530529
xmlDocPtr docp;
531530
size_t value_len;
532531
dom_object *intern;
533532
char *value;
534533

535-
id = ZEND_THIS;
536-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &value, &value_len) == FAILURE) {
537-
RETURN_THROWS();
538-
}
534+
ZEND_PARSE_PARAMETERS_START(1, 1)
535+
Z_PARAM_STRING(value, value_len)
536+
ZEND_PARSE_PARAMETERS_END();
539537

540-
DOM_GET_OBJ(docp, id, xmlDocPtr, intern);
538+
DOM_GET_OBJ(docp, ZEND_THIS, xmlDocPtr, intern);
541539

542540
node = xmlNewDocText(docp, BAD_CAST value);
543541
if (!node) {
@@ -899,11 +897,12 @@ PHP_METHOD(DOM_Document, createElementNS)
899897
{
900898
xmlDocPtr docp;
901899
dom_object *intern;
902-
zend_string *name = NULL, *uri;
900+
zend_string *name, *uri;
903901

904-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "S!S", &uri, &name) == FAILURE) {
905-
RETURN_THROWS();
906-
}
902+
ZEND_PARSE_PARAMETERS_START(2, 2)
903+
Z_PARAM_STR_OR_NULL(uri)
904+
Z_PARAM_STR(name)
905+
ZEND_PARSE_PARAMETERS_END();
907906

908907
DOM_GET_OBJ(docp, ZEND_THIS, xmlDocPtr, intern);
909908

ext/dom/node.c

Lines changed: 11 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1218,16 +1218,15 @@ PHP_METHOD(DOM_Node, replaceChild)
12181218
*/
12191219
static void dom_node_remove_child(INTERNAL_FUNCTION_PARAMETERS, zend_class_entry *node_ce)
12201220
{
1221-
zval *id, *node;
1221+
zval *node;
12221222
xmlNodePtr child, nodep;
12231223
dom_object *intern, *childobj;
12241224

1225-
id = ZEND_THIS;
1226-
if (zend_parse_parameters(ZEND_NUM_ARGS(), "O", &node, node_ce) == FAILURE) {
1227-
RETURN_THROWS();
1228-
}
1225+
ZEND_PARSE_PARAMETERS_START(1, 1)
1226+
Z_PARAM_OBJECT_OF_CLASS(node, node_ce)
1227+
ZEND_PARSE_PARAMETERS_END();
12291228

1230-
DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
1229+
DOM_GET_OBJ(nodep, ZEND_THIS, xmlNodePtr, intern);
12311230

12321231
if (!dom_node_children_valid(nodep)) {
12331232
RETURN_FALSE;
@@ -1420,26 +1419,14 @@ PHP_METHOD(DOM_Node, appendChild)
14201419
*/
14211420
PHP_METHOD(DOMNode, hasChildNodes)
14221421
{
1423-
zval *id;
14241422
xmlNode *nodep;
14251423
dom_object *intern;
14261424

1427-
id = ZEND_THIS;
1428-
if (zend_parse_parameters_none() == FAILURE) {
1429-
RETURN_THROWS();
1430-
}
1425+
ZEND_PARSE_PARAMETERS_NONE();
14311426

1432-
DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
1433-
1434-
if (!dom_node_children_valid(nodep)) {
1435-
RETURN_FALSE;
1436-
}
1427+
DOM_GET_OBJ(nodep, ZEND_THIS, xmlNodePtr, intern);
14371428

1438-
if (nodep->children) {
1439-
RETURN_TRUE;
1440-
} else {
1441-
RETURN_FALSE;
1442-
}
1429+
RETURN_BOOL(dom_node_children_valid(nodep) && nodep->children != NULL);
14431430
}
14441431
/* }}} end dom_node_has_child_nodes */
14451432

@@ -1552,25 +1539,14 @@ Since: DOM Level 2
15521539
*/
15531540
PHP_METHOD(DOMNode, hasAttributes)
15541541
{
1555-
zval *id;
15561542
xmlNode *nodep;
15571543
dom_object *intern;
15581544

1559-
id = ZEND_THIS;
1560-
if (zend_parse_parameters_none() == FAILURE) {
1561-
RETURN_THROWS();
1562-
}
1563-
1564-
DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
1545+
ZEND_PARSE_PARAMETERS_NONE();
15651546

1566-
if (nodep->type != XML_ELEMENT_NODE)
1567-
RETURN_FALSE;
1547+
DOM_GET_OBJ(nodep, ZEND_THIS, xmlNodePtr, intern);
15681548

1569-
if (nodep->properties) {
1570-
RETURN_TRUE;
1571-
} else {
1572-
RETURN_FALSE;
1573-
}
1549+
RETURN_BOOL(nodep->type == XML_ELEMENT_NODE && nodep->properties != NULL);
15741550
}
15751551
/* }}} end dom_node_has_attributes */
15761552

0 commit comments

Comments
 (0)