• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

KarpelesLab / goro / 26390530579

25 May 2026 08:11AM UTC coverage: 12.47% (-0.02%) from 12.486%
26390530579

push

github

MagicalTux
vm: lower isset/empty($obj->prop) natively via OP_ISSET_OBJ_PROP / OP_EMPTY_OBJ_PROP

Currently isset($obj->prop) / empty($obj->prop) fall through to
OpClassConst (generic AST.Run delegation). Add native opcodes that
pop the receiver and read the prop name from the const pool, then
dispatch to EvalIssetObjProp / EvalEmptyObjProp.

EvalIssetObjProp / EvalEmptyObjProp mirror checkExistence /
checkEmpty's runObjectVar branches — non-object receiver returns
false/true (no warn), otherwise HasProp + (for empty) ObjectGet +
IsValueEmpty.

IsIssetSupportedArg extended to accept objectVarNode shapes with
static names (non-dollar-prefix, non-nullsafe) and a recursively
supported receiver. Nested forms ($outer->inner->prop) work via
emitIssetContainerRead which now recurses via OP_OBJECT_GET_SAFE
for intermediate object reads.

Bodies that use only the natively-supported isset/empty shapes
(simple-local, array-access on simple container, object prop on
supported receiver) stay slot-safe. Dollar-prefix dyn-name and
nullsafe forms still AST-delegate via OpClassConst.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

28 of 93 new or added lines in 4 files covered. (30.11%)

38 existing lines in 4 files now uncovered.

14768 of 118424 relevant lines covered (12.47%)

2581.53 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

47.17
/core/phpctx/global-array.go


Source Not Available

STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc