You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Ports/JavaScriptPort/STATUS.md
+57-1Lines changed: 57 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,27 @@ JavaScript Port Status (ParparVM)
5
5
6
6
Last updated: 2026-04-11
7
7
8
+
Latest Investigation Snapshot (this round)
9
+
------------------------------------------
10
+
11
+
- Input artifacts analyzed:
12
+
-`~/Downloads/job-logs.txt`
13
+
-`~/Downloads/javascript-ui-tests/browser.log`
14
+
- Confirmed in that artifact set:
15
+
- Suite completes (`CN1SS:SUITE:FINISHED`) and 32 named streams decode.
16
+
- Most PNGs are still identical/white (`canvasSig=7263bb45` repeated).
17
+
- Screenshot helper repeatedly falls back due:
18
+
-`PARPAR:DIAG:FALLBACK:cn1ssEmitCurrentFormScreenshotDom:originalInvokeErr=Error: Missing JS member get for host receiver`
19
+
- New code changes in workspace (not CI-validated yet):
20
+
1. Host/runtime JSO bridge now supports array-like indexed fallback for `get(index)`/`set(index,value)` when no callable member exists.
21
+
2. Host bridge attempts to avoid per-pixel host RPC by cloning typed-array payloads.
22
+
3. Host bridge has explicit `getter:data` fast-return clone path.
23
+
4. BaseTest on-show lambda shim now guards missing `target.__classDef` by resolving class metadata from `target.__class`.
24
+
5. Screenshot fallback now logs short `originalInvokeStack` for first-failure localization.
25
+
- Important caveat from local replay:
26
+
- Replaying patched runtime against the previously archived CI zip can regress to timeout and show `originalInvokeErr=Cannot read properties of null (reading '__classDef')` during per-test screenshot emission.
27
+
- This indicates the first blocker has shifted from missing host `.get` to a null receiver/class-init path in translated screenshot execution.
28
+
8
29
Current State
9
30
-------------
10
31
@@ -163,10 +184,45 @@ What Was Fixed In This Pass
163
184
- Expected effect:
164
185
- Restore named screenshot stream emission (`CN1SS:<test>`) instead of collapsing to `default`-only stream.
165
186
187
+
14. Added JSO bridge indexed-access compatibility for array-like receivers.
- If a bridged `method` call has member `get`/`set` and receiver is array-like (`length`), map to indexed element access when no callable JS member exists.
193
+
- Motivation:
194
+
- Fixes deterministic screenshot-path failure:
195
+
-`Missing JS member get for host receiver`
196
+
- Seen when translated code accesses pixel buffers via `get(index)`.
197
+
198
+
15. Added host bridge typed-array transfer fast paths.
-`hostResult()` now clones/returns typed-array and `ArrayBuffer` values directly instead of always creating host refs.
203
+
- Added explicit `getter:data` direct-clone return path in `__cn1_jso_bridge__`.
204
+
- Motivation:
205
+
- Prevents pathological per-element host RPC loops during pixel-buffer reads.
206
+
- Status:
207
+
- Local replay indicates this removes the old `Missing JS member get...` failure, but uncovers a later null `__classDef` path that still needs repair.
208
+
209
+
16. Hardened BaseTest on-show lambda shim for missing class definition.
210
+
- File:
211
+
-`Ports/JavaScriptPort/src/main/webapp/port.js`
212
+
- Changes:
213
+
-`target.__classDef` access now falls back to `jvm.classes[target.__class]` and exits safely with diagnostic if unresolved.
214
+
- Motivation:
215
+
- Targets recurring per-test failure signature:
216
+
-`Cannot read properties of null (reading '__classDef')`
217
+
- This is now the highest-priority blocker after `.get` bridge repair.
218
+
166
219
Known Failing Symptoms (Latest CI Logs/Artifacts)
167
220
-------------------------------------------------
168
221
169
222
- Screenshot suite finishes but many tests fail during `runTest`.
223
+
- Latest primary blocker progression:
224
+
- Earlier blocker in CI artifacts: `Missing JS member get for host receiver`.
225
+
- After bridge compatibility work in local replay: blocker shifts to `Cannot read properties of null (reading '__classDef')` in translated screenshot helper path.
170
226
- Repeated deterministic blockers in browser log:
171
227
-`TabsScreenshotTest`: `cn1_com_codename1_ui_Button_initLaf_com_codename1_ui_plaf_UIManager is not defined`
172
228
-`OrientationLockScreenshotTest`: `document is not defined`
@@ -199,7 +255,7 @@ Priority Next Steps
199
255
4. Validate `CN1SS` named test streams are emitted again (not only `default/bootstrap`).
200
256
5. Validate `originalResolved=translated:...__impl` (or equivalent non-recursive path) in CI browser log after translated-method preservation patch.
201
257
6. If white-frame reuse persists, capture and compare per-test `settleSig`/`canvasSig`/`canvasSource` to identify whether paint is not happening or capture target is still wrong.
202
-
7. Fix per-test null receiver/init path (`__classDef` null) at first failing stack, not via broad fallbacks.
258
+
7. Fix per-test null receiver/init path (`__classDef` null) at first failing stack in translated screenshot/helper execution (no new broad fallbacks).
203
259
8. Fix missing `Button.initLaf(UIManager)` symbol resolution in worker runtime path.
204
260
9. Fix worker-mode orientation lock path so DOM access is host-bridge mediated (no direct `document` access in worker).
205
261
10. Confirm VM completeness stability in CI with parser/runtime patches (`expected 7` consistently).
0 commit comments