Skip to content

Avoid alias warning if target has same reqs#6842

Merged
headius merged 1 commit intojruby:masterfrom
headius:smarter_alias_warning
Oct 8, 2021
Merged

Avoid alias warning if target has same reqs#6842
headius merged 1 commit intojruby:masterfrom
headius:smarter_alias_warning

Conversation

@headius
Copy link
Member

@headius headius commented Sep 16, 2021

We warn when aliasing a method that requires the caller's frame
due to the fact that we use those names to force methods to push
a frame when they would not otherwise need it. However, if the
target name represents one that has the same or a superset of
frame requirements, we can safely perform the alias, knowing that
the new name is already flagged globally.

This patch checks whether the target name has the same or a
superset of frame requirements and skips the warning.

The defineAliases(..., List) form is deprecated as it does not
appear to be in use by any versioned or generated code.

The searchForAliasMethod method no longer performs the warning
check, since the deprecated method would need to perform it for
each entry and a new method checkAliasFrameAccesses does the check
and warn.

This relates to ruby/ostruct#30, but does not directly work around
any of the issues there. It would comprise part of a workaround if
we also pre-marked the instance_eval! and instance_exec! methods,
but that is not currently planned (and we would rather not).

We warn when aliasing a method that requires the caller's frame
due to the fact that we use those names to force methods to push
a frame when they would not otherwise need it. However, if the
target name represents one that has the same or a superset of
frame requirements, we can safely perform the alias, knowing that
the new name is already flagged globally.

This patch checks whether the target name has the same or a
superset of frame requirements and skips the warning.

The defineAliases(..., List) form is deprecated as it does not
appear to be in use by any versioned or generated code.

The searchForAliasMethod method no longer performs the warning
check, since the deprecated method would need to perform it for
each entry and a new method checkAliasFrameAccesses does the check
and warn.

This relates to ruby/ostruct#30, but does not directly work around
any of the issues there. It would comprise part of a workaround if
we also pre-marked the instance_eval! and instance_exec! methods,
but that is not currently planned (and we would rather not).
@headius headius added this to the JRuby 9.3.1.0 milestone Sep 16, 2021
@headius headius merged commit ed80b99 into jruby:master Oct 8, 2021
@headius headius deleted the smarter_alias_warning branch October 8, 2021 15:01
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.

1 participant