Skip to content

Fix GH-16996: 8.4 tracing JIT phpseclib failures #17030

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Dec 3, 2024
Merged

Conversation

dstogov
Copy link
Member

@dstogov dstogov commented Dec 3, 2024

This prevents conflicts caused by spilling to bound PHP stack slots by creating copies.

This prevents conflicts caused by spilling to bound PHP stack slots by
creating copies.
@dstogov dstogov merged commit 89b82ef into php:PHP-8.4 Dec 3, 2024
10 checks passed
dstogov added a commit that referenced this pull request Dec 3, 2024
* PHP-8.4:
  Fix GH-16996: 8.4 tracing JIT phpseclib failures (#17030)
@nielsdos
Copy link
Member

nielsdos commented Dec 3, 2024

I see, thanks for the fix. Sorry I didn't get to this earlier, I was at work.

I see we may be creating a potentially unused copy of a variable, and storing its ir reference in the register allocation table, if we don't end up binding to a slot after all. I suppose that this doesn't negatively impact codegen.

@dstogov
Copy link
Member Author

dstogov commented Dec 4, 2024

I suppose that this doesn't negatively impact codegen.

This may make regression in some places and improvements in the others.
Actually, register allocator eliminates most of these copies using the same register for result and source.
I compared the code generated for bebch.php, Symfony, PHP-Patser and Wordpress and didn't see significant difference.

@nielsdos
Copy link
Member

nielsdos commented Dec 4, 2024

Okay thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants