[codenameone/CodenameOne] a21df2: js-port: structured (labeled-break) emission for a...

0 views
Skip to first unread message

Shai Almog

unread,
Jun 11, 2026, 4:11:15 PM (10 hours ago) Jun 11
to codenameo...@googlegroups.com
Branch: refs/heads/initializr-local-javascript-build
Home: https://github.com/codenameone/CodenameOne
Commit: a21df2736b95dca814d74cc7f3d1d90c4c3c8c53
https://github.com/codenameone/CodenameOne/commit/a21df2736b95dca814d74cc7f3d1d90c4c3c8c53
Author: Shai Almog <67850168+...@users.noreply.github.com>
Date: 2026-06-11 (Thu, 11 Jun 2026)

Changed paths:
M scripts/build-javascript-port-hellocodenameone.sh
M vm/ByteCodeTranslator/src/com/codename1/tools/translator/JavascriptMethodGenerator.java

Log Message:
-----------
js-port: structured (labeled-break) emission for acyclic-forward CFGs

Methods whose control flow is forward-only (if/else diamonds, early
returns -- no loops, switches, exception tables or monitors) no longer
fall to the for(;;)switch(pc) interpreter: forward jumps lower to
break B<n>; out of labeled blocks and the body shares the straight-line
emitter's deferred-expression lowering. Soundness: every jump flushes
deferred expressions and records the entry stack depth per target
(bailing to the interpreter on mismatch / unsupported instructions /
past the parparvm.js.structured.maxblocks budget), and entering a merge
point drops stale pendings from dead fall-off paths so they cannot
shadow the flushed slot values. Restores the CFG foundation
(BasicBlock/buildBasicBlocks/isAcyclicForward) and fixes the
straight-line path's preempt-yield gate (was still opt-in). 8,412
methods structured; -440KB raw on the test app.

Co-Authored-By: Claude Fable 5 <nor...@anthropic.com>



To unsubscribe from these emails, change your notification settings at https://github.com/codenameone/CodenameOne/settings/notifications
Reply all
Reply to author
Forward
0 new messages