Skip to content

ext/dom: DOMElement::tagName slot init for JIT/AOT (#3326) - #17903

Merged
PurHur merged 1 commit into
masterfrom
agent/issue-dom-tagname-jit
Jul 11, 2026
Merged

PurHur merged 1 commit into
masterfrom
agent/issue-dom-tagname-jit

Conversation

@PurHur

@PurHur PurHur commented Jul 11, 2026

Copy link
Copy Markdown
Owner

Summary

  • Register tagName on DOMElement class metadata and initialize the slot in createElement() / createElementNS() alongside nodeName.
  • Fixes JIT/AOT property-slot reads for $el->tagName after createElement() (previously unset while VM used DomNodePropertySupport bridge).

php-src reference

  • ext/dom/node.c — dom_node_tag_name_read / element tagName property

PHP implementation

  • ext/dom/VmDom.php — class registration + createElement slot init

Verification

./script/docker-exec.sh -- bash -lc 'source script/php-env.sh
php bin/vm.php test/repro/maintainer_gap_dom_element_tag_name_jit.php
# p:p
php bin/jit.php test/repro/maintainer_gap_dom_element_tag_name_jit.php
# p:p
php bin/compile.php -o /tmp/tag test/repro/maintainer_gap_dom_element_tag_name_jit.php && /tmp/tag
# p:p exit=0
php bin/compile.php -o /tmp/dom test/repro/maintainer_gap_dom_create_element_aot.php && /tmp/dom
# p exit=0
php vendor/bin/phpunit test/unit/DomModuleTest.php --filter test_dom_element_set_attribute_on_create_element --no-configuration
# OK'

Closes #3326 (partial — tagName slot parity; load/loadHTML AOT bridge still tracked on issue).

Made with Cursor

Register tagName on DOMElement and populate it alongside nodeName so JIT/AOT
property-slot reads match VM DomNodePropertySupport parity.

Co-authored-by: Cursor <cursoragent@cursor.com>
@PurHur
PurHur merged commit ec1c396 into master Jul 11, 2026
@PurHur
PurHur deleted the agent/issue-dom-tagname-jit branch July 11, 2026 05:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Stdlib: ext/dom — DOMDocument/DOMElement XML tree API (ext/dom parity)

1 participant