Audit and fix UI bugs - #409
Open
vbmacher wants to merge 9 commits into
Open
Conversation
byte-mem/ssem array write notified one cell past end (to is inclusive); byte-mem ROM intersects checked one cell past write range; ram-mem array write missed size-change detection (checked base address only) and getLabel read labels without read lock. Drop stream lookup in Loader, stray super.mousePressed in MouseHandler. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
setValueAt compared value class by identity so subclass values were silently dropped; automation never removed its CPU listener; Element built a zero-height gradient in constructor that measure() always replaces before first draw. Fix parameter typo. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Terminal displays handed out live video memory arrays; getters now return snapshots taken under the write lock so renderers cannot see torn frames. Tape close skipped shutdownNow when interrupted. Replace 52-entry Ctrl keycode table and duplicate ZX palettes with loops. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
HashSet on Node dedupes equal-looking nodes at different addresses (Node subclasses override equals without hashCode); identity set preserves per-instance multi-pass resolution. ArithmeticException from / and %% now reported as compile error with position instead of crashing compilation thread. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
requestMaskableInterrupt reads currentRunState from device thread; stale read could drop interrupts. 8080 already volatile. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CharArrayCharStream (6 identical copies) and ParsingUtils (4 copies) move to new :plugins:compiler:compiler-shared module. Application depends on it so the jar lands in dist lib/, where plugin manifests resolve Class-Path. ADR-0008 records the boundary decision. Not unified: per-plugin exceptions and ParserErrorListener (divergent types/formats), FlagsModel (different semantics), Breakpoint (trivial), terminal DisplayCanvas (too divergent). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replaces internal compiler-shared module. CharArrayCharStream and ParsingUtils now live in emuLib plugins.compiler.antlr (compileOnly antlr4-runtime there; plugins provide it). ADR-0008 updated. Requires emuLib 12.1.0-SNAPSHOT (emuLib commit bc00f7c). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #408
UI audit and bug-fix pass across the application and plugins, plus extraction of duplicated compiler helpers into emuLib.
UI fixes
setValueAtcompared value class by identity, silently dropping subclass values; automation no longer leaks its CPU listener; removed useless zero-height gradient built inElementconstructor.Thread-safety & correctness
tois inclusive) in byte-mem/ssem; byte-mem ROM intersection check included one cell past the write range; ram-mem missed size-change detection on array writes and read labels without the read lock.currentRunStateis nowvolatile—requestMaskableInterruptreads it from a device thread and a stale read could drop interrupts (8080 was already volatile).close()skippedshutdownNowwhen interrupted.Assembler fixes (as-8080, as-z80)
HashSet<Node>which deduped equal-looking nodes at different addresses (Nodesubclasses overrideequalswithouthashCode); an identity set preserves per-instance multi-pass resolution.Refactoring
CharArrayCharStream(6 identical copies) andParsingUtils(4 copies) now live in emuLibplugins.compiler.antlr. Recorded in ADR-0008.ParserErrorListener(divergent types/formats),FlagsModel(different semantics),Breakpoint(trivial), terminalDisplayCanvas(too divergent).Dependencies
bc00f7c).