arkanalyzer 1.0.91 → 1.0.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Scene.d.ts +15 -0
- package/lib/Scene.d.ts.map +1 -1
- package/lib/Scene.js +39 -0
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +6 -0
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/AbstractAnalysis.js +17 -8
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts +1 -0
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +9 -3
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts +147 -0
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts.map +1 -1
- package/lib/callgraph/algorithm/RapidTypeAnalysis.js +803 -76
- package/lib/callgraph/model/CallGraph.d.ts +1 -0
- package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
- package/lib/callgraph/model/CallGraph.js +4 -0
- package/lib/callgraph/model/CallSite.d.ts +88 -1
- package/lib/callgraph/model/CallSite.d.ts.map +1 -1
- package/lib/callgraph/model/CallSite.js +58 -4
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +1 -1
- package/lib/core/common/IRInference.js +2 -2
- package/lib/core/common/SdkUtils.js +1 -1
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +3 -0
- package/lib/core/graph/builder/SwitchBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/SwitchBuilder.js +11 -1
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts +13 -3
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
- package/lib/core/graph/builder/ViewTreeBuilder.js +271 -86
- package/lib/core/model/ArkModule.d.ts +9 -12
- package/lib/core/model/ArkModule.d.ts.map +1 -1
- package/lib/core/model/ArkModule.js +7 -10
- package/lib/core/model/builder/ArkClassBuilder.js +10 -4
- package/lib/core/model/builder/ArkMethodBuilder.d.ts +2 -1
- package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/ArkMethodBuilder.js +5 -1
- package/lib/frontend/FrontendBuilder.d.ts +8 -10
- package/lib/frontend/FrontendBuilder.d.ts.map +1 -1
- package/lib/frontend/FrontendBuilder.js +9 -17
- package/lib/frontend/common/ModuleAnalysisConfig.d.ts +8 -1
- package/lib/frontend/common/ModuleAnalysisConfig.d.ts.map +1 -1
- package/lib/frontend/common/ModuleAnalysisConfig.js +10 -1
- package/lib/frontend/common/ModuleBuilder.d.ts +44 -33
- package/lib/frontend/common/ModuleBuilder.d.ts.map +1 -1
- package/lib/frontend/common/ModuleBuilder.js +195 -66
- package/lib/frontend/common/ModuleCache.d.ts +1 -0
- package/lib/frontend/common/ModuleCache.d.ts.map +1 -1
- package/lib/frontend/common/ModuleCache.js +1 -0
- package/lib/frontend/common/ModuleDepth.d.ts +19 -14
- package/lib/frontend/common/ModuleDepth.d.ts.map +1 -1
- package/lib/frontend/common/ModuleDepth.js +25 -15
- package/lib/frontend/cppFrontend/graph/builder/SwitchBuilder.d.ts.map +1 -1
- package/lib/frontend/cppFrontend/graph/builder/SwitchBuilder.js +11 -1
- package/package.json +1 -1
|
@@ -59,6 +59,7 @@ export declare class CallGraph extends BaseExplicitGraph {
|
|
|
59
59
|
addDynamicCallInfo(callStmt: Stmt, caller: Method, potentialCallee?: Method): void;
|
|
60
60
|
addDynamicCallEdge(callerID: NodeID, calleeID: NodeID, callStmt: Stmt): void;
|
|
61
61
|
getDynCallSiteByStmt(stmt: Stmt): DynCallSite | undefined;
|
|
62
|
+
recordCallSite(stmt: Stmt, cs: CallSite): void;
|
|
62
63
|
addStmtToCallSiteMap(stmt: Stmt, cs: CallSite): boolean;
|
|
63
64
|
getCallSiteByStmt(stmt: Stmt): CallSite[];
|
|
64
65
|
addMethodToCallSiteMap(funcID: FuncID, cs: CallSite): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallGraph.d.ts","sourceRoot":"","sources":["../../../src/callgraph/model/CallGraph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CallGraph.d.ts","sourceRoot":"","sources":["../../../src/callgraph/model/CallGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -225,6 +225,10 @@ class CallGraph extends BaseExplicitGraph_1.BaseExplicitGraph {
|
|
|
225
225
|
getDynCallSiteByStmt(stmt) {
|
|
226
226
|
return this.stmtToDynCallSitemap.get(stmt);
|
|
227
227
|
}
|
|
228
|
+
recordCallSite(stmt, cs) {
|
|
229
|
+
this.addStmtToCallSiteMap(stmt, cs);
|
|
230
|
+
this.addMethodToCallSiteMap(cs.calleeFuncID, cs);
|
|
231
|
+
}
|
|
228
232
|
addStmtToCallSiteMap(stmt, cs) {
|
|
229
233
|
if (this.stmtToCallSitemap.has(stmt)) {
|
|
230
234
|
this.stmtToCallSitemap.get(stmt).push(cs);
|
|
@@ -1,39 +1,126 @@
|
|
|
1
1
|
import { Stmt } from '../../core/base/Stmt';
|
|
2
2
|
import { Value } from '../../core/base/Value';
|
|
3
3
|
import { FuncID } from './CallGraph';
|
|
4
|
+
/**
|
|
5
|
+
* 调用点 ID 的类型别名,全局唯一递增分配。
|
|
6
|
+
*/
|
|
4
7
|
export type CallSiteID = number;
|
|
8
|
+
/**
|
|
9
|
+
* 调用点统一接口。
|
|
10
|
+
* 一个调用点表示调用图中一条 `caller → callee` 边在 caller 侧的来源语句信息。
|
|
11
|
+
*/
|
|
5
12
|
export interface ICallSite {
|
|
13
|
+
/** 全局唯一标识 */
|
|
6
14
|
id: CallSiteID;
|
|
15
|
+
/** 触发该调用的语句(通常是 ArkInvokeStmt) */
|
|
7
16
|
callStmt: Stmt;
|
|
17
|
+
/** 调用参数列表,若语句不包含参数信息则为 undefined */
|
|
8
18
|
args: Value[] | undefined;
|
|
19
|
+
/** 调用方方法 ID */
|
|
9
20
|
callerFuncID: FuncID;
|
|
21
|
+
/** 获取被调用方方法 ID */
|
|
10
22
|
getCalleeFuncID(): FuncID | undefined;
|
|
11
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* 静态调用点。
|
|
26
|
+
*
|
|
27
|
+
* 表示一条**确定**的 `caller → callee` 调用边:在构建调用图时(CHA/RTA/PTA),
|
|
28
|
+
* 调用语句的目标方法已被解析为具体的 calleeFuncID,不再发生变化。
|
|
29
|
+
*
|
|
30
|
+
* 与 {@link DynCallSite} 相对,后者在创建时 callee 未知或仅为候选,
|
|
31
|
+
* 需要在后续指针分析阶段被克隆为确定性的静态调用点。
|
|
32
|
+
*/
|
|
12
33
|
export declare class CallSite implements ICallSite {
|
|
34
|
+
/** 全局唯一标识 */
|
|
13
35
|
id: CallSiteID;
|
|
36
|
+
/** 触发该调用的语句(通常是 ArkInvokeStmt) */
|
|
14
37
|
callStmt: Stmt;
|
|
38
|
+
/** 调用参数列表,若语句不包含参数信息则为 undefined */
|
|
15
39
|
args: Value[] | undefined;
|
|
40
|
+
/** 被调用方方法 ID */
|
|
16
41
|
calleeFuncID: FuncID;
|
|
42
|
+
/** 调用方方法 ID */
|
|
17
43
|
callerFuncID: FuncID;
|
|
18
|
-
|
|
44
|
+
/**
|
|
45
|
+
* 当该调用点对应一条 **callback 调用边** 时,argIndex 表示 callback
|
|
46
|
+
* 是原始调用语句的第几个入参(0-based)。
|
|
47
|
+
*
|
|
48
|
+
* 例如语句 `button.onClick(callback)` 中,callback 是第 0 个入参,
|
|
49
|
+
* 则为该 callback 创建的 CallSite 的 argIndex = 0。
|
|
50
|
+
*
|
|
51
|
+
* 对于非 callback 类型的普通调用边,此字段为 undefined。
|
|
52
|
+
*/
|
|
53
|
+
readonly argIndex?: number;
|
|
54
|
+
constructor(id: CallSiteID, s: Stmt, a: Value[] | undefined, ce: FuncID, cr: FuncID, argIndex?: number);
|
|
19
55
|
getCalleeFuncID(): FuncID | undefined;
|
|
20
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* 动态调用点。
|
|
59
|
+
*
|
|
60
|
+
* 表示一条**不确定**的调用边:在调用图构建初期,调用语句的 callee 尚未确定
|
|
61
|
+
* (典型场景为通过函数类型变量发起的间接调用 `fn()`),仅记录一个候选 callee
|
|
62
|
+
* 或留空,等待指针分析(PTA)阶段将实际指向的方法解析出来后,
|
|
63
|
+
* 再通过 {@link CallSiteManager.cloneCallSiteFromDyn} 克隆为确定性的 {@link CallSite}。
|
|
64
|
+
*/
|
|
21
65
|
export declare class DynCallSite implements ICallSite {
|
|
66
|
+
/** 全局唯一标识 */
|
|
22
67
|
id: CallSiteID;
|
|
68
|
+
/** 触发该调用的语句(通常是 ArkInvokeStmt) */
|
|
23
69
|
callStmt: Stmt;
|
|
70
|
+
/** 调用参数列表,若语句不包含参数信息则为 undefined */
|
|
24
71
|
args: Value[] | undefined;
|
|
72
|
+
/** 候选被调用方方法 ID,在创建时可能不确定 */
|
|
25
73
|
potentialCalleeFuncID: FuncID | undefined;
|
|
74
|
+
/** 调用方方法 ID */
|
|
26
75
|
callerFuncID: FuncID;
|
|
27
76
|
constructor(id: CallSiteID, s: Stmt, a: Value[] | undefined, ptcCallee: FuncID | undefined, caller: FuncID);
|
|
28
77
|
getCalleeFuncID(): FuncID | undefined;
|
|
29
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* 调用点全局管理器。
|
|
81
|
+
*
|
|
82
|
+
* 负责为 {@link CallSite} 和 {@link DynCallSite} 分配全局唯一 ID,
|
|
83
|
+
* 维护 ID → 调用点、调用点 → ID 的双向映射,
|
|
84
|
+
* 以及动态调用点到其克隆出的静态调用点集合的映射。
|
|
85
|
+
*/
|
|
30
86
|
export declare class CallSiteManager {
|
|
31
87
|
private idToCallSiteMap;
|
|
32
88
|
private callSiteToIdMap;
|
|
33
89
|
private dynToStaticMap;
|
|
90
|
+
/**
|
|
91
|
+
* 创建并注册一个静态调用点。
|
|
92
|
+
* @param s - 触发调用的语句
|
|
93
|
+
* @param a - 调用参数列表
|
|
94
|
+
* @param ce - 被调用方方法 ID
|
|
95
|
+
* @param cr - 调用方方法 ID
|
|
96
|
+
* @returns 新建的全局唯一静态调用点
|
|
97
|
+
*/
|
|
34
98
|
newCallSite(s: Stmt, a: Value[] | undefined, ce: FuncID, cr: FuncID): CallSite;
|
|
99
|
+
/**
|
|
100
|
+
* 创建并注册一个动态调用点。
|
|
101
|
+
* @param s - 触发调用的语句
|
|
102
|
+
* @param a - 调用参数列表
|
|
103
|
+
* @param ptcCallee - 候选被调用方方法 ID,不确定时传 undefined
|
|
104
|
+
* @param caller - 调用方方法 ID
|
|
105
|
+
* @returns 新建的全局唯一动态调用点
|
|
106
|
+
*/
|
|
35
107
|
newDynCallSite(s: Stmt, a: Value[] | undefined, ptcCallee: FuncID | undefined, caller: FuncID): DynCallSite;
|
|
108
|
+
/**
|
|
109
|
+
* 从一个动态调用点克隆出一个确定 callee 的静态调用点。
|
|
110
|
+
*
|
|
111
|
+
* 同一个动态调用点可被多次克隆(对应指针分析解析出的多个实际 callee),
|
|
112
|
+
* 已存在相同 callee 的克隆时直接复用,避免重复创建。
|
|
113
|
+
*
|
|
114
|
+
* @param dynCallSite - 原始动态调用点
|
|
115
|
+
* @param calleeFuncID - 解析出的确定被调用方方法 ID
|
|
116
|
+
* @returns 克隆出的静态调用点(新建或已存在的)
|
|
117
|
+
*/
|
|
36
118
|
cloneCallSiteFromDyn(dynCallSite: DynCallSite, calleeFuncID: FuncID): CallSite;
|
|
119
|
+
/**
|
|
120
|
+
* 根据 ID 查询调用点。
|
|
121
|
+
* @param id - 调用点全局唯一 ID
|
|
122
|
+
* @returns 对应的调用点,不存在时返回 undefined
|
|
123
|
+
*/
|
|
37
124
|
getCallSiteById(id: CallSiteID): ICallSite | undefined;
|
|
38
125
|
}
|
|
39
126
|
//# sourceMappingURL=CallSite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallSite.d.ts","sourceRoot":"","sources":["../../../src/callgraph/model/CallSite.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,UAAU,CAAC;IACf,QAAQ,EAAE,IAAI,CAAC;IACf,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,IAAI,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,qBAAa,QAAS,YAAW,SAAS;
|
|
1
|
+
{"version":3,"file":"CallSite.d.ts","sourceRoot":"","sources":["../../../src/callgraph/model/CallSite.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAEhC;;;GAGG;AACH,MAAM,WAAW,SAAS;IACtB,aAAa;IACb,EAAE,EAAE,UAAU,CAAC;IACf,kCAAkC;IAClC,QAAQ,EAAE,IAAI,CAAC;IACf,oCAAoC;IACpC,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;IAC1B,eAAe;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,eAAe,IAAI,MAAM,GAAG,SAAS,CAAC;CACzC;AAED;;;;;;;;GAQG;AACH,qBAAa,QAAS,YAAW,SAAS;IACtC,aAAa;IACN,EAAE,EAAE,UAAU,CAAC;IACtB,kCAAkC;IAC3B,QAAQ,EAAE,IAAI,CAAC;IACtB,oCAAoC;IAC7B,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;IACjC,gBAAgB;IACT,YAAY,EAAE,MAAM,CAAC;IAC5B,eAAe;IACR,YAAY,EAAE,MAAM,CAAC;IAC5B;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;gBAEf,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAS/F,eAAe,IAAI,MAAM,GAAG,SAAS;CAG/C;AAED;;;;;;;GAOG;AACH,qBAAa,WAAY,YAAW,SAAS;IACzC,aAAa;IACN,EAAE,EAAE,UAAU,CAAC;IACtB,kCAAkC;IAC3B,QAAQ,EAAE,IAAI,CAAC;IACtB,oCAAoC;IAC7B,IAAI,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;IACjC,4BAA4B;IACrB,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;IACjD,eAAe;IACR,YAAY,EAAE,MAAM,CAAC;gBAEhB,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM;IAQnG,eAAe,IAAI,MAAM,GAAG,SAAS;CAG/C;AAED;;;;;;GAMG;AACH,qBAAa,eAAe;IACxB,OAAO,CAAC,eAAe,CAAyC;IAChE,OAAO,CAAC,eAAe,CAAyC;IAChE,OAAO,CAAC,cAAc,CAA4C;IAElE;;;;;;;OAOG;IACI,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ;IAQrF;;;;;;;OAOG;IACI,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW;IAQlH;;;;;;;;;OASG;IACI,oBAAoB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ;IAgBrF;;;;OAIG;IACI,eAAe,CAAC,EAAE,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS;CAGhE"}
|
|
@@ -15,19 +15,37 @@
|
|
|
15
15
|
*/
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.CallSiteManager = exports.DynCallSite = exports.CallSite = void 0;
|
|
18
|
+
/**
|
|
19
|
+
* 静态调用点。
|
|
20
|
+
*
|
|
21
|
+
* 表示一条**确定**的 `caller → callee` 调用边:在构建调用图时(CHA/RTA/PTA),
|
|
22
|
+
* 调用语句的目标方法已被解析为具体的 calleeFuncID,不再发生变化。
|
|
23
|
+
*
|
|
24
|
+
* 与 {@link DynCallSite} 相对,后者在创建时 callee 未知或仅为候选,
|
|
25
|
+
* 需要在后续指针分析阶段被克隆为确定性的静态调用点。
|
|
26
|
+
*/
|
|
18
27
|
class CallSite {
|
|
19
|
-
constructor(id, s, a, ce, cr) {
|
|
28
|
+
constructor(id, s, a, ce, cr, argIndex) {
|
|
20
29
|
this.id = id;
|
|
21
30
|
this.callStmt = s;
|
|
22
31
|
this.args = a;
|
|
23
32
|
this.calleeFuncID = ce;
|
|
24
33
|
this.callerFuncID = cr;
|
|
34
|
+
this.argIndex = argIndex;
|
|
25
35
|
}
|
|
26
36
|
getCalleeFuncID() {
|
|
27
37
|
return this.calleeFuncID;
|
|
28
38
|
}
|
|
29
39
|
}
|
|
30
40
|
exports.CallSite = CallSite;
|
|
41
|
+
/**
|
|
42
|
+
* 动态调用点。
|
|
43
|
+
*
|
|
44
|
+
* 表示一条**不确定**的调用边:在调用图构建初期,调用语句的 callee 尚未确定
|
|
45
|
+
* (典型场景为通过函数类型变量发起的间接调用 `fn()`),仅记录一个候选 callee
|
|
46
|
+
* 或留空,等待指针分析(PTA)阶段将实际指向的方法解析出来后,
|
|
47
|
+
* 再通过 {@link CallSiteManager.cloneCallSiteFromDyn} 克隆为确定性的 {@link CallSite}。
|
|
48
|
+
*/
|
|
31
49
|
class DynCallSite {
|
|
32
50
|
constructor(id, s, a, ptcCallee, caller) {
|
|
33
51
|
this.id = id;
|
|
@@ -41,12 +59,27 @@ class DynCallSite {
|
|
|
41
59
|
}
|
|
42
60
|
}
|
|
43
61
|
exports.DynCallSite = DynCallSite;
|
|
62
|
+
/**
|
|
63
|
+
* 调用点全局管理器。
|
|
64
|
+
*
|
|
65
|
+
* 负责为 {@link CallSite} 和 {@link DynCallSite} 分配全局唯一 ID,
|
|
66
|
+
* 维护 ID → 调用点、调用点 → ID 的双向映射,
|
|
67
|
+
* 以及动态调用点到其克隆出的静态调用点集合的映射。
|
|
68
|
+
*/
|
|
44
69
|
class CallSiteManager {
|
|
45
70
|
constructor() {
|
|
46
71
|
this.idToCallSiteMap = new Map();
|
|
47
72
|
this.callSiteToIdMap = new Map();
|
|
48
73
|
this.dynToStaticMap = new Map();
|
|
49
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* 创建并注册一个静态调用点。
|
|
77
|
+
* @param s - 触发调用的语句
|
|
78
|
+
* @param a - 调用参数列表
|
|
79
|
+
* @param ce - 被调用方方法 ID
|
|
80
|
+
* @param cr - 调用方方法 ID
|
|
81
|
+
* @returns 新建的全局唯一静态调用点
|
|
82
|
+
*/
|
|
50
83
|
newCallSite(s, a, ce, cr) {
|
|
51
84
|
let id = this.idToCallSiteMap.size;
|
|
52
85
|
let callSite = new CallSite(id, s, a, ce, cr);
|
|
@@ -54,6 +87,14 @@ class CallSiteManager {
|
|
|
54
87
|
this.callSiteToIdMap.set(callSite, id);
|
|
55
88
|
return callSite;
|
|
56
89
|
}
|
|
90
|
+
/**
|
|
91
|
+
* 创建并注册一个动态调用点。
|
|
92
|
+
* @param s - 触发调用的语句
|
|
93
|
+
* @param a - 调用参数列表
|
|
94
|
+
* @param ptcCallee - 候选被调用方方法 ID,不确定时传 undefined
|
|
95
|
+
* @param caller - 调用方方法 ID
|
|
96
|
+
* @returns 新建的全局唯一动态调用点
|
|
97
|
+
*/
|
|
57
98
|
newDynCallSite(s, a, ptcCallee, caller) {
|
|
58
99
|
let id = this.idToCallSiteMap.size;
|
|
59
100
|
let callSite = new DynCallSite(id, s, a, ptcCallee, caller);
|
|
@@ -61,12 +102,20 @@ class CallSiteManager {
|
|
|
61
102
|
this.callSiteToIdMap.set(callSite, id);
|
|
62
103
|
return callSite;
|
|
63
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* 从一个动态调用点克隆出一个确定 callee 的静态调用点。
|
|
107
|
+
*
|
|
108
|
+
* 同一个动态调用点可被多次克隆(对应指针分析解析出的多个实际 callee),
|
|
109
|
+
* 已存在相同 callee 的克隆时直接复用,避免重复创建。
|
|
110
|
+
*
|
|
111
|
+
* @param dynCallSite - 原始动态调用点
|
|
112
|
+
* @param calleeFuncID - 解析出的确定被调用方方法 ID
|
|
113
|
+
* @returns 克隆出的静态调用点(新建或已存在的)
|
|
114
|
+
*/
|
|
64
115
|
cloneCallSiteFromDyn(dynCallSite, calleeFuncID) {
|
|
65
116
|
var _a;
|
|
66
117
|
let clonedCS = (_a = this.dynToStaticMap.get(dynCallSite.id)) !== null && _a !== void 0 ? _a : [];
|
|
67
|
-
let foundCS = clonedCS
|
|
68
|
-
.map(id => this.idToCallSiteMap.get(id))
|
|
69
|
-
.find(cs => cs.calleeFuncID === calleeFuncID);
|
|
118
|
+
let foundCS = clonedCS.map(id => this.idToCallSiteMap.get(id)).find(cs => cs.calleeFuncID === calleeFuncID);
|
|
70
119
|
if (foundCS) {
|
|
71
120
|
return foundCS;
|
|
72
121
|
}
|
|
@@ -75,6 +124,11 @@ class CallSiteManager {
|
|
|
75
124
|
this.dynToStaticMap.set(dynCallSite.id, clonedCS);
|
|
76
125
|
return staticCS;
|
|
77
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* 根据 ID 查询调用点。
|
|
129
|
+
* @param id - 调用点全局唯一 ID
|
|
130
|
+
* @returns 对应的调用点,不存在时返回 undefined
|
|
131
|
+
*/
|
|
78
132
|
getCallSiteById(id) {
|
|
79
133
|
return this.idToCallSiteMap.get(id);
|
|
80
134
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ArkIRTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkIRTransformer.ts"],"names":[],"mappings":"AAeA,OAAO,EAEH,aAAa,EAKb,cAAc,EAGd,aAAa,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAA2E,SAAS,EAAE,MAAM,aAAa,CAAC;AACjH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAA2F,IAAI,EAAE,MAAM,cAAc,CAAC;AACrJ,OAAO,EAAE,SAAS,EAA6E,MAAM,cAAc,CAAC;AAKpH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAO5D,MAAM,MAAM,aAAa,GAAG;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,sBAAsB,EAAE,YAAY,EAAE,CAAC;IACvC,KAAK,EAAE,IAAI,EAAE,CAAC;CACjB,CAAC;AAEF,qBAAa,SAAU,SAAQ,IAAI;gBACnB,IAAI,EAAE,MAAM;IAKjB,QAAQ,IAAI,MAAM;CAG5B;AAED,qBAAa,gBAAgB;IACzB,gBAAuB,2BAA2B,qBAAqB;IACvE,gBAAuB,0BAA0B,yBAAyB;IAC1E,gBAAuB,uCAAuC,SAA0D;IACxH,gBAAuB,wCAAwC,SAA2D;IAC1H,gBAAuB,mCAAmC,SAAuD;IACjH,gBAAuB,4BAA4B,YAAY;IAC/D,gBAAuB,2BAA2B,YAAY;IAC9D,gBAAuB,qBAAqB,WAAW;IAEvD,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;IACpC,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC;IACrC,SAAS,CAAC,eAAe,UAAS;IAClC,SAAS,CAAC,wBAAwB,UAAS;IAC3C,SAAS,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;gBAEvC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS;IAO1D,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC;IAIvB,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;IAI3C,YAAY,IAAI,KAAK;IAIrB,eAAe,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,sBAAsB,CAAC,CAAC;IAInE,aAAa,IAAI,IAAI,EAAE;IAiBvB,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,EAAE;IA+CpC,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,aAAa;IAI1D,SAAS,CAAC,0BAA0B,CAAC,uBAAuB,EAAE,EAAE,CAAC,mBAAmB,GAAG,IAAI,EAAE;IAU7F,SAAS,CAAC,uBAAuB,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,GAAG,IAAI,EAAE;IAYpE,OAAO,CAAC,wBAAwB;IAiDhC,OAAO,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"ArkIRTransformer.d.ts","sourceRoot":"","sources":["../../../src/core/common/ArkIRTransformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -268,12 +268,12 @@ class ArkIRTransformer {
|
|
|
268
268
|
return stmts;
|
|
269
269
|
}
|
|
270
270
|
const { value: paramInitValue, valueOriginalPositions: paramInitPositions, stmts: paramInitStmts } = this.tsNodeToValueAndStmts(paramNode.initializer);
|
|
271
|
-
stmts.push(...paramInitStmts);
|
|
272
271
|
const ifStmt = new Stmt_1.ArkIfStmt(new Expr_1.ArkConditionExpr(paramLocal, ValueUtil_1.ValueUtil.getUndefinedConst(), Expr_1.RelationalBinaryOperator.Equality));
|
|
273
272
|
ifStmt.setOperandOriginalPositions([Position_1.FullPosition.DEFAULT, Position_1.FullPosition.DEFAULT]);
|
|
274
273
|
stmts.push(ifStmt);
|
|
275
274
|
const currConditionalOperatorIndex = this.arkValueTransformer.conditionalOperatorNo++;
|
|
276
275
|
stmts.push(new DummyStmt(ArkIRTransformer.DUMMY_CONDITIONAL_OPERATOR_IF_TRUE_STMT + currConditionalOperatorIndex));
|
|
276
|
+
stmts.push(...paramInitStmts);
|
|
277
277
|
const assignStmt = new Stmt_1.ArkAssignStmt(paramLocal, paramInitValue);
|
|
278
278
|
assignStmt.setOperandOriginalPositions([Position_1.FullPosition.DEFAULT, ...paramInitPositions]);
|
|
279
279
|
stmts.push(assignStmt);
|
|
@@ -527,7 +527,7 @@ class IRInference {
|
|
|
527
527
|
return null;
|
|
528
528
|
}
|
|
529
529
|
static getRealTypes(expr, declaredClass, baseType, method) {
|
|
530
|
-
var _a;
|
|
530
|
+
var _a, _b;
|
|
531
531
|
let realTypes;
|
|
532
532
|
const tmp = [];
|
|
533
533
|
if (method === null || method === void 0 ? void 0 : method.getGenericTypes()) {
|
|
@@ -546,7 +546,7 @@ class IRInference {
|
|
|
546
546
|
realTypes = [new Type_1.ClassType(declaredClass === null || declaredClass === void 0 ? void 0 : declaredClass.getSignature())];
|
|
547
547
|
}
|
|
548
548
|
else {
|
|
549
|
-
realTypes = (_a =
|
|
549
|
+
realTypes = (_b = (_a = expr.getRealGenericTypes()) !== null && _a !== void 0 ? _a : baseType.getRealGenericTypes()) !== null && _b !== void 0 ? _b : declaredClass === null || declaredClass === void 0 ? void 0 : declaredClass.getRealTypes();
|
|
550
550
|
}
|
|
551
551
|
return realTypes;
|
|
552
552
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/TypeInference.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TypeInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/TypeInference.ts"],"names":[],"mappings":"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"}
|
|
@@ -1122,6 +1122,9 @@ class TypeInference {
|
|
|
1122
1122
|
if (!(declare instanceof Type_1.ClassType) || !(real instanceof Type_1.ClassType)) {
|
|
1123
1123
|
return false;
|
|
1124
1124
|
}
|
|
1125
|
+
if (real.getClassSignature().getClassName() === declare.getClassSignature().getClassName()) {
|
|
1126
|
+
return false;
|
|
1127
|
+
}
|
|
1125
1128
|
const fatherClass = scene.getClass(declare.getClassSignature());
|
|
1126
1129
|
let childClass = scene.getClass(real.getClassSignature());
|
|
1127
1130
|
while (childClass) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwitchBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/SwitchBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAsC,MAAM,cAAc,CAAC;AAKhF;;GAEG;AACH,qBAAa,aAAa;IACf,WAAW,CACd,sBAAsB,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,EACrD,0BAA0B,EAAE,YAAY,EAAE,EAC1C,gCAAgC,EAAE,aAAa,EAAE,EAAE,EACnD,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,GAC/B,IAAI;IA0CP,OAAO,CAAC,wBAAwB;IAwChC,OAAO,CAAC,uBAAuB;
|
|
1
|
+
{"version":3,"file":"SwitchBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/SwitchBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAsC,MAAM,cAAc,CAAC;AAKhF;;GAEG;AACH,qBAAa,aAAa;IACf,WAAW,CACd,sBAAsB,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,EACrD,0BAA0B,EAAE,YAAY,EAAE,EAC1C,gCAAgC,EAAE,aAAa,EAAE,EAAE,EACnD,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,GAC/B,IAAI;IA0CP,OAAO,CAAC,wBAAwB;IAwChC,OAAO,CAAC,uBAAuB;CAwDlC"}
|
|
@@ -109,7 +109,17 @@ class SwitchBuilder {
|
|
|
109
109
|
const expectedSuccessorsOfCaseIfBlock = [];
|
|
110
110
|
const defaultStmtBuilder = switchStmtBuilder.default;
|
|
111
111
|
if (defaultStmtBuilder && defaultStmtBuilder.block) {
|
|
112
|
-
|
|
112
|
+
// default may appear before later cases; identify by block identity, not list position
|
|
113
|
+
if (!blockBuilderToCfgBlock.has(defaultStmtBuilder.block)) {
|
|
114
|
+
logger.error(`can't find basicBlock corresponding to the default blockBuilder.`);
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
const defaultBasicBlock = blockBuilderToCfgBlock.get(defaultStmtBuilder.block);
|
|
118
|
+
const defaultIndex = successorsOfBlockContainSwitch.indexOf(defaultBasicBlock);
|
|
119
|
+
if (defaultIndex !== -1) {
|
|
120
|
+
successorsOfBlockContainSwitch.splice(defaultIndex, 1);
|
|
121
|
+
}
|
|
122
|
+
expectedSuccessorsOfCaseIfBlock.push(defaultBasicBlock);
|
|
113
123
|
}
|
|
114
124
|
else {
|
|
115
125
|
const afterSwitchStmtBuilder = switchStmtBuilder.afterSwitch;
|
|
@@ -94,6 +94,11 @@ export declare class ViewTreeImpl extends TreeNodeStack implements ViewTree {
|
|
|
94
94
|
private buildViewStatus;
|
|
95
95
|
private stateValues;
|
|
96
96
|
private fieldTypes;
|
|
97
|
+
private containsBuilderParam;
|
|
98
|
+
private static readonly buildingTrees;
|
|
99
|
+
static isBuilding(sig: MethodSignature | ClassSignature): boolean;
|
|
100
|
+
static beginBatchBuild(): void;
|
|
101
|
+
static endBatchBuild(): void;
|
|
97
102
|
/**
|
|
98
103
|
* @internal
|
|
99
104
|
*/
|
|
@@ -158,6 +163,8 @@ export declare class ViewTreeImpl extends TreeNodeStack implements ViewTree {
|
|
|
158
163
|
* @internal
|
|
159
164
|
*/
|
|
160
165
|
private addCustomComponentNode;
|
|
166
|
+
/** CustomComponent leaf when ArkClass is gone; signature from Scene.customComponentMap. */
|
|
167
|
+
private addCustomComponentStubNode;
|
|
161
168
|
private cloneBuilderParamNode;
|
|
162
169
|
/**
|
|
163
170
|
* @internal
|
|
@@ -175,15 +182,18 @@ export declare class ViewTreeImpl extends TreeNodeStack implements ViewTree {
|
|
|
175
182
|
private forEachCreationParser;
|
|
176
183
|
private repeatCreationParser;
|
|
177
184
|
private ifBranchCreationParser;
|
|
178
|
-
private
|
|
179
|
-
|
|
185
|
+
private _createParsers;
|
|
186
|
+
private get COMPONENT_CREATE_PARSERS();
|
|
187
|
+
private _behaviorParsers;
|
|
188
|
+
get COMPONENT_BEHAVIOR_PARSERS(): Map<string, (local2Node: Map<Local, ViewTreeNodeImpl>, stmt: Stmt, expr: ArkInstanceInvokeExpr) => ViewTreeNodeImpl | undefined>;
|
|
180
189
|
private componentCreateParse;
|
|
181
190
|
private parseStaticInvokeExpr;
|
|
182
191
|
/**
|
|
183
192
|
* $temp4.margin({ top: 20 });
|
|
184
|
-
* @param viewTree
|
|
185
193
|
* @param local2Node
|
|
194
|
+
* @param stmt
|
|
186
195
|
* @param expr
|
|
196
|
+
* @param shouldPush
|
|
187
197
|
*/
|
|
188
198
|
private parseInstanceInvokeExpr;
|
|
189
199
|
private parsePtrInvokeExpr;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewTreeBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/ViewTreeBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAGH,qBAAqB,EAKxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAe,mBAAmB,EAAc,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAgC,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAwC,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAkB7E,OAAO,EAAE,QAAQ,EAAiB,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3E,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ViewTreeBuilder.d.ts","sourceRoot":"","sources":["../../../../src/core/graph/builder/ViewTreeBuilder.ts"],"names":[],"mappings":"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"}
|