| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[BugFix][Devtool] Remove redundant script write barrier AddDebuggerScript already retains the script through the debugger script list and applies the write barrier when publishing it. Remove the duplicate barrier before SetFunctionScript while preserving the existing GC ownership chain. | 1 个月前 | |
[BugFix][DevTool] Fix inspector cleanup for reused shared contexts A shared context could be created while JS debugging was disabled and later reused after debugging was enabled. The reuse path initialized its inspector without registering the group in group_to_engine_type_. When that reused context was released, OnRelease could not select the corresponding release callback, leaving stale context and inspector entries in QJSInspectorClientImpl. Recreating the same group could then access state associated with the destroyed QuickJS context. DisconnectSession also retained a reference to the channel-owned group ID after erasing that channel, resulting in a dangling reference. - Call EnsureSharedContextRegistered before OnRuntimeReady when reusing a shared context. - Remove the group registration from group_to_engine_type_ when releasing the shared context. - Copy the group ID before DisconnectSession erases the channel that owns it. - Log requested and registered engine types in EnsureSharedContextRegistered. TEST: js_debug_unittest_exec | 14 天前 | |
[BugFix][DevTool] Show corejs and page scripts under new share group Under the shared-VM per-page-context scheme, enable_new_share_group creates a dedicated context that evaluates corejs and per-page contexts copy properties from it. The devtool only tracked a single context per group, so lynx_core.js, app-service.js, and background bundles were missing from the debug console. - jsi.h / runtime_manager.cc: mark the group-owned corejs runtime as a shared global context and register it with the inspector before its scripts are evaluated, without attaching a page session to it. - v8/quickjs inspector clients and managers: track and release every page context in a shared group instead of only the first one, and skip the shared global context when reporting inspector sessions. - quickjs inspector impl: route debugger requests to the context that owns the target script or script URL so breakpoints and getScriptSource resolve to the correct realm. - Why: the separate corejs context and the per-page contexts were invisible to the debugger, so their scripts never appeared and their sources were empty. - Verified on a connected Android device with V8 and PrimJS: two pages in one group share a single corejs script id and expose their own page scripts, closing a page removes only its scripts, and the legacy single-context path is unaffected. TEST: Manual DevTool verification on device for V8 and PrimJS shared groups. AutoSubmit: True | 1 个月前 | |
[Optimize] Change gn path to relative path. Now there are lots of gn absolute path usage in our project, it brings the following problem: Affecting the parent directory of lynx: In order to make it possible to extend lynx project in other projects, we need to use //lynx gn absolute path in lynx project, so we should execute gn command in the parent directory of lynx. As a result, buildroot and other third_party libraries should be placed in parent directory of lynx. To solve the problem, we prefer to use relative path in lynx project, refering to the approach in skia and v8. In this change, we add a script named gn_relative_path_converter.py to help converting //lynx to relative path. But we still need to do some adaptions: Add rebase_path function for converting relative path to absolute path in template definition and variable definition in build_overrides, because the relative path is different with different gn target. | 1 年前 | |
[Feature][DevTool] Support RTS VM source debugging - What changed: Route RTS inspector initialization, source loading, and source lookup through MTSContext-based inspector hooks. - What changed: Keep RNIEnv access behind MTSContext::GetRNIEnv so LepusInspectorManager does not expose RTS-specific runtime details. - What changed: Release the RTS inspector wrapper without running the PrimTS inspector destructor during manager teardown to avoid double-freeing session-owned frontend backends. - Why it was needed: RTS source debugging needs Lynx DevTool integration without leaking RTS/RNI types into the shared inspector-facing interface. - How it was verified / impacts: Ran diff checks, Android RTS debug target build, direct object compilation for changed runtime sources, Android noasan release sample build, and local RTS page attach/reopen crash verification. TEST: git diff --check TEST: git lynx format --changed TEST: Built Android RTS debug target via ninja TEST: Directly compiled rts_context.o, mts_context.o, and mts_runtime.o using their generated ninja compile commands TEST: Built Android noasan release sample app with Gradle e2e flags TEST: Opened scrollview_bind RTS page with the RTS mode query enabled, enabled Runtime and Debugger on Main, and repeated page reopen 5 times without native crash. AutoLand: release/3.9 | 5 个月前 |