arkanalyzer 1.0.18 → 1.0.19
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/callgraph/pointerAnalysis/Pag.d.ts +3 -2
- package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +5 -3
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +4 -4
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +5 -4
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +2 -0
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +11 -9
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +8 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +27 -3
- package/lib/callgraph/pointerAnalysis/PtsDS.d.ts +30 -6
- package/lib/callgraph/pointerAnalysis/PtsDS.d.ts.map +1 -1
- package/lib/callgraph/pointerAnalysis/PtsDS.js +86 -5
- package/lib/core/base/Stmt.d.ts +3 -0
- package/lib/core/base/Stmt.d.ts.map +1 -1
- package/lib/core/base/Stmt.js +34 -0
- package/lib/core/base/TypeExpr.d.ts +72 -0
- package/lib/core/base/TypeExpr.d.ts.map +1 -0
- package/lib/core/base/TypeExpr.js +155 -0
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +4 -0
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +23 -8
- package/lib/core/common/IRInference.d.ts +5 -1
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +65 -0
- package/lib/core/common/ModelUtils.d.ts +3 -1
- package/lib/core/common/ModelUtils.d.ts.map +1 -1
- package/lib/core/common/ModelUtils.js +18 -0
- package/lib/core/common/TypeInference.d.ts +5 -0
- package/lib/core/common/TypeInference.d.ts.map +1 -1
- package/lib/core/common/TypeInference.js +56 -7
- package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
- package/lib/core/model/builder/builderUtils.js +52 -4
- package/lib/save/source/SourceTransformer.d.ts +2 -0
- package/lib/save/source/SourceTransformer.d.ts.map +1 -1
- package/lib/save/source/SourceTransformer.js +43 -5
- package/lib/utils/SparseBitVector.d.ts +11 -2
- package/lib/utils/SparseBitVector.d.ts.map +1 -1
- package/lib/utils/SparseBitVector.js +70 -3
- package/package.json +1 -1
|
@@ -8,6 +8,7 @@ import { Local } from '../../core/base/Local';
|
|
|
8
8
|
import { MethodSignature } from '../../core/model/ArkSignature';
|
|
9
9
|
import { ContextID } from './Context';
|
|
10
10
|
import { ExportInfo } from '../../core/model/ArkExport';
|
|
11
|
+
import { IPtsCollection } from './PtsDS';
|
|
11
12
|
export type PagNodeType = Value;
|
|
12
13
|
export declare enum PagEdgeKind {
|
|
13
14
|
Address = 0,
|
|
@@ -102,9 +103,9 @@ export declare class PagNode extends BaseNode {
|
|
|
102
103
|
addThisInEdge(e: ThisPagEdge): void;
|
|
103
104
|
addThisOutEdge(e: ThisPagEdge): void;
|
|
104
105
|
getValue(): Value;
|
|
105
|
-
getPointTo():
|
|
106
|
+
getPointTo(): IPtsCollection<NodeID>;
|
|
106
107
|
addPointToElement(node: NodeID): void;
|
|
107
|
-
setPointTo(pts:
|
|
108
|
+
setPointTo(pts: IPtsCollection<NodeID>): void;
|
|
108
109
|
getOutEdges(): {
|
|
109
110
|
AddressEdge: PagEdgeSet;
|
|
110
111
|
CopyEdge: PagEdgeSet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pag.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/Pag.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AACzG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAiB,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,YAAY,EAA+B,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzI,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAK9C,OAAO,EAAiD,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAC/G,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"Pag.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/Pag.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -52,6 +52,7 @@ const logger_1 = __importStar(require("../../utils/logger"));
|
|
|
52
52
|
const TSConst_1 = require("../../core/common/TSConst");
|
|
53
53
|
const ArkExport_1 = require("../../core/model/ArkExport");
|
|
54
54
|
const PTAUtils_1 = require("./PTAUtils");
|
|
55
|
+
const PointerAnalysisConfig_1 = require("./PointerAnalysisConfig");
|
|
55
56
|
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'PTA');
|
|
56
57
|
/*
|
|
57
58
|
* Implementation of pointer-to assignment graph for pointer analysis
|
|
@@ -163,7 +164,8 @@ class PagNode extends BaseExplicitGraph_1.BaseNode {
|
|
|
163
164
|
this.cid = cid;
|
|
164
165
|
this.value = value;
|
|
165
166
|
this.stmt = s;
|
|
166
|
-
|
|
167
|
+
let ptaConfig = PointerAnalysisConfig_1.PointerAnalysisConfig.getInstance();
|
|
168
|
+
this.pointTo = new ptaConfig.ptsCollectionCtor();
|
|
167
169
|
}
|
|
168
170
|
getBasePt() {
|
|
169
171
|
return this.basePt;
|
|
@@ -271,7 +273,7 @@ class PagNode extends BaseExplicitGraph_1.BaseNode {
|
|
|
271
273
|
return this.pointTo;
|
|
272
274
|
}
|
|
273
275
|
addPointToElement(node) {
|
|
274
|
-
this.pointTo.
|
|
276
|
+
this.pointTo.insert(node);
|
|
275
277
|
}
|
|
276
278
|
setPointTo(pts) {
|
|
277
279
|
this.pointTo = pts;
|
|
@@ -7,7 +7,7 @@ import { Local } from '../../core/base/Local';
|
|
|
7
7
|
import { NodeID } from '../../core/graph/BaseExplicitGraph';
|
|
8
8
|
import { ContextID } from './Context';
|
|
9
9
|
import { Pag, FuncPag, PagNode, StorageType, InterFuncPag, PagNodeType } from './Pag';
|
|
10
|
-
import {
|
|
10
|
+
import { IPtsCollection } from './PtsDS';
|
|
11
11
|
export declare class CSFuncID {
|
|
12
12
|
cid: ContextID;
|
|
13
13
|
funcID: FuncID;
|
|
@@ -67,8 +67,8 @@ export declare class PagBuilder {
|
|
|
67
67
|
addUnknownCallSite(funcPag: FuncPag, funcID: FuncID): void;
|
|
68
68
|
addDynamicCallEdge(cs: DynCallSite | CallSite, baseClassPTNode: NodeID, cid: ContextID): NodeID[];
|
|
69
69
|
private getDynamicCallee;
|
|
70
|
-
addUpdatedNode(nodeID: NodeID, diffPT:
|
|
71
|
-
getUpdatedNodes(): Map<number,
|
|
70
|
+
addUpdatedNode(nodeID: NodeID, diffPT: IPtsCollection<NodeID>): void;
|
|
71
|
+
getUpdatedNodes(): Map<number, IPtsCollection<number>>;
|
|
72
72
|
resetUpdatedNodes(): void;
|
|
73
73
|
handleUnkownDynamicCall(cs: DynCallSite, cid: ContextID): NodeID[];
|
|
74
74
|
handleUnprocessedCallSites(processedCallSites: Set<DynCallSite>): NodeID[];
|
|
@@ -133,7 +133,7 @@ export declare class PagBuilder {
|
|
|
133
133
|
private stmtIsWriteKind;
|
|
134
134
|
private stmtIsReadKind;
|
|
135
135
|
addToDynamicCallSite(funcPag: FuncPag, cs: DynCallSite): void;
|
|
136
|
-
setPtForNode(node: NodeID, pts:
|
|
136
|
+
setPtForNode(node: NodeID, pts: IPtsCollection<NodeID> | undefined): void;
|
|
137
137
|
getRealThisLocal(input: Local, funcId: FuncID): Local;
|
|
138
138
|
doStat(): void;
|
|
139
139
|
printStat(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PagBuilder.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PagBuilder.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAiB,QAAQ,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AAChH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,IAAI,EAA+C,MAAM,sBAAsB,CAAA;AAExF,OAAO,EAA0F,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzI,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG9C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAM5D,OAAO,EAAE,SAAS,EAAuC,MAAM,WAAW,CAAC;AAC3E,OAAO,
|
|
1
|
+
{"version":3,"file":"PagBuilder.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PagBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -49,10 +49,10 @@ const Constant_1 = require("../../core/base/Constant");
|
|
|
49
49
|
const Statistics_1 = require("../common/Statistics");
|
|
50
50
|
const Context_1 = require("./Context");
|
|
51
51
|
const Pag_1 = require("./Pag");
|
|
52
|
-
const PtsDS_1 = require("./PtsDS");
|
|
53
52
|
const TSConst_1 = require("../../core/common/TSConst");
|
|
54
53
|
const Const_1 = require("../../core/common/Const");
|
|
55
54
|
const PTAUtils_1 = require("./PTAUtils");
|
|
55
|
+
const PointerAnalysisConfig_1 = require("./PointerAnalysisConfig");
|
|
56
56
|
const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'PTA');
|
|
57
57
|
class CSFuncID {
|
|
58
58
|
constructor(cid, fid) {
|
|
@@ -568,7 +568,8 @@ class PagBuilder {
|
|
|
568
568
|
}
|
|
569
569
|
addUpdatedNode(nodeID, diffPT) {
|
|
570
570
|
var _a;
|
|
571
|
-
let
|
|
571
|
+
let ptaConfig = PointerAnalysisConfig_1.PointerAnalysisConfig.getInstance();
|
|
572
|
+
let updatedNode = (_a = this.updatedNodesThisRound.get(nodeID)) !== null && _a !== void 0 ? _a : new ptaConfig.ptsCollectionCtor();
|
|
572
573
|
updatedNode.union(diffPT);
|
|
573
574
|
this.updatedNodesThisRound.set(nodeID, updatedNode);
|
|
574
575
|
}
|
|
@@ -1218,7 +1219,7 @@ class PagBuilder {
|
|
|
1218
1219
|
if (!pts) {
|
|
1219
1220
|
return;
|
|
1220
1221
|
}
|
|
1221
|
-
this.pag.getNode(node).setPointTo(pts
|
|
1222
|
+
this.pag.getNode(node).setPointTo(pts);
|
|
1222
1223
|
}
|
|
1223
1224
|
getRealThisLocal(input, funcId) {
|
|
1224
1225
|
var _a;
|
|
@@ -7,6 +7,7 @@ import { Type } from '../../core/base/Type';
|
|
|
7
7
|
import { Stmt } from '../../core/base/Stmt';
|
|
8
8
|
import { Pag } from './Pag';
|
|
9
9
|
import { PointerAnalysisConfig } from './PointerAnalysisConfig';
|
|
10
|
+
import { DiffPTData, IPtsCollection } from './PtsDS';
|
|
10
11
|
export declare class PointerAnalysis extends AbstractAnalysis {
|
|
11
12
|
private pag;
|
|
12
13
|
private pagBuilder;
|
|
@@ -21,6 +22,7 @@ export declare class PointerAnalysis extends AbstractAnalysis {
|
|
|
21
22
|
protected init(): void;
|
|
22
23
|
start(): void;
|
|
23
24
|
private postProcess;
|
|
25
|
+
getPTD(): DiffPTData<NodeID, NodeID, IPtsCollection<NodeID>>;
|
|
24
26
|
getStat(): string;
|
|
25
27
|
protected preProcessMethod(funcID: FuncID): CallSite[];
|
|
26
28
|
setEntries(fIds: FuncID[]): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointerAnalysis.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PointerAnalysis.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAG5D,OAAO,EAAE,SAAS,EAAiB,QAAQ,EAAe,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAa,IAAI,EAAe,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAI5C,OAAO,EAAE,GAAG,EAAgF,MAAM,OAAO,CAAC;AAE1G,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"PointerAnalysis.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PointerAnalysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -61,7 +61,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
61
61
|
super(s);
|
|
62
62
|
this.pag = p;
|
|
63
63
|
this.cg = cg;
|
|
64
|
-
this.ptd = new PtsDS_1.DiffPTData(
|
|
64
|
+
this.ptd = new PtsDS_1.DiffPTData(config.ptsCollectionCtor);
|
|
65
65
|
this.pagBuilder = new PagBuilder_1.PagBuilder(this.pag, this.cg, s, config.kLimit);
|
|
66
66
|
this.cgBuilder = new CallGraphBuilder_1.CallGraphBuilder(this.cg, s);
|
|
67
67
|
this.ptaStat = new Statistics_1.PTAStat(this);
|
|
@@ -73,7 +73,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
73
73
|
cgBuilder.buildDirectCallGraphForScene();
|
|
74
74
|
let pag = new Pag_1.Pag();
|
|
75
75
|
if (!config) {
|
|
76
|
-
config =
|
|
76
|
+
config = PointerAnalysisConfig_1.PointerAnalysisConfig.create(1, 'out/', false, false);
|
|
77
77
|
}
|
|
78
78
|
const dummyMainCreator = new DummyMainCreater_1.DummyMainCreater(projectScene);
|
|
79
79
|
dummyMainCreator.createDummyMain();
|
|
@@ -116,6 +116,9 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
116
116
|
this.dumpUnhandledFunctions();
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
+
getPTD() {
|
|
120
|
+
return this.ptd;
|
|
121
|
+
}
|
|
119
122
|
getStat() {
|
|
120
123
|
let ret = this.cg.getStat();
|
|
121
124
|
ret += '\n' + this.pagBuilder.getStat();
|
|
@@ -473,7 +476,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
473
476
|
}
|
|
474
477
|
}
|
|
475
478
|
detectTypeDiff(nodeId) {
|
|
476
|
-
var _a;
|
|
479
|
+
var _a, _b;
|
|
477
480
|
if (this.config.detectTypeDiff === false) {
|
|
478
481
|
return;
|
|
479
482
|
}
|
|
@@ -487,15 +490,14 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
487
490
|
}
|
|
488
491
|
let findSameType = false;
|
|
489
492
|
let pts = node.getPointTo();
|
|
490
|
-
if (pts.
|
|
493
|
+
if (pts.count() === 0) {
|
|
491
494
|
return;
|
|
492
495
|
}
|
|
493
|
-
|
|
494
|
-
var _a;
|
|
496
|
+
for (let pt of pts) {
|
|
495
497
|
let ptNode = this.pag.getNode(pt);
|
|
496
498
|
let type = ptNode.getValue().getType();
|
|
497
499
|
if (type.toString() !== origType.toString()) {
|
|
498
|
-
let diffSet = (
|
|
500
|
+
let diffSet = (_b = this.typeDiffMap.get(value)) !== null && _b !== void 0 ? _b : new Set();
|
|
499
501
|
this.typeDiffMap.set(value, diffSet);
|
|
500
502
|
if (!diffSet.has(type)) {
|
|
501
503
|
diffSet.add(type);
|
|
@@ -504,7 +506,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
|
|
|
504
506
|
else {
|
|
505
507
|
findSameType = true;
|
|
506
508
|
}
|
|
507
|
-
}
|
|
509
|
+
}
|
|
508
510
|
// If find pts to original type,
|
|
509
511
|
// need add original type back since it is a correct type
|
|
510
512
|
let diffSet = this.typeDiffMap.get(value);
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
+
import { IPtsCollection, PtsCollectionType } from './PtsDS';
|
|
2
|
+
import { NodeID } from '../../core/graph/BaseExplicitGraph';
|
|
1
3
|
export declare class PointerAnalysisConfig {
|
|
4
|
+
private static instance;
|
|
2
5
|
kLimit: number;
|
|
3
6
|
outputDirectory: string;
|
|
4
7
|
detectTypeDiff: boolean;
|
|
5
8
|
dotDump: boolean;
|
|
6
9
|
unhandledFuncDump: boolean;
|
|
7
|
-
|
|
10
|
+
ptsCollectionType: PtsCollectionType;
|
|
11
|
+
ptsCollectionCtor: new () => IPtsCollection<NodeID>;
|
|
12
|
+
constructor(kLimit: number, outputDirectory: string, detectTypeDiff?: boolean, dotDump?: boolean, unhandledFuncDump?: boolean, ptsCoType?: PtsCollectionType);
|
|
13
|
+
static create(kLimit: number, outputDirectory: string, detectTypeDiff?: boolean, dotDump?: boolean, unhandledFuncDump?: boolean, ptsCoType?: PtsCollectionType): PointerAnalysisConfig;
|
|
14
|
+
static getInstance(): PointerAnalysisConfig;
|
|
8
15
|
}
|
|
9
16
|
//# sourceMappingURL=PointerAnalysisConfig.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointerAnalysisConfig.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PointerAnalysisConfig.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PointerAnalysisConfig.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PointerAnalysisConfig.ts"],"names":[],"mappings":"AAgBA,OAAO,EAA2B,cAAc,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAE5D,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAwB;IAExC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,iBAAiB,EAAE,UAAU,cAAc,CAAC,MAAM,CAAC,CAAC;gBAM/C,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,GAAE,OAAe,EAChF,OAAO,GAAE,OAAe,EAAE,iBAAiB,GAAE,OAAe,EAAE,SAAS,oBAAwB;WAsBrF,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,GAAE,OAAe,EACzF,OAAO,GAAE,OAAe,EAAE,iBAAiB,GAAE,OAAe,EAAE,SAAS,oBAAwB,GAAG,qBAAqB;WAQ7G,WAAW,IAAI,qBAAqB;CAMrD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -39,19 +39,43 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
40
|
exports.PointerAnalysisConfig = void 0;
|
|
41
41
|
const fs = __importStar(require("fs"));
|
|
42
|
+
const PtsDS_1 = require("./PtsDS");
|
|
42
43
|
class PointerAnalysisConfig {
|
|
43
|
-
|
|
44
|
+
/*
|
|
45
|
+
* Note: DO NOT use `new PointerAnalysisConfig` to initialize ptaconfig
|
|
46
|
+
* Use PointerAnalysisConfig.create() for singleton pattern
|
|
47
|
+
*/
|
|
48
|
+
constructor(kLimit, outputDirectory, detectTypeDiff = false, dotDump = false, unhandledFuncDump = false, ptsCoType = PtsDS_1.PtsCollectionType.Set) {
|
|
44
49
|
if (kLimit > 5) {
|
|
45
|
-
throw new Error(
|
|
50
|
+
throw new Error('K Limit too large');
|
|
46
51
|
}
|
|
47
52
|
this.kLimit = kLimit;
|
|
48
53
|
this.outputDirectory = outputDirectory;
|
|
49
54
|
this.detectTypeDiff = detectTypeDiff;
|
|
50
55
|
this.dotDump = dotDump;
|
|
51
56
|
this.unhandledFuncDump = unhandledFuncDump;
|
|
57
|
+
this.ptsCollectionType = ptsCoType;
|
|
58
|
+
this.ptsCollectionCtor = (0, PtsDS_1.createPtsCollectionCtor)(ptsCoType);
|
|
52
59
|
if (!fs.existsSync(outputDirectory)) {
|
|
53
60
|
fs.mkdirSync(outputDirectory, { recursive: true });
|
|
54
61
|
}
|
|
55
62
|
}
|
|
63
|
+
/*
|
|
64
|
+
* Create Singleton instance
|
|
65
|
+
* The instance can be created multi-times and be overwrited
|
|
66
|
+
*/
|
|
67
|
+
static create(kLimit, outputDirectory, detectTypeDiff = false, dotDump = false, unhandledFuncDump = false, ptsCoType = PtsDS_1.PtsCollectionType.Set) {
|
|
68
|
+
PointerAnalysisConfig.instance = new PointerAnalysisConfig(kLimit, outputDirectory, detectTypeDiff, dotDump, unhandledFuncDump, ptsCoType);
|
|
69
|
+
return PointerAnalysisConfig.instance;
|
|
70
|
+
}
|
|
71
|
+
/*
|
|
72
|
+
* Get Singleton instance
|
|
73
|
+
*/
|
|
74
|
+
static getInstance() {
|
|
75
|
+
if (!PointerAnalysisConfig.instance) {
|
|
76
|
+
throw new Error('PTA config: instance is not existing');
|
|
77
|
+
}
|
|
78
|
+
return PointerAnalysisConfig.instance;
|
|
79
|
+
}
|
|
56
80
|
}
|
|
57
81
|
exports.PointerAnalysisConfig = PointerAnalysisConfig;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
interface IPtsCollection<T extends Idx> {
|
|
1
|
+
import { SparseBitVector } from '../../utils/SparseBitVector';
|
|
2
|
+
type Idx = number;
|
|
3
|
+
export interface IPtsCollection<T extends Idx> {
|
|
4
4
|
contains(elem: T): boolean;
|
|
5
5
|
insert(elem: T): boolean;
|
|
6
6
|
remove(elem: T): boolean;
|
|
@@ -12,8 +12,10 @@ interface IPtsCollection<T extends Idx> {
|
|
|
12
12
|
isEmpty(): boolean;
|
|
13
13
|
superset(other: this): boolean;
|
|
14
14
|
intersect(other: this): boolean;
|
|
15
|
+
getProtoPtsSet(): any;
|
|
15
16
|
[Symbol.iterator](): IterableIterator<T>;
|
|
16
17
|
}
|
|
18
|
+
export declare function createPtsCollectionCtor<T extends Idx>(type: PtsCollectionType): new () => IPtsCollection<T>;
|
|
17
19
|
export declare class PtsSet<T extends Idx> implements IPtsCollection<T> {
|
|
18
20
|
pts: Set<T>;
|
|
19
21
|
constructor();
|
|
@@ -31,11 +33,32 @@ export declare class PtsSet<T extends Idx> implements IPtsCollection<T> {
|
|
|
31
33
|
getProtoPtsSet(): Set<T>;
|
|
32
34
|
[Symbol.iterator](): IterableIterator<T>;
|
|
33
35
|
}
|
|
36
|
+
export declare class PtsBV<T extends Idx> implements IPtsCollection<T> {
|
|
37
|
+
pts: SparseBitVector;
|
|
38
|
+
constructor();
|
|
39
|
+
contains(elem: T): boolean;
|
|
40
|
+
insert(elem: T): boolean;
|
|
41
|
+
remove(elem: T): boolean;
|
|
42
|
+
clone(): this;
|
|
43
|
+
union(other: this): boolean;
|
|
44
|
+
subtract(other: this): boolean;
|
|
45
|
+
clear(): void;
|
|
46
|
+
count(): number;
|
|
47
|
+
isEmpty(): boolean;
|
|
48
|
+
superset(other: this): boolean;
|
|
49
|
+
intersect(other: this): boolean;
|
|
50
|
+
getProtoPtsSet(): SparseBitVector;
|
|
51
|
+
[Symbol.iterator](): IterableIterator<T>;
|
|
52
|
+
}
|
|
53
|
+
export declare enum PtsCollectionType {
|
|
54
|
+
Set = 0,
|
|
55
|
+
BitVector = 1
|
|
56
|
+
}
|
|
34
57
|
export declare class DiffPTData<K, D extends Idx, DS extends IPtsCollection<D>> {
|
|
35
58
|
private DSCreator;
|
|
36
|
-
diffPtsMap
|
|
37
|
-
propaPtsMap
|
|
38
|
-
constructor(DSCreator: new () => DS);
|
|
59
|
+
private diffPtsMap;
|
|
60
|
+
private propaPtsMap;
|
|
61
|
+
constructor(DSCreator: (new () => DS));
|
|
39
62
|
clear(): void;
|
|
40
63
|
addPts(v: K, elem: D): boolean;
|
|
41
64
|
resetElem(v: K): boolean;
|
|
@@ -46,6 +69,7 @@ export declare class DiffPTData<K, D extends Idx, DS extends IPtsCollection<D>>
|
|
|
46
69
|
getDiffPts(v: K): DS | undefined;
|
|
47
70
|
getMutDiffPts(v: K): DS | undefined;
|
|
48
71
|
getPropaPts(v: K): DS | undefined;
|
|
72
|
+
getAllPropaPts(): Map<K, DS>;
|
|
49
73
|
getPropaPtsMut(v: K): DS;
|
|
50
74
|
flush(v: K): void;
|
|
51
75
|
clearPts(v: K): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PtsDS.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PtsDS.ts"],"names":[],"mappings":"AAeA,
|
|
1
|
+
{"version":3,"file":"PtsDS.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PtsDS.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/*
|
|
3
|
-
* Copyright (c) 2024 Huawei Device Co., Ltd.
|
|
3
|
+
* Copyright (c) 2024-2025 Huawei Device Co., Ltd.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
6
6
|
* You may obtain a copy of the License at
|
|
@@ -14,14 +14,25 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.DiffPTData = exports.PtsSet = void 0;
|
|
17
|
+
exports.DiffPTData = exports.PtsCollectionType = exports.PtsBV = exports.PtsSet = exports.createPtsCollectionCtor = void 0;
|
|
18
|
+
const SparseBitVector_1 = require("../../utils/SparseBitVector");
|
|
19
|
+
/*
|
|
20
|
+
* Return PtsSet or PtsBV 's constructor by input type
|
|
21
|
+
*/
|
|
22
|
+
function createPtsCollectionCtor(type) {
|
|
23
|
+
if (type === PtsCollectionType.Set) {
|
|
24
|
+
return PtsSet;
|
|
25
|
+
}
|
|
26
|
+
else if (type === PtsCollectionType.BitVector) {
|
|
27
|
+
return PtsBV;
|
|
28
|
+
}
|
|
29
|
+
throw new Error(`Unsupported pts collection type: ${type}`);
|
|
30
|
+
}
|
|
31
|
+
exports.createPtsCollectionCtor = createPtsCollectionCtor;
|
|
18
32
|
/*
|
|
19
33
|
* A simple set to store pts data
|
|
20
34
|
*/
|
|
21
35
|
class PtsSet {
|
|
22
|
-
// static new<T extends Idx>(this: new () => PtsSet<T>): PtsSet<T> {
|
|
23
|
-
// return new this();
|
|
24
|
-
// }
|
|
25
36
|
constructor() {
|
|
26
37
|
this.pts = new Set();
|
|
27
38
|
}
|
|
@@ -97,6 +108,73 @@ class PtsSet {
|
|
|
97
108
|
}
|
|
98
109
|
}
|
|
99
110
|
exports.PtsSet = PtsSet;
|
|
111
|
+
class PtsBV {
|
|
112
|
+
constructor() {
|
|
113
|
+
this.pts = new SparseBitVector_1.SparseBitVector();
|
|
114
|
+
}
|
|
115
|
+
contains(elem) {
|
|
116
|
+
return this.pts.test(elem);
|
|
117
|
+
}
|
|
118
|
+
insert(elem) {
|
|
119
|
+
this.pts.set(elem);
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
remove(elem) {
|
|
123
|
+
this.pts.reset(elem);
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
clone() {
|
|
127
|
+
let cloned = new PtsBV();
|
|
128
|
+
cloned.pts = this.pts.clone();
|
|
129
|
+
return cloned;
|
|
130
|
+
}
|
|
131
|
+
union(other) {
|
|
132
|
+
return this.pts.unionWith(other.pts);
|
|
133
|
+
}
|
|
134
|
+
subtract(other) {
|
|
135
|
+
return this.pts.subtractWith(other.pts);
|
|
136
|
+
}
|
|
137
|
+
clear() {
|
|
138
|
+
this.pts.clear();
|
|
139
|
+
}
|
|
140
|
+
count() {
|
|
141
|
+
return this.pts.count();
|
|
142
|
+
}
|
|
143
|
+
isEmpty() {
|
|
144
|
+
return this.pts.isEmpty();
|
|
145
|
+
}
|
|
146
|
+
// If current collection is a super set of other
|
|
147
|
+
superset(other) {
|
|
148
|
+
for (const elem of other.pts) {
|
|
149
|
+
if (!this.pts.test(elem)) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
// If current collection is intersect with other
|
|
156
|
+
intersect(other) {
|
|
157
|
+
for (const elem of other.pts) {
|
|
158
|
+
if (this.pts.test(elem)) {
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
getProtoPtsSet() {
|
|
165
|
+
return this.pts;
|
|
166
|
+
}
|
|
167
|
+
[Symbol.iterator]() {
|
|
168
|
+
return this.pts[Symbol.iterator]();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
exports.PtsBV = PtsBV;
|
|
172
|
+
var PtsCollectionType;
|
|
173
|
+
(function (PtsCollectionType) {
|
|
174
|
+
PtsCollectionType[PtsCollectionType["Set"] = 0] = "Set";
|
|
175
|
+
PtsCollectionType[PtsCollectionType["BitVector"] = 1] = "BitVector";
|
|
176
|
+
})(PtsCollectionType = exports.PtsCollectionType || (exports.PtsCollectionType = {}));
|
|
177
|
+
;
|
|
100
178
|
class DiffPTData {
|
|
101
179
|
constructor(DSCreator) {
|
|
102
180
|
this.DSCreator = DSCreator;
|
|
@@ -180,6 +258,9 @@ class DiffPTData {
|
|
|
180
258
|
getPropaPts(v) {
|
|
181
259
|
return this.propaPtsMap.get(v);
|
|
182
260
|
}
|
|
261
|
+
getAllPropaPts() {
|
|
262
|
+
return this.propaPtsMap;
|
|
263
|
+
}
|
|
183
264
|
getPropaPtsMut(v) {
|
|
184
265
|
if (!this.propaPtsMap.has(v)) {
|
|
185
266
|
this.propaPtsMap.set(v, new this.DSCreator());
|
package/lib/core/base/Stmt.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ import { Value } from './Value';
|
|
|
5
5
|
import { FullPosition, LineColPosition } from './Position';
|
|
6
6
|
import { ArkMetadata, ArkMetadataKind, ArkMetadataType } from '../model/ArkMetadata';
|
|
7
7
|
import { AliasType } from './Type';
|
|
8
|
+
import { AbstractTypeExpr } from './TypeExpr';
|
|
8
9
|
/**
|
|
9
10
|
* @category core/base/stmt
|
|
10
11
|
*/
|
|
@@ -93,6 +94,7 @@ export declare abstract class Stmt {
|
|
|
93
94
|
```
|
|
94
95
|
*/
|
|
95
96
|
getExprs(): AbstractExpr[];
|
|
97
|
+
getTypeExprs(): AbstractTypeExpr[];
|
|
96
98
|
containsArrayRef(): boolean;
|
|
97
99
|
getArrayRef(): ArkArrayRef | undefined;
|
|
98
100
|
containsFieldRef(): boolean;
|
|
@@ -231,5 +233,6 @@ export declare class ArkAliasTypeDefineStmt extends Stmt {
|
|
|
231
233
|
getAliasName(): string;
|
|
232
234
|
toString(): string;
|
|
233
235
|
getExprs(): AliasTypeExpr[];
|
|
236
|
+
getTypeExprs(): AbstractTypeExpr[];
|
|
234
237
|
}
|
|
235
238
|
//# sourceMappingURL=Stmt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Stmt.d.ts","sourceRoot":"","sources":["../../../src/core/base/Stmt.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGrF,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"Stmt.d.ts","sourceRoot":"","sources":["../../../src/core/base/Stmt.ts"],"names":[],"mappings":"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"}
|