From 5fd5021daf873d55b0f7e647e7f29e895b428783 Mon Sep 17 00:00:00 2001 From: Keerecles Date: Mon, 9 Jun 2025 21:23:16 +0800 Subject: [PATCH] test debug Signed-off-by: Keerecles Change-Id: I4ab10d57d070f7f51b4dcb204abf0ff92eef7eb6 --- arkui-plugins/common/debug.ts | 2 +- arkui-plugins/common/plugin-context.ts | 1 + arkui-plugins/common/program-visitor.ts | 20 ++++++++++---------- arkui-plugins/ui-plugins/index.ts | 16 ++++++++++++++++ 4 files changed, 28 insertions(+), 11 deletions(-) diff --git a/arkui-plugins/common/debug.ts b/arkui-plugins/common/debug.ts index f39940e8f..59d7982a7 100644 --- a/arkui-plugins/common/debug.ts +++ b/arkui-plugins/common/debug.ts @@ -18,7 +18,7 @@ import * as arkts from '@koalaui/libarkts'; const isDebugLog: boolean = false; const isDebugDump: boolean = false; -const isPerformance: boolean = false; +const isPerformance: boolean = true; arkts.Performance.getInstance().skip(!isPerformance); export function getEnumName(enumType: any, value: number): string | undefined { diff --git a/arkui-plugins/common/plugin-context.ts b/arkui-plugins/common/plugin-context.ts index 95843cb7b..33437e5f4 100644 --- a/arkui-plugins/common/plugin-context.ts +++ b/arkui-plugins/common/plugin-context.ts @@ -107,6 +107,7 @@ export interface Plugins { afterNew?: PluginHandler; parsed?: PluginHandler; scopeInited?: PluginHandler; + bound?: PluginHandler; checked?: PluginHandler; lowered?: PluginHandler; asmGenerated?: PluginHandler; diff --git a/arkui-plugins/common/program-visitor.ts b/arkui-plugins/common/program-visitor.ts index daf5cda20..cea1a398a 100644 --- a/arkui-plugins/common/program-visitor.ts +++ b/arkui-plugins/common/program-visitor.ts @@ -174,7 +174,7 @@ export class ProgramVisitor extends AbstractVisitor { const visited = new Set(); const queue: arkts.Program[] = programQueue; this.getLegacyModule(); - arkts.Performance.getInstance().createEvent(`${this.state}-external-source`); + // arkts.Performance.getInstance().createEvent(`${this.state}-external-source`); while (queue.length > 0) { const currProgram = queue.shift()!; if (visited.has(currProgram.peer) || currProgram.isASTLowered()) { @@ -197,16 +197,16 @@ export class ProgramVisitor extends AbstractVisitor { this.visitNextProgramInQueue(queue, visited, externalSource); } } - arkts.Performance.getInstance().stopEvent(`${this.state}-external-source`, false); + // arkts.Performance.getInstance().stopEvent(`${this.state}-external-source`, false); } programVisitor(program: arkts.Program): arkts.Program { this.visitExternalSources(program, [program]); - arkts.Performance.getInstance().createEvent(`${this.state}-source`); + // arkts.Performance.getInstance().createEvent(`${this.state}-source`); let programScript = program.astNode; programScript = this.visitor(programScript, program, this.externalSourceName); - arkts.Performance.getInstance().stopEvent(`${this.state}-source`, false); + // arkts.Performance.getInstance().stopEvent(`${this.state}-source`, false); const visitorsToReset = flattenVisitorsInHooks(this.hooks, this.state); visitorsToReset.forEach((visitor) => visitor.reset()); @@ -247,7 +247,7 @@ export class ProgramVisitor extends AbstractVisitor { } visitor(node: arkts.AstNode, program?: arkts.Program, externalSourceName?: string): arkts.EtsScript { - arkts.Performance.getInstance().createEvent(`${this.state}-${externalSourceName ?? 'SOURCE'}`); + // arkts.Performance.getInstance().createEvent(`${this.state}-${externalSourceName ?? 'SOURCE'}`); let hook: ProgramHookLifeCycle | undefined; let script: arkts.EtsScript = node as arkts.EtsScript; @@ -264,9 +264,9 @@ export class ProgramVisitor extends AbstractVisitor { } this.visitTransformer(transformer, script, externalSourceName, program); transformer.reset(); - arkts.Performance.getInstance().createEvent('set-all-parent'); + // arkts.Performance.getInstance().createEvent('set-all-parent'); arkts.setAllParents(script); - arkts.Performance.getInstance().stopEvent('set-all-parent', false); + // arkts.Performance.getInstance().stopEvent('set-all-parent', false); if (!transformer.isExternal) { debugDump( script.dumpSrc(), @@ -283,7 +283,7 @@ export class ProgramVisitor extends AbstractVisitor { hook = isExternal ? this.hooks?.external : this.hooks?.source; this.postVisitor(hook, node, program, externalSourceName); - arkts.Performance.getInstance().stopEvent(`${this.state}-${externalSourceName ?? 'SOURCE'}`, false); + // arkts.Performance.getInstance().stopEvent(`${this.state}-${externalSourceName ?? 'SOURCE'}`, false); return script; } @@ -303,12 +303,12 @@ export class ProgramVisitor extends AbstractVisitor { externalSourceName?: string, program?: arkts.Program ): arkts.EtsScript { - arkts.Performance.getInstance().createEvent(transformer.constructor.name); + // arkts.Performance.getInstance().createEvent(transformer.constructor.name); transformer.isExternal = !!externalSourceName; transformer.externalSourceName = externalSourceName; transformer.program = program; const newScript = transformer.visitor(script) as arkts.EtsScript; - arkts.Performance.getInstance().stopEvent(transformer.constructor.name, false); + // arkts.Performance.getInstance().stopEvent(transformer.constructor.name, false); return newScript; } } diff --git a/arkui-plugins/ui-plugins/index.ts b/arkui-plugins/ui-plugins/index.ts index a50014ecf..72418ad52 100644 --- a/arkui-plugins/ui-plugins/index.ts +++ b/arkui-plugins/ui-plugins/index.ts @@ -26,6 +26,7 @@ export function uiTransform(): Plugins { return { name: 'ui-plugin', parsed: parsedTransform, + bound: boundTransform, checked: checkedTransform, clean() { arkts.arktsGlobal.clearContext(); @@ -78,6 +79,21 @@ function parsedTransform(this: PluginContext): arkts.EtsScript | undefined { return script; } +function boundTransform(this: PluginContext): arkts.EtsScript | undefined { + let script: arkts.EtsScript | undefined; + console.log('[UI PLUGIN] AFTER BOUND ENTER'); + const contextPtr = this.getContextPtr() ?? arkts.arktsGlobal.compilerContext?.peer; + if (!!contextPtr) { + let program = arkts.getOrUpdateGlobalContext(contextPtr).program; + script = program.astNode; + arkts.Performance.getInstance().createEvent('rebind'); + arkts.rebindSubtree(script) + arkts.Performance.getInstance().stopEvent('rebind', false); + console.log('[UI PLUGIN] AFTER BOUND EXIT'); + } + return script; +} + function checkedTransform(this: PluginContext): arkts.EtsScript | undefined { let script: arkts.EtsScript | undefined; console.log('[UI PLUGIN] AFTER CHECKED ENTER'); -- Gitee