Skip to content

Admit binary expression named property reads#3021

Merged
rogeralsing merged 1 commit into
mainfrom
codex/unified-bytecode-loop-61-binary-property-read
Jun 1, 2026
Merged

Admit binary expression named property reads#3021
rogeralsing merged 1 commit into
mainfrom
codex/unified-bytecode-loop-61-binary-property-read

Conversation

@rogeralsing

Copy link
Copy Markdown
Contributor

Summary

  • admit simple binary-expression bases followed by named property reads in production unified bytecode eligibility
  • convert the stale (a + b).value decline row to an admissible contract row
  • add a runtime route-hit proof for (left + right).length

Verification

  • rtk dotnet test tests/Asynkron.JsEngine.Tests -c Release --filter 'FullyQualifiedName~UnifiedBytecodeProductionEligibilityTests.Evaluate_PropertyReadAdjacentFamilies_DeclineWithExplicitCodes|FullyQualifiedName~UnifiedBytecodeProductionInvocationTests.BinaryExpressionNamedPropertyRead_UsesUnifiedBytecodeProductionFastPath|FullyQualifiedName~UnifiedBytecodeProductionInvocationTests.ObjectLiteralSpreadNamedPropertyRead_UsesUnifiedBytecodeProductionFastPath|FullyQualifiedName~UnifiedBytecodeProductionInvocationTests.ComputedMemberCallWithExpressionKey_UsesUnifiedBytecodeProductionFastPathAndPreservesThis'\n- rtk dotnet test tests/Asynkron.JsEngine.Tests -c Release --filter 'FullyQualifiedName~UnifiedBytecodeProductionEligibilityTests|FullyQualifiedName~UnifiedBytecodeProductionInvocationTests|FullyQualifiedName~UnifiedBytecodeProductionSpreadCallTests|FullyQualifiedName~UnifiedBytecodeProductionConstructCallTests|FullyQualifiedName~ExpressionProgramLoweringTests|FullyQualifiedName~ExpressionProgramCoverageMapTests|FullyQualifiedName~AstFreeExecutionAssertionTests'\n- rtk dotnet build src/Asynkron.JsEngine/Asynkron.JsEngine.csproj -c Release\n- rtk rg "EvaluateExpression\\(|ProfileEvaluateExpression\\(" src/Asynkron.JsEngine/Ast/TypedAstEvaluator.ExecutionPlanRunner*\n- rtk git diff --check

Copilot AI review requested due to automatic review settings June 1, 2026 22:22
@rogeralsing rogeralsing merged commit 207b563 into main Jun 1, 2026
@rogeralsing rogeralsing deleted the codex/unified-bytecode-loop-61-binary-property-read branch June 1, 2026 22:23

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR expands unified bytecode production eligibility to include a “simple binary expression base + named property read(s)” shape (e.g. (left + right).prop), and updates tests to reflect and prove the new fast-path routing behavior.

Changes:

  • Extend production eligibility to treat simple binary-expression results followed by non-optional named property reads as within the first property-read boundary.
  • Update the existing eligibility contract test for (a + b).value from a decline code to None.
  • Add an invocation test that asserts (left + right).length routes through the unified-bytecode-production fast path (via log evidence).

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
tests/Asynkron.JsEngine.Tests/UnifiedBytecodeProductionInvocationTests.cs Adds a runtime “route-hit” test ensuring (left + right).length uses the production fast path.
tests/Asynkron.JsEngine.Tests/UnifiedBytecodeProductionEligibilityTests.cs Updates the expected eligibility outcome for a binary-expression-named-property-read case to be admissible.
src/Asynkron.JsEngine/Execution/UnifiedBytecode/UnifiedBytecodeProductionEligibility.cs Adds a new eligibility shape check allowing simple binary bases followed by named property read chains.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

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