Skip to content

Avoid generic verify scan when no turbofish args#2

Merged
azjezz merged 1 commit into
carthage-software:rfc/bound-erased-generic-types-historyfrom
prateekbhujel:prateekbhujel/generics-skip-empty-optimizer-scan-history
May 12, 2026
Merged

Avoid generic verify scan when no turbofish args#2
azjezz merged 1 commit into
carthage-software:rfc/bound-erased-generic-types-historyfrom
prateekbhujel:prateekbhujel/generics-skip-empty-optimizer-scan-history

Conversation

@prateekbhujel
Copy link
Copy Markdown

@prateekbhujel prateekbhujel commented May 12, 2026

zend_try_inline_call() only needs to scan back for VERIFY_GENERIC_ARGUMENTS when the current op array actually has turbofish args recorded.

For non-generic call sites, op_array->generic_types or op_array->generic_types->turbofish_args is empty, so the scan cannot find anything useful.

Tests run:

sapi/cli/php run-tests.php -q \
  Zend/tests/generics/syntax/turbofish_function_call.phpt \
  Zend/tests/generics/syntax/turbofish_method_call.phpt \
  Zend/tests/generics/syntax/turbofish_new.phpt \
  Zend/tests/generics/turbofish/arity/function_too_many.phpt \
  Zend/tests/generics/turbofish/arity/non_generic_callee.phpt \
  Zend/tests/generics/turbofish/bounds/function_call_violates.phpt \
  Zend/tests/generics/erasure/turbofish_no_runtime_effect.phpt \
  Zend/tests/generics/turbofish/bounds/attribute_under_opcache.phpt \
  ext/opcache/tests/optimize_func_calls.phpt \
  ext/opcache/tests/wrong_inlining_001.phpt \
  ext/opcache/tests/bug77691.phpt
sapi/cli/php run-tests.php -q Zend/tests/generics ext/reflection/tests/generics

Result: 407/407 passed for the full generics + reflection generics suite.

Comment thread Zend/Optimizer/optimize_func_calls.c
@azjezz azjezz merged commit 0c956d4 into carthage-software:rfc/bound-erased-generic-types-history May 12, 2026
1 check passed
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.

2 participants