Skip to content

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