Skip to content

Admit dynamic load and delete operands - #3028

Merged
rogeralsing merged 1 commit into
mainfrom
codex/unified-bytecode-loop-68-dynamic-load-delete
Jun 1, 2026
Merged

Admit dynamic load and delete operands#3028
rogeralsing merged 1 commit into
mainfrom
codex/unified-bytecode-loop-68-dynamic-load-delete

Conversation

@rogeralsing

Copy link
Copy Markdown
Contributor

Summary

  • admit ordinary dynamic identifier loads through the production unified-bytecode route
  • allow ordinary dynamic identifier keys for first-boundary computed property deletes
  • add direct route-hit tests for readExternal() and delete box.child[externalKey]
  • update stale dynamic/delete contract proof pointers

Verification

  • Focused proof: 6 tests passed
  • Broad unified-bytecode/lowering pack: 903 tests passed
  • Build: 0 errors, 0 warnings
  • AST seam scan: no EvaluateExpression/ProfileEvaluateExpression matches
  • git diff --check clean

Copilot AI review requested due to automatic review settings June 1, 2026 23:07
@rogeralsing
rogeralsing merged commit 4a9d0d8 into main Jun 1, 2026
@rogeralsing
rogeralsing deleted the codex/unified-bytecode-loop-68-dynamic-load-delete branch June 1, 2026 23:07

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 widens the production unified-bytecode routing to admit additional “ordinary dynamic” environment operations, specifically dynamic identifier loads and first-boundary computed-property deletes with dynamic identifier keys, and adds regression coverage plus contract documentation updates.

Changes:

  • Expanded unified-bytecode eligibility checks to allow first-boundary computed delete obj[key] where key is an ordinary dynamic identifier (when enabled by activation descriptor).
  • Updated eligibility and invocation tests to validate the new fast-path/eligibility behavior for dynamic identifier loads and dynamic-key computed deletes.
  • Updated the unified-bytecode expansion contract to point to the new/renamed proof tests for dynamic lookup and delete lanes.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
tests/Asynkron.JsEngine.Tests/UnifiedBytecodeProductionInvocationTests.cs Adds direct fast-path route-hit tests for dynamic identifier reads and dynamic-key computed deletes.
tests/Asynkron.JsEngine.Tests/UnifiedBytecodeProductionEligibilityTests.cs Updates eligibility assertions to accept ordinary dynamic identifier operations and validates resulting opcodes.
src/Asynkron.JsEngine/Execution/UnifiedBytecode/UnifiedBytecodeProductionEligibility.cs Threads an “allow ordinary dynamic identifiers” flag into computed-delete candidate checks and computed-key validation.
docs/unified-bytecode-expansion-contract.md Refreshes proof pointers for the dynamic-lookup and delete lanes reflecting the updated contract.

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

Comment on lines +2979 to +2981
Assert.Equal(UnifiedBytecodeProductionDeclineCode.None, (UnifiedBytecodeProductionDeclineCode)expectedCode);
Assert.True(result.IsEligible, result.Reason);
Assert.Equal(UnifiedBytecodeProductionDeclineCode.None, result.Code);
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