[code-reflection] RFR: Aggregated work on Verifier and BytecodeLift deconstruction

Adam Sotona asotona at openjdk.org
Wed Nov 6 12:25:04 UTC 2024


This PR is aggregated continuation of work on `Verifier` #247 and new simplified and deconstructed implementation of `BytecodeLift`.

Work on `Verifier` revealed bugs in `BytecodeLift`.
Fixing of the bugs adds more complexity to already very complex `BytecodeLift`.
The goal of this PR is to deconstruct `BytecodeLift` to its bare bones  and re-introduce a kind of bytecode dialect:
- `UnresolvedType.Ref` and `UnresolvedType.Int` represent references and int with all its possible sub-types
- `SlotOp` is an intermediate model of local variables
- `SlotToVarTransformer` transforms `SlotOp` to `CoreOp.VarOp`
- `UnresolvedTypesTransformer` transforms `UnresolvedType.Ref` and `UnresolvedType.Int` to `JavaType`.

-------------

Commit messages:
 - Introduction of TypeWithComponent
 - TestSmallCorpus reached 3rd round 100% stability, no exceptions, no verification errors
 - BytecodeLift fix of followup with unresolved array component types of unknown TypeKind
 - fixed BytecodeLift exception handlers order of nested blocks
 - adjustments to suport unitialized variables
 - TestSmallCorpus update
 - Merge remote-tracking branch 'babylon/code-reflection' into split-lifter
 - BytecodeLift fixed exception region transits
 - BytecodeLift better dealing with exception regions transitions - work in progress
 - BytecodeLift::targetBlockForExceptionHandler work in progress
 - ... and 61 more: https://git.openjdk.org/babylon/compare/fa4dd443...6591d7d8

Changes: https://git.openjdk.org/babylon/pull/258/files
  Webrev: https://webrevs.openjdk.org/?repo=babylon&pr=258&range=00
  Stats: 3001 lines in 16 files changed: 1598 ins; 1183 del; 220 mod
  Patch: https://git.openjdk.org/babylon/pull/258.diff
  Fetch: git fetch https://git.openjdk.org/babylon.git pull/258/head:pull/258

PR: https://git.openjdk.org/babylon/pull/258


More information about the babylon-dev mailing list