agra
|
46b874074b
|
refactor(backend): extract reflection metadata + trace frames into src/backend/llvm/reflection.zig (A7.2 reflection)
Move the type/field/tag reflection name-array builders and the error-trace Frame
builders out of emit_llvm.zig into a Reflection backend *LLVMEmitter facade
(field `e`). Behavior-preserving relocation — self.* -> self.e.* only.
- src/backend/llvm/reflection.zig (Reflection): getOrBuildTypeNameArray /
getOrBuildFieldNameArray / getOrBuildTagNameArray (pub) + emitTraceFrame (pub)
+ buildStringConst (private trace helper). The memoized state
(type_name_array(_len) / field_name_arrays / tag_name_array / frame_str_cache)
stays on LLVMEmitter; the facade reads/writes via self.e.*.
- Routed the 5 call sites through a new reflection() accessor (type_name /
field_name / error_tag_name builtins, emitFailableMainRet's tag-name lookup,
and the .trace_frame push).
- Kept in emit_llvm.zig per the A6.1 "emission-heavy stays" precedent:
getFrameStructType (composite-type getter, widened to pub — emitTraceFrame calls
it back), emitFieldValueGet (field-value reflection EMISSION, not an array
builder), emitFailableMainRet. getStringStructType/getAnyStructType already pub.
- No reflection-array layout, trace-Frame field order, or linkage change.
Gate: zig build, zig build test, bash tests/run_examples.sh -> 361/0 (reflection
anchors 0030/0118/0517/0520 + trace anchors 1024/1025/1026 all ok, no churn).
|
2026-06-03 09:29:27 +03:00 |
|