Skip to content

Conversation

@diegorusso
Copy link
Contributor

With this change we put the executor in one of the register so that _MAKE_WARM and _CHECK_VALIDITY don't need to patch the executor and they become 1-2 machine instructions (depending on the platform)

On AArch64 there is a small uplift of 1% and in x86_64 the net effect is about 0% (even though we are using a caller saved register)

@Fidget-Spinner
Copy link
Member

Hmmm, I would think that maybe instead of this, we allocate one more register to TOS caching instead for AArch64? I think that would probably provide bigger gains?

@diegorusso
Copy link
Contributor Author

Hmmm, I would think that maybe instead of this, we allocate one more register to TOS caching instead for AArch64? I think that would probably provide bigger gains?

The executor should be hotter than the fourth TOS item and it doesn't ever need to be spilled. This change also allow further optimisations in case we need to put things accessible via the executor.

@Fidget-Spinner
Copy link
Member

Ok let me just run the benchmarks on the Meta runners for x86-64. Will approve after this.

Copy link
Member

@Fidget-Spinner Fidget-Spinner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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