diff --git a/.gitignore b/.gitignore index 963497a8069016c583ed50ca29d6fa29fff6e14a..e4f575b0e2c06ebae36afa7f99fe4af78f00e7bd 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,6 @@ interface_sdk-js **/command-line-tools **/libs **/*.abc +cachegrind.out.* +perf.data* diff --git a/arkoala-arkts/arkui/src/Application.ts b/arkoala-arkts/arkui/src/Application.ts index 6fcf283dc84673edea3a68f46310acc56e5606e2..2328fe318b4f7e850e98235630b864c03dc26ba0 100644 --- a/arkoala-arkts/arkui/src/Application.ts +++ b/arkoala-arkts/arkui/src/Application.ts @@ -20,7 +20,7 @@ import { PeerNode } from "./generated/PeerNode" import { ArkUINativeModule } from "#components" import { EventEmulator } from "./generated/ArkEventEmulatorMaterialized" import { UserView, UserViewBuilder } from "./UserView" -import { ClickEvent, SourceTool, SourceType } from "./generated" +import { ClickEvent, ClickEventInternal } from "./generated/ArkClickEventMaterialized" import { checkEvents, setCustomEventsChecker } from "./generated/Events" import { checkArkoalaCallbacks } from "./generated/peers/CallbacksChecker" import { setUIDetachedRootCreator } from "./generated/peers/CallbackTransformer" @@ -135,10 +135,15 @@ function dumpTree(node: IncrementalNode, indent: int32 = 0) { } } -let crashDumped = false -function drawCurrentCrash(crash: Object) { +function errorInfo(crash: Object): string { let msg = crash.toString() + "\n" if (Object.hasOwn(crash, "stack")) msg += (crash as Error).stack + return msg +} + +let crashDumped = false +function drawCurrentCrash(crash: Object) { + let msg = errorInfo(crash) if (!crashDumped) { InteropNativeModule._NativeLog(msg) crashDumped = true @@ -316,7 +321,7 @@ export class Application { } } } catch (error) { - InteropNativeModule._NativeLog("emitEvent error: " + error) + InteropNativeModule._NativeLog("emitEvent error: " + errorInfo(error as Object)) } } } @@ -333,16 +338,9 @@ export class Application { } function makeClickEvent(x: number, y: number): ClickEvent { - return { - displayX: 0, - displayY: 0, - windowX: 0, - windowY: 0, - screenX: 0, - screenY: 0, - x: x, - y: y, - preventDefault: () => {} - } + let result = new ClickEventInternal() + result.x = x + result.y = y + return result } diff --git a/arkoala-arkts/package.json b/arkoala-arkts/package.json index f48d5cab2a8427902a93b203017162126d2ff5c1..cdc4e2c9588c80ca09577ebca74cd1bf3c1e9f05 100644 --- a/arkoala-arkts/package.json +++ b/arkoala-arkts/package.json @@ -84,6 +84,7 @@ "shopping:har-arm64": "npm run har-arm64 --prefix shopping", "clean": "rimraf build", "clean:native": "npm run clean --prefix ../arkoala/framework", - "clean:all": "npm run clean && npm run clean:common && npm run clean:incremental && npm run clean:interop && npm run clean:arkui-common && npm run clean:arkui-no-common && npm run clean:native && npm run clean --prefix har && npm run clean --prefix user && npm run clean:shopping" + "clean:all": "npm run clean && npm run clean:common && npm run clean:incremental && npm run clean:interop && npm run clean:arkui-common && npm run clean:arkui-no-common && npm run clean:native && npm run clean --prefix har && npm run clean --prefix user && npm run clean:shopping", + "perf:trivial": "npm run build:user && ACE_LIBRARY_PATH=build PANDA_HOME=../incremental/tools/panda/node_modules/@panda/sdk valgrind --tool=cachegrind --valgrind-stacksize=8000000 --main-stacksize=100000000 node build/index.js panda:TrivialApp 2>/dev/null && ls -lh cachegrind.out.* && echo 'Use cg_annotate to inspect'" } } diff --git a/arkoala-arkts/user/src/ets/page1.ets b/arkoala-arkts/user/src/ets/page1.ets index 66d1dab29aaaf2678e26ac3e58dd255a873739b5..4df805660035c89f7314d20ead39a53e648ee5d8 100644 --- a/arkoala-arkts/user/src/ets/page1.ets +++ b/arkoala-arkts/user/src/ets/page1.ets @@ -60,13 +60,24 @@ struct TestStructBuilder { } } +function makeArray(items: number): Array { + const result = new Array(items) + for (let i = 0; i < items; i++) result[i] = `elem${i}` + return result +} + @Component struct Page1 { @State color1: string = '#ff0000' @State color2: string = '#00ff00' @State state: number = 1 + data: Array = makeArray(10) + build() { + console.log(`In Page1`) + + ForEach(this.data, (item: string, index: number) => { Column() { Button("Hi") .backgroundColor(this.color1) @@ -91,6 +102,7 @@ struct Page1 { .width('100%').height('100%') .backgroundColor(Color.Gray) .justifyContent(FlexAlign.Center) + }, (item:string, index: number) => item) } swap(): void {