Skip to content

Latest commit

 

History

History
128 lines (107 loc) · 18.3 KB

File metadata and controls

128 lines (107 loc) · 18.3 KB

Documentation map / 文档索引

This tree is a mix of current status, design notes, and historical draft measurements. Prefer the current-status page when something disagrees with an older brief.

当旧简报与现状页冲突时,以现状页为准。

Start here / 从这里读

Document Language What it is
architecture/overview.md EN + 中文 Visual architecture walkthrough (pipeline, codegen modes, IR internals, repo layout) with the diagrams from assets/.
assets/ EN + 中文 Hand-authored SVG diagrams used by the READMEs and the overview.
architecture/current-goal.md EN + 中文 Replacement landed: IR is the default generator; snippet path deleted.
architecture/project-status.md EN + 中文 What is on master after #118–#456. Claims that are not allowed.
architecture/integration-master-tips.md EN How the preferred draft tips were folded onto master.
architecture/human-decision-matrix.md EN Product decisions that still need a human (D1–D24).
architecture/production-roadmap.md EN Longer-term production plan. The “evidence from master @ e7ca4c8” section is historical; see the preface.

Compiler / 编译器

Document Notes
architecture/ir-compiler.md Typed CFG IR (implemented on master as --codegen=ir; well-formed jsr/ret inlined before CFG, #241)
architecture/ir-examples.md Teaching examples, not a dump of current emitter output
architecture/ir-migration-plan.md Historical migration rationale; IR path now exists
architecture/ir-flex-ctor-status.md Constructor split through hybrid suffixes, relocated and method-end handlers, receiver-alias forwarding, identical-copy extras/catch, sixteen-level int-family/long/float/double chain inputs, prefix extra-local int/float/double/long leaves, extra-local long shift values plus LDIV/LREM operands, extra-local long LNEG, retained-prefix AALOAD chain inputs, extra-local int long-shift counts, extra-local float FNEG, extra-local double DNEG, extra-local int INEG, declared-array IALOAD int leaves, extra-local array AALOAD sources, extra-local int[] IALOAD sources, declared-array BALOAD/CALOAD/SALOAD leaves, AALOAD declared or extra-local ILOAD indexes, int-family array-load ILOAD indexes, extra-local BALOAD/CALOAD/SALOAD sources, declared LALOAD/FALOAD/DALOAD leaves, extra-local LALOAD/FALOAD/DALOAD sources, LALOAD/FALOAD/DALOAD ILOAD indexes, extra-array plus extra-index composition, the fail-closed prefix→suffix crossing audit, wide extra-array plus extra-index, the fail-closed unassigned-extra audit, the fail-closed spanning-catch audit, declared-argument GETFIELD, the fail-closed nine-path audit, isolated no-arg NEW, the fail-closed skip-super audit, the fail-closed seventeen-level audit, extra-local GETFIELD holders, the fail-closed unproven-NEW audit, primitive extra-local GETFIELD holders, the fail-closed unproven-GETFIELD audit, isolated one-arg NEW, the fail-closed post-call audit, isolated two-arg NEW, isolated three-arg NEW, extra-local int-copy NEW initializer, isolated four-arg NEW, the fail-closed unproven extra-array AALOAD audit, isolated five-arg NEW, the fail-closed constructor jsr/ret exception-table audit, the fail-closed unproven wide NEW initializer audit, isolated six-arg NEW, extra-local two-arg NEW, extra-local three-arg NEW, isolated long NEW, extra-local four-arg NEW, extra-local five-arg NEW, isolated float NEW, extra-local six-arg NEW, isolated double NEW, extra-local long NEW, extra-local float NEW, extra-local double NEW, extra-local float as second NEW argument, extra-local double as second NEW argument, extra-local float as both NEW arguments, and extra-local double as both NEW arguments, extra-local int as the second two-arg NEW argument, extra-local int as both two-arg NEW arguments, extra-local int as the second three-arg NEW argument, extra-local int as the third three-arg NEW argument, extra-local int as all three Color NEW arguments, extra-local int as the first and second Color NEW arguments, extra-local int as the first and third Color NEW arguments, extra-local int as the second and third Color NEW arguments, extra-local int as the second four-arg Insets NEW argument, extra-local int as the third four-arg Insets NEW argument, extra-local int as the fourth four-arg Insets NEW argument, extra-local int as all four Insets NEW arguments, extra-local int as the first and second Insets NEW arguments, extra-local int as the first and third Insets NEW arguments, extra-local int as the first and fourth Insets NEW arguments, extra-local int as the second and third Insets NEW arguments, extra-local int as the second and fourth Insets NEW arguments, extra-local int as the third and fourth Insets NEW arguments, extra-local int as the first, second, and third Insets NEW arguments, extra-local int as the first, second, and fourth Insets NEW arguments, extra-local int as the first, third, and fourth Insets NEW arguments, and extra-local int as the second, third, and fourth Insets NEW arguments, and extra-local int as the second five-arg GregorianCalendar NEW argument, and extra-local int as the third five-arg GregorianCalendar NEW argument, and extra-local int as the fourth five-arg GregorianCalendar NEW argument, and extra-local int as the fifth five-arg GregorianCalendar NEW argument, and extra-local int as all five five-arg GregorianCalendar NEW arguments, and extra-local int as the first and second five-arg GregorianCalendar NEW arguments, and extra-local int as the first and third five-arg GregorianCalendar NEW arguments, and extra-local int as the first and fourth five-arg GregorianCalendar NEW arguments, and extra-local int as the first and fifth five-arg GregorianCalendar NEW arguments, and extra-local int as the second and third five-arg GregorianCalendar NEW arguments, and extra-local int as the second and fourth five-arg GregorianCalendar NEW arguments, and extra-local int as the second and fifth five-arg GregorianCalendar NEW arguments, and extra-local int as the third and fourth five-arg GregorianCalendar NEW arguments, and extra-local int as the third and fifth five-arg GregorianCalendar NEW arguments, and extra-local int as the fourth and fifth five-arg GregorianCalendar NEW arguments, and extra-local int as the first, second, and third five-arg GregorianCalendar NEW arguments, and extra-local int as the first, second, and fourth five-arg GregorianCalendar NEW arguments, and extra-local int as the first, second, and fifth five-arg GregorianCalendar NEW arguments, and extra-local int as the first, third, and fourth five-arg GregorianCalendar NEW arguments, and extra-local int as the first, third, and fifth five-arg GregorianCalendar NEW arguments, and extra-local int as the first, fourth, and fifth five-arg GregorianCalendar NEW arguments, and extra-local int as the second, third, and fourth five-arg GregorianCalendar NEW arguments, and extra-local int as the second, third, and fifth five-arg GregorianCalendar NEW arguments, and extra-local int as the second, fourth, and fifth five-arg GregorianCalendar NEW arguments, and extra-local int as the third, fourth, and fifth five-arg GregorianCalendar NEW arguments, and extra-local int as the first, second, third, and fourth five-arg GregorianCalendar NEW arguments, and extra-local int as the first, second, third, and fifth five-arg GregorianCalendar NEW arguments, and extra-local int as the first, second, fourth, and fifth five-arg GregorianCalendar NEW arguments, and extra-local int as the first, third, fourth, and fifth five-arg GregorianCalendar NEW arguments, and extra-local int as the second, third, fourth, and fifth five-arg GregorianCalendar NEW arguments, and extra-local int as the second six-arg GregorianCalendar NEW argument, and extra-local int as the third six-arg GregorianCalendar NEW argument, and extra-local int as the fourth six-arg GregorianCalendar NEW argument, and extra-local int as the fifth six-arg GregorianCalendar NEW argument, and extra-local int as the sixth six-arg GregorianCalendar NEW argument, and extra-local int as all six six-arg GregorianCalendar NEW arguments, and extra-local int as the first and second six-arg GregorianCalendar NEW arguments, and extra-local int as the first and third six-arg GregorianCalendar NEW arguments, and extra-local int as the first and fourth six-arg GregorianCalendar NEW arguments, and extra-local int as the first and fifth six-arg GregorianCalendar NEW arguments, and extra-local int as the first and sixth six-arg GregorianCalendar NEW arguments, and extra-local int as the second and third six-arg GregorianCalendar NEW arguments, and extra-local int as the second and fourth six-arg GregorianCalendar NEW arguments, and extra-local int as the second and fifth six-arg GregorianCalendar NEW arguments, and extra-local int as the second and sixth six-arg GregorianCalendar NEW arguments, and extra-local int as the third and fourth six-arg GregorianCalendar NEW arguments, and extra-local int as the third and fifth six-arg GregorianCalendar NEW arguments, and extra-local int as the third and sixth six-arg GregorianCalendar NEW arguments, and extra-local int as the fourth and fifth six-arg GregorianCalendar NEW arguments, and extra-local int as the fourth and sixth six-arg GregorianCalendar NEW arguments, and extra-local int as the fifth and sixth six-arg GregorianCalendar NEW arguments (#146/#160/#163–#166/#170–#456)
architecture/ir-class-ldc-status.md Primitive Class LDC via wrapper TYPE (#167)
architecture/ir-condy-status.md Proven ConstantDynamic + raw MH/MT LDC (#161); interface companions (#168)
architecture/ir-indy-status.md IR invokedynamic via preprocessor (#159)
architecture/ir-monitors-status.md IR monitors / synchronized (#158)
architecture/ir-if-acmp-status.md IR IF_ACMPEQ / IF_ACMPNE (#157)
architecture/ir-lcmp-status.md IR LCMP / LongCompare (#153)
reviews/ir-lcmp-fable.md Fable accept of #153
architecture/ir-phase20-status.md Phase 20 IR increment (LDIV/LREM/LNEG)
reviews/ir-phase20-sol.md / reviews/ir-phase20-fable.md Independent accepts of phase 20
architecture/ir-phase19-status.md Long bitwise + shifts
architecture/ir-p19-jdk21-integration.md How #128 and #126 were combined
architecture/ir-phase18-status.md Primitive arrays + MULTIANEWARRAY
architecture/ir-jdk17-runtime-fix.md Classfile version, indy packaging, invokeExact trampolines
reviews/ir-phase19-fable.md Fable accept-with-nits of long bitwise/shifts
reviews/opcode-backend-v2-sol.md Sol accept-with-nits of interpreter ISA v2
reviews/ir-phase18-sol.md / reviews/ir-phase18-fable.md Independent accepts of phase 18 (docs-only)
reviews/ir-jdk17-runtime-fix-sol.md / reviews/ir-jdk17-runtime-fix-fable.md Sol reject+fix, then Fable accept of the runtime-fix tip

Per-phase ir-phaseN-status.md / *-review.md files under architecture/ are the incremental history. They were written against draft tips, not as a claim that every phase is a separate product.

SDK

Document Notes
sdk/v1-status.md Java API + C ABI
sdk/v1-fable-review.md Review of primitives v1
sdk/hmac-sha256-review.md HMAC review
sdk/aes-256-gcm-review.md AES-256-GCM review (prefer the 32-bit length fix)
architecture/sdk-cpp.md Earlier design note
research/cpp-sdk-options.md / research/sdk-api-sketch.md Research, not a shipped contract

Compatibility and tests / 兼容与测试

Document Notes
benchmarks/ir-jdk25-e2e-corpus.md 4-fixture IR behavioral E2E on one VM (20/21 IR, one hybrid ctor, JEP 472 warning); not a JDK 25 badge. Review: reviews/ir-jdk25-e2e-fable.md
benchmarks/ir-jdk21-e2e-corpus.md 6-fixture IR behavioral E2E on one VM; not a JDK 21 badge
benchmarks/ir-jdk17-e2e-corpus.md 11-fixture IR behavioral E2E on one VM; not a support badge
audit/jdk17-e2e-status.md Legacy-path JDK 17 harness
audit/jdk21-25-e2e-status.md / audit/jdk25-e2e-status.md Extra fixtures; not “JDK 25 supported”
architecture/jep472-native-access.md Output JAR Enable-Native-Access: ALL-UNNAMED (#145). Review: reviews/jep472-native-access-fable.md. Not a JDK 25 badge
benchmarks/ir-jdk17-e2e-phase17.md IR-mode 0/5 crashes before the runtime repair
architecture/ir-jdk17-runtime-fix.md Same five fixtures after the repair
audit/opcode-coverage.md Legacy opcode coverage notes
audit/jdk-compatibility-gaps.md Pre-#118 audit; version = 52 path is historical
audit/codegen-pipeline.md Pre-#118 snippet-pipeline audit

Measurements / 测量

Do not invent numbers. Do not back-fill #53 eval medians (N/A).

Document Notes
benchmarks/README.md How to run benchmarks/run.py (JVM + IR)
benchmarks/results-ir-vs-legacy-phase19.md Latest three-mode bench (all three kernels on IR; one VM). Fable accept-with-nits: reviews/bench-ir-phase19-fable.md
benchmarks/results-ir-vs-legacy-master.md Pre-phase-19 three-mode bench; only string-concat-hash stayed fully IR
benchmarks/ir-leftover-inventory.md Post-#452 admission inventory (#454; ClassicTest 108/108, JDK 17/21/25 82/82, 47/47, 21/21). Not coverage-complete
benchmarks/ir-admission-phase18-corpus.md Latest admission tables (ClassicTest 108/108 IR; JDK 17 36/36 admit; JDK 21 extra 36/38)
benchmarks/results-local.md Early local JVM vs JNI numbers
benchmarks/results-ir-vs-legacy.md IR vs legacy vs JVM (local)
benchmarks/results-ir-eval-lower.md Eval fell back; median N/A
benchmarks/results-ir-eval-ushr.md Later eval stay-on-eval measure (local only)

Default-off backends on master / 已在 master、默认关闭的后端

Document Stack
architecture/interpreter-isa-exceptions-status.md Interpreter ATHROW + exception table (#150)
reviews/interpreter-isa-exceptions-sol.md Sol accept of #150
architecture/interpreter-isa-objects-status.md Interpreter ISA v4 reference slice (#148)
reviews/interpreter-isa-objects-sol.md Sol accept of #148
architecture/interpreter-isa-i64-status.md Interpreter ISA v3 i64 slice (#140)
reviews/interpreter-isa-i64-sol.md Sol accept of #140
architecture/interpreter-on-master-status.md What --backend=interpreter actually does on master
reviews/interpreter-on-master-fable.md Fable accept-with-nits of #124
architecture/ir-evaluator-backend.md --ir-lower=eval on master (default direct; #137)
reviews/ir-eval-port-sol.md Sol accept-with-nits of #137
reviews/ir-eval-ldiv-sol.md Sol accept of #139 LDIV/LREM wire-up
eval/ Reader / recovery notes (requirement 7 unmet)

Older #17–#28 sibling flags and old evaluator PRs #42–#87 are not the current CLI.

Research / 调研

research/java-to-cpp-paths.md and research/benchmark-methodology.md are surveys. Gemini drafts in that era are not authorities unless a later independent review accepted the claim (architecture/gemini-review-notes.md).

Historical maintainer brief / 历史维护者简报

architecture/goal-status-and-options.md is the historical maintainer brief through PR #117, written when master was still e7ca4c8. Keep it as history. For the active engineering goal, use architecture/current-goal.md. For “what is true on master today”, use architecture/project-status.md.