arkanalyzer 1.0.20 → 1.0.21
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/Config.d.ts +70 -70
- package/lib/Config.js +198 -198
- package/lib/Scene.d.ts +316 -316
- package/lib/Scene.js +1316 -1316
- package/lib/callgraph/algorithm/AbstractAnalysis.d.ts +28 -28
- package/lib/callgraph/algorithm/AbstractAnalysis.js +144 -144
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.d.ts +10 -10
- package/lib/callgraph/algorithm/ClassHierarchyAnalysis.js +69 -69
- package/lib/callgraph/algorithm/RapidTypeAnalysis.d.ts +15 -15
- package/lib/callgraph/algorithm/RapidTypeAnalysis.js +146 -146
- package/lib/callgraph/common/Statistics.d.ts +57 -57
- package/lib/callgraph/common/Statistics.js +228 -228
- package/lib/callgraph/model/CallGraph.d.ts +96 -96
- package/lib/callgraph/model/CallGraph.js +354 -354
- package/lib/callgraph/model/builder/CallGraphBuilder.d.ts +15 -15
- package/lib/callgraph/model/builder/CallGraphBuilder.js +106 -106
- package/lib/callgraph/pointerAnalysis/Context.d.ts +37 -37
- package/lib/callgraph/pointerAnalysis/Context.js +155 -155
- package/lib/callgraph/pointerAnalysis/DummyCallCreator.d.ts +22 -22
- package/lib/callgraph/pointerAnalysis/DummyCallCreator.js +104 -104
- package/lib/callgraph/pointerAnalysis/PTAUtils.d.ts +5 -5
- package/lib/callgraph/pointerAnalysis/PTAUtils.js +46 -46
- package/lib/callgraph/pointerAnalysis/Pag.d.ts +261 -261
- package/lib/callgraph/pointerAnalysis/Pag.js +930 -930
- package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +157 -157
- package/lib/callgraph/pointerAnalysis/PagBuilder.js +1399 -1399
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +72 -72
- package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +573 -573
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +15 -15
- package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +81 -81
- package/lib/callgraph/pointerAnalysis/PtsDS.d.ts +80 -80
- package/lib/callgraph/pointerAnalysis/PtsDS.js +308 -308
- package/lib/core/base/Constant.d.ts +48 -48
- package/lib/core/base/Constant.js +103 -103
- package/lib/core/base/Decorator.d.ts +15 -15
- package/lib/core/base/Decorator.js +46 -46
- package/lib/core/base/DefUseChain.d.ts +8 -8
- package/lib/core/base/DefUseChain.js +25 -25
- package/lib/core/base/Expr.d.ts +340 -340
- package/lib/core/base/Expr.js +917 -917
- package/lib/core/base/Local.d.ts +104 -104
- package/lib/core/base/Local.js +176 -176
- package/lib/core/base/Position.d.ts +30 -30
- package/lib/core/base/Position.js +147 -147
- package/lib/core/base/Ref.d.ts +173 -173
- package/lib/core/base/Ref.js +374 -374
- package/lib/core/base/Stmt.d.ts +237 -237
- package/lib/core/base/Stmt.js +525 -525
- package/lib/core/base/Trap.d.ts +8 -8
- package/lib/core/base/Trap.js +30 -30
- package/lib/core/base/Type.d.ts +308 -308
- package/lib/core/base/Type.js +639 -639
- package/lib/core/base/TypeExpr.d.ts +71 -71
- package/lib/core/base/TypeExpr.js +155 -155
- package/lib/core/base/Value.d.ts +32 -32
- package/lib/core/base/Value.js +16 -16
- package/lib/core/common/ArkError.d.ts +14 -14
- package/lib/core/common/ArkError.js +28 -28
- package/lib/core/common/ArkIRTransformer.d.ts +67 -67
- package/lib/core/common/ArkIRTransformer.js +690 -690
- package/lib/core/common/ArkValueTransformer.d.ts +89 -89
- package/lib/core/common/ArkValueTransformer.js +1478 -1478
- package/lib/core/common/Builtin.d.ts +36 -36
- package/lib/core/common/Builtin.js +81 -81
- package/lib/core/common/Const.d.ts +21 -21
- package/lib/core/common/Const.js +43 -43
- package/lib/core/common/DummyMainCreater.d.ts +46 -46
- package/lib/core/common/DummyMainCreater.js +319 -319
- package/lib/core/common/EtsConst.d.ts +73 -73
- package/lib/core/common/EtsConst.js +1021 -1021
- package/lib/core/common/ExprUseReplacer.d.ts +21 -21
- package/lib/core/common/ExprUseReplacer.js +124 -124
- package/lib/core/common/IRInference.d.ts +36 -36
- package/lib/core/common/IRInference.d.ts.map +1 -1
- package/lib/core/common/IRInference.js +651 -648
- package/lib/core/common/IRUtils.d.ts +18 -18
- package/lib/core/common/IRUtils.js +141 -141
- package/lib/core/common/ModelUtils.d.ts +70 -70
- package/lib/core/common/ModelUtils.js +712 -712
- package/lib/core/common/RefUseReplacer.d.ts +13 -13
- package/lib/core/common/RefUseReplacer.js +52 -52
- package/lib/core/common/SdkUtils.d.ts +8 -8
- package/lib/core/common/SdkUtils.js +105 -105
- package/lib/core/common/StmtDefReplacer.d.ts +12 -12
- package/lib/core/common/StmtDefReplacer.js +41 -41
- package/lib/core/common/StmtUseReplacer.d.ts +16 -16
- package/lib/core/common/StmtUseReplacer.js +108 -108
- package/lib/core/common/TSConst.d.ts +18 -18
- package/lib/core/common/TSConst.js +36 -36
- package/lib/core/common/TypeInference.d.ts +102 -102
- package/lib/core/common/TypeInference.js +748 -748
- package/lib/core/common/ValueUtil.d.ts +12 -12
- package/lib/core/common/ValueUtil.js +54 -54
- package/lib/core/common/VisibleValue.d.ts +36 -36
- package/lib/core/common/VisibleValue.js +212 -212
- package/lib/core/dataflow/DataflowProblem.d.ts +20 -20
- package/lib/core/dataflow/DataflowProblem.js +20 -20
- package/lib/core/dataflow/DataflowResult.d.ts +7 -7
- package/lib/core/dataflow/DataflowResult.js +26 -26
- package/lib/core/dataflow/DataflowSolver.d.ts +43 -43
- package/lib/core/dataflow/DataflowSolver.js +307 -307
- package/lib/core/dataflow/Edge.d.ts +11 -11
- package/lib/core/dataflow/Edge.js +31 -31
- package/lib/core/dataflow/Fact.d.ts +6 -6
- package/lib/core/dataflow/Fact.js +24 -24
- package/lib/core/dataflow/GenericDataFlow.d.ts +142 -142
- package/lib/core/dataflow/GenericDataFlow.js +109 -109
- package/lib/core/dataflow/ReachingDef.d.ts +62 -62
- package/lib/core/dataflow/ReachingDef.js +168 -168
- package/lib/core/dataflow/UndefinedVariable.d.ts +45 -45
- package/lib/core/dataflow/UndefinedVariable.js +288 -288
- package/lib/core/dataflow/Util.d.ts +9 -9
- package/lib/core/dataflow/Util.js +64 -64
- package/lib/core/graph/BaseExplicitGraph.d.ts +58 -58
- package/lib/core/graph/BaseExplicitGraph.js +157 -157
- package/lib/core/graph/BaseImplicitGraph.d.ts +77 -77
- package/lib/core/graph/BaseImplicitGraph.js +78 -78
- package/lib/core/graph/BasicBlock.d.ts +104 -104
- package/lib/core/graph/BasicBlock.js +280 -280
- package/lib/core/graph/Cfg.d.ts +59 -59
- package/lib/core/graph/Cfg.js +282 -282
- package/lib/core/graph/DependsGraph.d.ts +35 -35
- package/lib/core/graph/DependsGraph.js +87 -87
- package/lib/core/graph/DominanceFinder.d.ts +15 -15
- package/lib/core/graph/DominanceFinder.js +121 -121
- package/lib/core/graph/DominanceTree.d.ts +12 -12
- package/lib/core/graph/DominanceTree.js +70 -70
- package/lib/core/graph/GraphTraits.d.ts +7 -7
- package/lib/core/graph/GraphTraits.js +16 -16
- package/lib/core/graph/Scc.d.ts +61 -61
- package/lib/core/graph/Scc.js +222 -222
- package/lib/core/graph/ViewTree.d.ts +114 -114
- package/lib/core/graph/ViewTree.js +16 -16
- package/lib/core/graph/builder/CfgBuilder.d.ts +176 -176
- package/lib/core/graph/builder/CfgBuilder.js +1139 -1139
- package/lib/core/graph/builder/ConditionBuilder.d.ts +15 -15
- package/lib/core/graph/builder/ConditionBuilder.js +252 -252
- package/lib/core/graph/builder/LoopBuilder.d.ts +20 -20
- package/lib/core/graph/builder/LoopBuilder.js +251 -251
- package/lib/core/graph/builder/SwitchBuilder.d.ts +11 -11
- package/lib/core/graph/builder/SwitchBuilder.js +152 -152
- package/lib/core/graph/builder/TrapBuilder.d.ts +16 -16
- package/lib/core/graph/builder/TrapBuilder.js +272 -272
- package/lib/core/graph/builder/ViewTreeBuilder.d.ts +203 -203
- package/lib/core/graph/builder/ViewTreeBuilder.js +1055 -1055
- package/lib/core/model/ArkBaseModel.d.ts +59 -59
- package/lib/core/model/ArkBaseModel.js +274 -274
- package/lib/core/model/ArkBody.d.ts +24 -24
- package/lib/core/model/ArkBody.js +65 -65
- package/lib/core/model/ArkClass.d.ts +206 -206
- package/lib/core/model/ArkClass.js +439 -439
- package/lib/core/model/ArkExport.d.ts +72 -72
- package/lib/core/model/ArkExport.js +147 -147
- package/lib/core/model/ArkField.d.ts +62 -62
- package/lib/core/model/ArkField.js +113 -113
- package/lib/core/model/ArkFile.d.ts +131 -131
- package/lib/core/model/ArkFile.js +267 -267
- package/lib/core/model/ArkImport.d.ts +44 -44
- package/lib/core/model/ArkImport.js +108 -108
- package/lib/core/model/ArkMetadata.d.ts +31 -31
- package/lib/core/model/ArkMetadata.js +55 -55
- package/lib/core/model/ArkMethod.d.ts +261 -261
- package/lib/core/model/ArkMethod.js +592 -592
- package/lib/core/model/ArkNamespace.d.ts +66 -66
- package/lib/core/model/ArkNamespace.js +209 -209
- package/lib/core/model/ArkSignature.d.ts +162 -162
- package/lib/core/model/ArkSignature.js +379 -379
- package/lib/core/model/builder/ArkClassBuilder.d.ts +12 -12
- package/lib/core/model/builder/ArkClassBuilder.js +454 -454
- package/lib/core/model/builder/ArkExportBuilder.d.ts +24 -24
- package/lib/core/model/builder/ArkExportBuilder.js +210 -210
- package/lib/core/model/builder/ArkFieldBuilder.d.ts +8 -8
- package/lib/core/model/builder/ArkFieldBuilder.js +193 -193
- package/lib/core/model/builder/ArkFileBuilder.d.ts +9 -9
- package/lib/core/model/builder/ArkFileBuilder.js +165 -165
- package/lib/core/model/builder/ArkImportBuilder.d.ts +4 -4
- package/lib/core/model/builder/ArkImportBuilder.js +128 -128
- package/lib/core/model/builder/ArkMethodBuilder.d.ts +63 -63
- package/lib/core/model/builder/ArkMethodBuilder.js +486 -486
- package/lib/core/model/builder/ArkNamespaceBuilder.d.ts +5 -5
- package/lib/core/model/builder/ArkNamespaceBuilder.js +205 -205
- package/lib/core/model/builder/ArkSignatureBuilder.d.ts +8 -8
- package/lib/core/model/builder/ArkSignatureBuilder.js +40 -40
- package/lib/core/model/builder/BodyBuilder.d.ts +55 -30
- package/lib/core/model/builder/BodyBuilder.d.ts.map +1 -1
- package/lib/core/model/builder/BodyBuilder.js +542 -371
- package/lib/core/model/builder/builderUtils.d.ts +18 -18
- package/lib/core/model/builder/builderUtils.js +558 -558
- package/lib/index.d.ts +82 -80
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +201 -196
- package/lib/save/ArkStream.d.ts +23 -23
- package/lib/save/ArkStream.js +83 -83
- package/lib/save/DotPrinter.d.ts +43 -43
- package/lib/save/DotPrinter.js +170 -170
- package/lib/save/GraphPrinter.d.ts +16 -16
- package/lib/save/GraphPrinter.js +134 -134
- package/lib/save/JsonPrinter.d.ts +30 -30
- package/lib/save/JsonPrinter.js +580 -580
- package/lib/save/Printer.d.ts +12 -12
- package/lib/save/Printer.js +27 -27
- package/lib/save/PrinterBuilder.d.ts +53 -53
- package/lib/save/PrinterBuilder.js +145 -145
- package/lib/save/ViewTreePrinter.d.ts +14 -14
- package/lib/save/ViewTreePrinter.js +123 -123
- package/lib/save/arkir/ArkIRClassPrinter.d.ts +13 -13
- package/lib/save/arkir/ArkIRClassPrinter.js +92 -92
- package/lib/save/arkir/ArkIRFieldPrinter.d.ts +11 -11
- package/lib/save/arkir/ArkIRFieldPrinter.js +64 -64
- package/lib/save/arkir/ArkIRFilePrinter.d.ts +12 -12
- package/lib/save/arkir/ArkIRFilePrinter.js +54 -54
- package/lib/save/arkir/ArkIRMethodPrinter.d.ts +16 -16
- package/lib/save/arkir/ArkIRMethodPrinter.js +159 -159
- package/lib/save/arkir/ArkIRNamespacePrinter.d.ts +11 -11
- package/lib/save/arkir/ArkIRNamespacePrinter.js +66 -66
- package/lib/save/base/BasePrinter.d.ts +23 -23
- package/lib/save/base/BasePrinter.js +70 -70
- package/lib/save/base/ExportPrinter.d.ts +8 -8
- package/lib/save/base/ExportPrinter.js +67 -67
- package/lib/save/base/ImportPrinter.d.ts +9 -9
- package/lib/save/base/ImportPrinter.js +92 -92
- package/lib/save/base/PrinterUtils.d.ts +24 -24
- package/lib/save/base/PrinterUtils.js +208 -208
- package/lib/save/serializeArkIR.d.ts +8 -8
- package/lib/save/serializeArkIR.js +294 -294
- package/lib/save/source/SourceBase.d.ts +22 -22
- package/lib/save/source/SourceBase.js +64 -64
- package/lib/save/source/SourceBody.d.ts +58 -58
- package/lib/save/source/SourceBody.js +296 -296
- package/lib/save/source/SourceClass.d.ts +25 -25
- package/lib/save/source/SourceClass.js +187 -187
- package/lib/save/source/SourceField.d.ts +13 -13
- package/lib/save/source/SourceField.js +73 -73
- package/lib/save/source/SourceFilePrinter.d.ts +12 -12
- package/lib/save/source/SourceFilePrinter.js +69 -69
- package/lib/save/source/SourceMethod.d.ts +22 -22
- package/lib/save/source/SourceMethod.d.ts.map +1 -1
- package/lib/save/source/SourceMethod.js +196 -193
- package/lib/save/source/SourceNamespace.d.ts +11 -11
- package/lib/save/source/SourceNamespace.js +83 -83
- package/lib/save/source/SourceStmt.d.ts +178 -178
- package/lib/save/source/SourceStmt.js +838 -838
- package/lib/save/source/SourceTransformer.d.ts +46 -46
- package/lib/save/source/SourceTransformer.js +446 -446
- package/lib/transformer/FunctionTransformer.d.ts +2 -2
- package/lib/transformer/FunctionTransformer.js +17 -17
- package/lib/transformer/SceneTransformer.d.ts +2 -2
- package/lib/transformer/SceneTransformer.js +17 -17
- package/lib/transformer/StaticSingleAssignmentFormer.d.ts +12 -12
- package/lib/transformer/StaticSingleAssignmentFormer.js +259 -259
- package/lib/transformer/Transformer.d.ts +6 -6
- package/lib/transformer/Transformer.js +22 -22
- package/lib/utils/AstTreeUtils.d.ts +4 -4
- package/lib/utils/AstTreeUtils.js +26 -26
- package/lib/utils/CfgStructualAnalysis.d.ts +110 -110
- package/lib/utils/CfgStructualAnalysis.js +1277 -1277
- package/lib/utils/FileUtils.d.ts +18 -18
- package/lib/utils/FileUtils.js +135 -135
- package/lib/utils/SparseBitVector.d.ts +100 -100
- package/lib/utils/SparseBitVector.js +445 -445
- package/lib/utils/callGraphUtils.d.ts +30 -30
- package/lib/utils/callGraphUtils.js +205 -205
- package/lib/utils/crypto_utils.d.ts +5 -5
- package/lib/utils/crypto_utils.js +57 -57
- package/lib/utils/entryMethodUtils.d.ts +13 -13
- package/lib/utils/entryMethodUtils.js +110 -110
- package/lib/utils/getAllFiles.d.ts +9 -9
- package/lib/utils/getAllFiles.js +90 -90
- package/lib/utils/json5parser.d.ts +6 -6
- package/lib/utils/json5parser.js +146 -146
- package/lib/utils/logger.d.ts +18 -18
- package/lib/utils/logger.d.ts.map +1 -1
- package/lib/utils/logger.js +97 -90
- package/lib/utils/pathTransfer.d.ts +1 -1
- package/lib/utils/pathTransfer.js +25 -25
- package/node_modules/json5/lib/cli.js +0 -0
- package/node_modules/ohos-typescript/bin/tsc +0 -0
- package/node_modules/ohos-typescript/bin/tsserver +0 -0
- package/package.json +3 -3
|
@@ -1,262 +1,262 @@
|
|
|
1
|
-
import { NodeID, BaseEdge, BaseExplicitGraph, BaseNode, Kind } from '../../core/graph/BaseExplicitGraph';
|
|
2
|
-
import { CallGraph, CallSite, DynCallSite } from '../model/CallGraph';
|
|
3
|
-
import { Value } from '../../core/base/Value';
|
|
4
|
-
import { ArkAssignStmt, Stmt } from '../../core/base/Stmt';
|
|
5
|
-
import { AbstractExpr } from '../../core/base/Expr';
|
|
6
|
-
import { AbstractFieldRef, ArkArrayRef, ArkInstanceFieldRef, ArkParameterRef, ArkStaticFieldRef, ArkThisRef } from '../../core/base/Ref';
|
|
7
|
-
import { Local } from '../../core/base/Local';
|
|
8
|
-
import { MethodSignature } from '../../core/model/ArkSignature';
|
|
9
|
-
import { ContextID } from './Context';
|
|
10
|
-
import { ExportInfo } from '../../core/model/ArkExport';
|
|
11
|
-
import { IPtsCollection } from './PtsDS';
|
|
12
|
-
export type PagNodeType = Value;
|
|
13
|
-
export declare enum PagEdgeKind {
|
|
14
|
-
Address = 0,
|
|
15
|
-
Copy = 1,
|
|
16
|
-
Load = 2,
|
|
17
|
-
Write = 3,
|
|
18
|
-
This = 4,
|
|
19
|
-
Unknown = 5,
|
|
20
|
-
InterProceduralCopy = 6
|
|
21
|
-
}
|
|
22
|
-
export declare enum StorageType {
|
|
23
|
-
APP_STORAGE = 0,
|
|
24
|
-
LOCAL_STORAGE = 1,
|
|
25
|
-
Undefined = 2
|
|
26
|
-
}
|
|
27
|
-
export declare enum StorageLinkEdgeType {
|
|
28
|
-
Property2Local = 0,
|
|
29
|
-
Local2Property = 1,
|
|
30
|
-
TwoWay = 2
|
|
31
|
-
}
|
|
32
|
-
export declare class PagEdge extends BaseEdge {
|
|
33
|
-
private stmt;
|
|
34
|
-
constructor(n: PagNode, d: PagNode, k: PagEdgeKind, s?: Stmt);
|
|
35
|
-
getDotAttr(): string;
|
|
36
|
-
}
|
|
37
|
-
export declare class AddrPagEdge extends PagEdge {
|
|
38
|
-
constructor(n: PagNode, d: PagNode, s: Stmt);
|
|
39
|
-
}
|
|
40
|
-
export declare class CopyPagEdge extends PagEdge {
|
|
41
|
-
constructor(n: PagNode, d: PagNode, s: Stmt);
|
|
42
|
-
}
|
|
43
|
-
export declare class LoadPagEdge extends PagEdge {
|
|
44
|
-
constructor(n: PagNode, d: PagNode, s: Stmt);
|
|
45
|
-
}
|
|
46
|
-
export declare class WritePagEdge extends PagEdge {
|
|
47
|
-
constructor(n: PagNode, d: PagNode, s: Stmt);
|
|
48
|
-
}
|
|
49
|
-
export declare class ThisPagEdge extends PagEdge {
|
|
50
|
-
constructor(n: PagNode, d: PagNode, s: Stmt);
|
|
51
|
-
}
|
|
52
|
-
type PagEdgeSet = Set<PagEdge>;
|
|
53
|
-
export declare enum PagNodeKind {
|
|
54
|
-
HeapObj = 0,
|
|
55
|
-
LocalVar = 1,
|
|
56
|
-
RefVar = 2,
|
|
57
|
-
Param = 3,
|
|
58
|
-
ThisRef = 4,
|
|
59
|
-
Function = 5,
|
|
60
|
-
GlobalThis = 6,
|
|
61
|
-
ExportInfo = 7
|
|
62
|
-
}
|
|
63
|
-
export declare class PagNode extends BaseNode {
|
|
64
|
-
private cid;
|
|
65
|
-
private value;
|
|
66
|
-
private stmt;
|
|
67
|
-
private pointTo;
|
|
68
|
-
private addressInEdges;
|
|
69
|
-
private addressOutEdges;
|
|
70
|
-
private copyInEdges;
|
|
71
|
-
private copyOutEdges;
|
|
72
|
-
private loadInEdges;
|
|
73
|
-
private loadOutEdges;
|
|
74
|
-
private writeInEdges;
|
|
75
|
-
private writeOutEdges;
|
|
76
|
-
private thisInEdges;
|
|
77
|
-
private thisOutEdges;
|
|
78
|
-
protected basePt: NodeID;
|
|
79
|
-
protected clonedFrom: NodeID;
|
|
80
|
-
constructor(id: NodeID, cid: number | undefined, value: Value, k: Kind, s?: Stmt);
|
|
81
|
-
getBasePt(): NodeID;
|
|
82
|
-
setBasePt(pt: NodeID): void;
|
|
83
|
-
getCid(): ContextID;
|
|
84
|
-
setCid(cid: ContextID): void;
|
|
85
|
-
setStmt(s: Stmt): void;
|
|
86
|
-
getStmt(): Stmt | undefined;
|
|
87
|
-
hasOutgoingCopyEdge(): boolean;
|
|
88
|
-
getOutgoingCopyEdges(): PagEdgeSet;
|
|
89
|
-
getIncomingCopyEdges(): PagEdgeSet;
|
|
90
|
-
getOutgoingLoadEdges(): PagEdgeSet;
|
|
91
|
-
getOutgoingWriteEdges(): PagEdgeSet;
|
|
92
|
-
getIncomingWriteEdges(): PagEdgeSet;
|
|
93
|
-
getOutgoingThisEdges(): PagEdgeSet;
|
|
94
|
-
getIncomingThisEdges(): PagEdgeSet;
|
|
95
|
-
addAddressInEdge(e: AddrPagEdge): void;
|
|
96
|
-
addAddressOutEdge(e: AddrPagEdge): void;
|
|
97
|
-
addCopyInEdge(e: CopyPagEdge): void;
|
|
98
|
-
addCopyOutEdge(e: CopyPagEdge): void;
|
|
99
|
-
addLoadInEdge(e: LoadPagEdge): void;
|
|
100
|
-
addLoadOutEdge(e: LoadPagEdge): void;
|
|
101
|
-
addWriteInEdge(e: WritePagEdge): void;
|
|
102
|
-
addWriteOutEdge(e: LoadPagEdge): void;
|
|
103
|
-
addThisInEdge(e: ThisPagEdge): void;
|
|
104
|
-
addThisOutEdge(e: ThisPagEdge): void;
|
|
105
|
-
getValue(): Value;
|
|
106
|
-
getPointTo(): IPtsCollection<NodeID>;
|
|
107
|
-
addPointToElement(node: NodeID): void;
|
|
108
|
-
setPointTo(pts: IPtsCollection<NodeID>): void;
|
|
109
|
-
getOutEdges(): {
|
|
110
|
-
AddressEdge: PagEdgeSet;
|
|
111
|
-
CopyEdge: PagEdgeSet;
|
|
112
|
-
LoadEdge: PagEdgeSet;
|
|
113
|
-
WriteEdge: PagEdgeSet;
|
|
114
|
-
};
|
|
115
|
-
getClonedFrom(): NodeID;
|
|
116
|
-
setClonedFrom(id: NodeID): void;
|
|
117
|
-
getDotAttr(): string;
|
|
118
|
-
getDotLabel(): string;
|
|
119
|
-
}
|
|
120
|
-
export declare class PagLocalNode extends PagNode {
|
|
121
|
-
private relatedDynamicCallSite?;
|
|
122
|
-
private relatedUnknownCallSite?;
|
|
123
|
-
private storageLinked;
|
|
124
|
-
private storageType?;
|
|
125
|
-
private propertyName?;
|
|
126
|
-
private sdkParam;
|
|
127
|
-
constructor(id: NodeID, cid: number | undefined, value: Local, stmt?: Stmt);
|
|
128
|
-
addRelatedDynCallSite(cs: DynCallSite): void;
|
|
129
|
-
getRelatedDynCallSites(): Set<DynCallSite>;
|
|
130
|
-
addRelatedUnknownCallSite(cs: CallSite): void;
|
|
131
|
-
getRelatedUnknownCallSites(): Set<CallSite>;
|
|
132
|
-
setStorageLink(storageType: StorageType, propertyName: string): void;
|
|
133
|
-
getStorage(): {
|
|
134
|
-
StorageType: StorageType;
|
|
135
|
-
PropertyName: string;
|
|
136
|
-
};
|
|
137
|
-
isStorageLinked(): boolean;
|
|
138
|
-
setSdkParam(): void;
|
|
139
|
-
isSdkParam(): boolean;
|
|
140
|
-
}
|
|
141
|
-
export declare class PagInstanceFieldNode extends PagNode {
|
|
142
|
-
constructor(id: NodeID, cid: number | undefined, instanceFieldRef: ArkInstanceFieldRef, stmt?: Stmt);
|
|
143
|
-
}
|
|
144
|
-
export declare class PagStaticFieldNode extends PagNode {
|
|
145
|
-
constructor(id: NodeID, cid: number | undefined, staticFieldRef: ArkStaticFieldRef, stmt?: Stmt);
|
|
146
|
-
}
|
|
147
|
-
export declare class PagThisRefNode extends PagNode {
|
|
148
|
-
pointToNode: NodeID[];
|
|
149
|
-
constructor(id: NodeID, thisRef: ArkThisRef);
|
|
150
|
-
getThisPTNode(): NodeID[];
|
|
151
|
-
addPTNode(ptNode: NodeID): void;
|
|
152
|
-
}
|
|
153
|
-
export declare class PagArrayNode extends PagNode {
|
|
154
|
-
base: Value;
|
|
155
|
-
constructor(id: NodeID, cid: number | undefined, expr: ArkArrayRef, stmt?: Stmt);
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* below is heapObj like Node
|
|
159
|
-
*/
|
|
160
|
-
export declare class PagNewExprNode extends PagNode {
|
|
161
|
-
fieldNodes: Map<string, NodeID>;
|
|
162
|
-
constructor(id: NodeID, cid: number | undefined, expr: AbstractExpr, stmt?: Stmt);
|
|
163
|
-
addFieldNode(fieldSignature: AbstractFieldRef, nodeID: NodeID): boolean;
|
|
164
|
-
getFieldNode(fieldSignature: AbstractFieldRef): NodeID | undefined;
|
|
165
|
-
getFieldNodes(): Map<string, NodeID> | undefined;
|
|
166
|
-
}
|
|
167
|
-
export declare class PagNewContainerExprNode extends PagNode {
|
|
168
|
-
elementNode: NodeID | undefined;
|
|
169
|
-
constructor(id: NodeID, cid: number | undefined, expr: Value, stmt?: Stmt);
|
|
170
|
-
addElementNode(nodeID: NodeID): boolean;
|
|
171
|
-
getElementNode(): NodeID | undefined;
|
|
172
|
-
}
|
|
173
|
-
export declare class PagParamNode extends PagNode {
|
|
174
|
-
constructor(id: NodeID, cid: number | undefined, r: ArkParameterRef, stmt?: Stmt);
|
|
175
|
-
}
|
|
176
|
-
export declare class PagFuncNode extends PagNode {
|
|
177
|
-
private methodSignature;
|
|
178
|
-
constructor(id: NodeID, cid: number | undefined, r: Value, stmt?: Stmt, method?: MethodSignature);
|
|
179
|
-
setMethod(method: MethodSignature): void;
|
|
180
|
-
getMethod(): MethodSignature;
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* almost same as PagNewExprNode, used only for globalThis and its field reference
|
|
184
|
-
*/
|
|
185
|
-
export declare class PagGlobalThisNode extends PagNode {
|
|
186
|
-
fieldNodes: Map<string, NodeID>;
|
|
187
|
-
constructor(id: NodeID, cid: number | undefined, r: Value, stmt?: Stmt);
|
|
188
|
-
addFieldNode(fieldSignature: AbstractFieldRef, nodeID: NodeID): boolean;
|
|
189
|
-
getFieldNode(fieldSignature: AbstractFieldRef): NodeID | undefined;
|
|
190
|
-
getFieldNodes(): Map<string, NodeID> | undefined;
|
|
191
|
-
}
|
|
192
|
-
export declare class Pag extends BaseExplicitGraph {
|
|
193
|
-
private cg;
|
|
194
|
-
private contextValueToIdMap;
|
|
195
|
-
private ExportInfoToIdMap?;
|
|
196
|
-
private contextBaseToIdMap;
|
|
197
|
-
private stashAddrEdge;
|
|
198
|
-
private addrEdge;
|
|
199
|
-
private clonedNodeMap;
|
|
200
|
-
getCG(): CallGraph;
|
|
201
|
-
getOrClonePagNode(src: PagNode, basePt: NodeID): PagNode;
|
|
202
|
-
getOrClonePagFieldNode(src: PagInstanceFieldNode, basePt: NodeID): PagInstanceFieldNode | undefined;
|
|
203
|
-
getOrClonePagContainerFieldNode(basePt: NodeID, src?: PagArrayNode, base?: Local): PagInstanceFieldNode | undefined;
|
|
204
|
-
addPagNode(cid: ContextID, value: PagNodeType, stmt?: Stmt, refresh?: boolean): PagNode;
|
|
205
|
-
private handleLocalNode;
|
|
206
|
-
private handleInstanceFieldNode;
|
|
207
|
-
private handleStaticFieldNode;
|
|
208
|
-
private createFieldNode;
|
|
209
|
-
private handleNewExprNode;
|
|
210
|
-
private addContextOrExportInfoMap;
|
|
211
|
-
private addExportInfoMap;
|
|
212
|
-
private addContextMap;
|
|
213
|
-
addPagThisRefNode(value: ArkThisRef): PagNode;
|
|
214
|
-
addPagThisLocalNode(ptNode: NodeID, value: Local): PagNode;
|
|
215
|
-
getOrNewThisRefNode(thisRefNodeID: NodeID, value: ArkThisRef): PagNode;
|
|
216
|
-
getOrNewThisLocalNode(cid: ContextID, ptNode: NodeID, value: Local, s?: Stmt): PagNode;
|
|
217
|
-
hasExportNode(v: ExportInfo): NodeID | undefined;
|
|
218
|
-
hasCtxNode(cid: ContextID, v: Value): NodeID | undefined;
|
|
219
|
-
hasCtxRetNode(cid: ContextID, v: Value): NodeID | undefined;
|
|
220
|
-
getOrNewNode(cid: ContextID, v: PagNodeType, s?: Stmt): PagNode;
|
|
221
|
-
getNodesByValue(v: Value): Map<ContextID, NodeID> | undefined;
|
|
222
|
-
getNodesByBaseValue(v: Value): Map<ContextID, NodeID[]> | undefined;
|
|
223
|
-
addPagEdge(src: PagNode, dst: PagNode, kind: PagEdgeKind, stmt?: Stmt): boolean;
|
|
224
|
-
getAddrEdges(): PagEdgeSet;
|
|
225
|
-
resetAddrEdges(): void;
|
|
226
|
-
getGraphName(): string;
|
|
227
|
-
dump(name: string): void;
|
|
228
|
-
}
|
|
229
|
-
export type InterProceduralSrcType = Local;
|
|
230
|
-
export type IntraProceduralEdge = {
|
|
231
|
-
src: Value;
|
|
232
|
-
dst: Value;
|
|
233
|
-
kind: PagEdgeKind;
|
|
234
|
-
stmt: Stmt;
|
|
235
|
-
};
|
|
236
|
-
export type InterProceduralEdge = {
|
|
237
|
-
src: InterProceduralSrcType;
|
|
238
|
-
dst: Value;
|
|
239
|
-
kind: PagEdgeKind;
|
|
240
|
-
};
|
|
241
|
-
export declare class FuncPag {
|
|
242
|
-
private internalEdges;
|
|
243
|
-
private normalCallSites;
|
|
244
|
-
private dynamicCallSites;
|
|
245
|
-
private unknownCallSites;
|
|
246
|
-
getInternalEdges(): Set<IntraProceduralEdge> | undefined;
|
|
247
|
-
addNormalCallSite(cs: CallSite): void;
|
|
248
|
-
getNormalCallSites(): Set<CallSite>;
|
|
249
|
-
addDynamicCallSite(cs: DynCallSite): void;
|
|
250
|
-
getDynamicCallSites(): Set<DynCallSite>;
|
|
251
|
-
addUnknownCallSite(cs: CallSite): void;
|
|
252
|
-
getUnknownCallSites(): Set<CallSite>;
|
|
253
|
-
addInternalEdge(stmt: ArkAssignStmt, k: PagEdgeKind): boolean;
|
|
254
|
-
}
|
|
255
|
-
export declare class InterFuncPag {
|
|
256
|
-
private interFuncEdges;
|
|
257
|
-
constructor();
|
|
258
|
-
getInterProceduralEdges(): Set<InterProceduralEdge>;
|
|
259
|
-
addToInterProceduralEdgeSet(e: InterProceduralEdge): void;
|
|
260
|
-
}
|
|
261
|
-
export {};
|
|
1
|
+
import { NodeID, BaseEdge, BaseExplicitGraph, BaseNode, Kind } from '../../core/graph/BaseExplicitGraph';
|
|
2
|
+
import { CallGraph, CallSite, DynCallSite } from '../model/CallGraph';
|
|
3
|
+
import { Value } from '../../core/base/Value';
|
|
4
|
+
import { ArkAssignStmt, Stmt } from '../../core/base/Stmt';
|
|
5
|
+
import { AbstractExpr } from '../../core/base/Expr';
|
|
6
|
+
import { AbstractFieldRef, ArkArrayRef, ArkInstanceFieldRef, ArkParameterRef, ArkStaticFieldRef, ArkThisRef } from '../../core/base/Ref';
|
|
7
|
+
import { Local } from '../../core/base/Local';
|
|
8
|
+
import { MethodSignature } from '../../core/model/ArkSignature';
|
|
9
|
+
import { ContextID } from './Context';
|
|
10
|
+
import { ExportInfo } from '../../core/model/ArkExport';
|
|
11
|
+
import { IPtsCollection } from './PtsDS';
|
|
12
|
+
export type PagNodeType = Value;
|
|
13
|
+
export declare enum PagEdgeKind {
|
|
14
|
+
Address = 0,
|
|
15
|
+
Copy = 1,
|
|
16
|
+
Load = 2,
|
|
17
|
+
Write = 3,
|
|
18
|
+
This = 4,
|
|
19
|
+
Unknown = 5,
|
|
20
|
+
InterProceduralCopy = 6
|
|
21
|
+
}
|
|
22
|
+
export declare enum StorageType {
|
|
23
|
+
APP_STORAGE = 0,
|
|
24
|
+
LOCAL_STORAGE = 1,
|
|
25
|
+
Undefined = 2
|
|
26
|
+
}
|
|
27
|
+
export declare enum StorageLinkEdgeType {
|
|
28
|
+
Property2Local = 0,
|
|
29
|
+
Local2Property = 1,
|
|
30
|
+
TwoWay = 2
|
|
31
|
+
}
|
|
32
|
+
export declare class PagEdge extends BaseEdge {
|
|
33
|
+
private stmt;
|
|
34
|
+
constructor(n: PagNode, d: PagNode, k: PagEdgeKind, s?: Stmt);
|
|
35
|
+
getDotAttr(): string;
|
|
36
|
+
}
|
|
37
|
+
export declare class AddrPagEdge extends PagEdge {
|
|
38
|
+
constructor(n: PagNode, d: PagNode, s: Stmt);
|
|
39
|
+
}
|
|
40
|
+
export declare class CopyPagEdge extends PagEdge {
|
|
41
|
+
constructor(n: PagNode, d: PagNode, s: Stmt);
|
|
42
|
+
}
|
|
43
|
+
export declare class LoadPagEdge extends PagEdge {
|
|
44
|
+
constructor(n: PagNode, d: PagNode, s: Stmt);
|
|
45
|
+
}
|
|
46
|
+
export declare class WritePagEdge extends PagEdge {
|
|
47
|
+
constructor(n: PagNode, d: PagNode, s: Stmt);
|
|
48
|
+
}
|
|
49
|
+
export declare class ThisPagEdge extends PagEdge {
|
|
50
|
+
constructor(n: PagNode, d: PagNode, s: Stmt);
|
|
51
|
+
}
|
|
52
|
+
type PagEdgeSet = Set<PagEdge>;
|
|
53
|
+
export declare enum PagNodeKind {
|
|
54
|
+
HeapObj = 0,
|
|
55
|
+
LocalVar = 1,
|
|
56
|
+
RefVar = 2,
|
|
57
|
+
Param = 3,
|
|
58
|
+
ThisRef = 4,
|
|
59
|
+
Function = 5,
|
|
60
|
+
GlobalThis = 6,
|
|
61
|
+
ExportInfo = 7
|
|
62
|
+
}
|
|
63
|
+
export declare class PagNode extends BaseNode {
|
|
64
|
+
private cid;
|
|
65
|
+
private value;
|
|
66
|
+
private stmt;
|
|
67
|
+
private pointTo;
|
|
68
|
+
private addressInEdges;
|
|
69
|
+
private addressOutEdges;
|
|
70
|
+
private copyInEdges;
|
|
71
|
+
private copyOutEdges;
|
|
72
|
+
private loadInEdges;
|
|
73
|
+
private loadOutEdges;
|
|
74
|
+
private writeInEdges;
|
|
75
|
+
private writeOutEdges;
|
|
76
|
+
private thisInEdges;
|
|
77
|
+
private thisOutEdges;
|
|
78
|
+
protected basePt: NodeID;
|
|
79
|
+
protected clonedFrom: NodeID;
|
|
80
|
+
constructor(id: NodeID, cid: number | undefined, value: Value, k: Kind, s?: Stmt);
|
|
81
|
+
getBasePt(): NodeID;
|
|
82
|
+
setBasePt(pt: NodeID): void;
|
|
83
|
+
getCid(): ContextID;
|
|
84
|
+
setCid(cid: ContextID): void;
|
|
85
|
+
setStmt(s: Stmt): void;
|
|
86
|
+
getStmt(): Stmt | undefined;
|
|
87
|
+
hasOutgoingCopyEdge(): boolean;
|
|
88
|
+
getOutgoingCopyEdges(): PagEdgeSet;
|
|
89
|
+
getIncomingCopyEdges(): PagEdgeSet;
|
|
90
|
+
getOutgoingLoadEdges(): PagEdgeSet;
|
|
91
|
+
getOutgoingWriteEdges(): PagEdgeSet;
|
|
92
|
+
getIncomingWriteEdges(): PagEdgeSet;
|
|
93
|
+
getOutgoingThisEdges(): PagEdgeSet;
|
|
94
|
+
getIncomingThisEdges(): PagEdgeSet;
|
|
95
|
+
addAddressInEdge(e: AddrPagEdge): void;
|
|
96
|
+
addAddressOutEdge(e: AddrPagEdge): void;
|
|
97
|
+
addCopyInEdge(e: CopyPagEdge): void;
|
|
98
|
+
addCopyOutEdge(e: CopyPagEdge): void;
|
|
99
|
+
addLoadInEdge(e: LoadPagEdge): void;
|
|
100
|
+
addLoadOutEdge(e: LoadPagEdge): void;
|
|
101
|
+
addWriteInEdge(e: WritePagEdge): void;
|
|
102
|
+
addWriteOutEdge(e: LoadPagEdge): void;
|
|
103
|
+
addThisInEdge(e: ThisPagEdge): void;
|
|
104
|
+
addThisOutEdge(e: ThisPagEdge): void;
|
|
105
|
+
getValue(): Value;
|
|
106
|
+
getPointTo(): IPtsCollection<NodeID>;
|
|
107
|
+
addPointToElement(node: NodeID): void;
|
|
108
|
+
setPointTo(pts: IPtsCollection<NodeID>): void;
|
|
109
|
+
getOutEdges(): {
|
|
110
|
+
AddressEdge: PagEdgeSet;
|
|
111
|
+
CopyEdge: PagEdgeSet;
|
|
112
|
+
LoadEdge: PagEdgeSet;
|
|
113
|
+
WriteEdge: PagEdgeSet;
|
|
114
|
+
};
|
|
115
|
+
getClonedFrom(): NodeID;
|
|
116
|
+
setClonedFrom(id: NodeID): void;
|
|
117
|
+
getDotAttr(): string;
|
|
118
|
+
getDotLabel(): string;
|
|
119
|
+
}
|
|
120
|
+
export declare class PagLocalNode extends PagNode {
|
|
121
|
+
private relatedDynamicCallSite?;
|
|
122
|
+
private relatedUnknownCallSite?;
|
|
123
|
+
private storageLinked;
|
|
124
|
+
private storageType?;
|
|
125
|
+
private propertyName?;
|
|
126
|
+
private sdkParam;
|
|
127
|
+
constructor(id: NodeID, cid: number | undefined, value: Local, stmt?: Stmt);
|
|
128
|
+
addRelatedDynCallSite(cs: DynCallSite): void;
|
|
129
|
+
getRelatedDynCallSites(): Set<DynCallSite>;
|
|
130
|
+
addRelatedUnknownCallSite(cs: CallSite): void;
|
|
131
|
+
getRelatedUnknownCallSites(): Set<CallSite>;
|
|
132
|
+
setStorageLink(storageType: StorageType, propertyName: string): void;
|
|
133
|
+
getStorage(): {
|
|
134
|
+
StorageType: StorageType;
|
|
135
|
+
PropertyName: string;
|
|
136
|
+
};
|
|
137
|
+
isStorageLinked(): boolean;
|
|
138
|
+
setSdkParam(): void;
|
|
139
|
+
isSdkParam(): boolean;
|
|
140
|
+
}
|
|
141
|
+
export declare class PagInstanceFieldNode extends PagNode {
|
|
142
|
+
constructor(id: NodeID, cid: number | undefined, instanceFieldRef: ArkInstanceFieldRef, stmt?: Stmt);
|
|
143
|
+
}
|
|
144
|
+
export declare class PagStaticFieldNode extends PagNode {
|
|
145
|
+
constructor(id: NodeID, cid: number | undefined, staticFieldRef: ArkStaticFieldRef, stmt?: Stmt);
|
|
146
|
+
}
|
|
147
|
+
export declare class PagThisRefNode extends PagNode {
|
|
148
|
+
pointToNode: NodeID[];
|
|
149
|
+
constructor(id: NodeID, thisRef: ArkThisRef);
|
|
150
|
+
getThisPTNode(): NodeID[];
|
|
151
|
+
addPTNode(ptNode: NodeID): void;
|
|
152
|
+
}
|
|
153
|
+
export declare class PagArrayNode extends PagNode {
|
|
154
|
+
base: Value;
|
|
155
|
+
constructor(id: NodeID, cid: number | undefined, expr: ArkArrayRef, stmt?: Stmt);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* below is heapObj like Node
|
|
159
|
+
*/
|
|
160
|
+
export declare class PagNewExprNode extends PagNode {
|
|
161
|
+
fieldNodes: Map<string, NodeID>;
|
|
162
|
+
constructor(id: NodeID, cid: number | undefined, expr: AbstractExpr, stmt?: Stmt);
|
|
163
|
+
addFieldNode(fieldSignature: AbstractFieldRef, nodeID: NodeID): boolean;
|
|
164
|
+
getFieldNode(fieldSignature: AbstractFieldRef): NodeID | undefined;
|
|
165
|
+
getFieldNodes(): Map<string, NodeID> | undefined;
|
|
166
|
+
}
|
|
167
|
+
export declare class PagNewContainerExprNode extends PagNode {
|
|
168
|
+
elementNode: NodeID | undefined;
|
|
169
|
+
constructor(id: NodeID, cid: number | undefined, expr: Value, stmt?: Stmt);
|
|
170
|
+
addElementNode(nodeID: NodeID): boolean;
|
|
171
|
+
getElementNode(): NodeID | undefined;
|
|
172
|
+
}
|
|
173
|
+
export declare class PagParamNode extends PagNode {
|
|
174
|
+
constructor(id: NodeID, cid: number | undefined, r: ArkParameterRef, stmt?: Stmt);
|
|
175
|
+
}
|
|
176
|
+
export declare class PagFuncNode extends PagNode {
|
|
177
|
+
private methodSignature;
|
|
178
|
+
constructor(id: NodeID, cid: number | undefined, r: Value, stmt?: Stmt, method?: MethodSignature);
|
|
179
|
+
setMethod(method: MethodSignature): void;
|
|
180
|
+
getMethod(): MethodSignature;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* almost same as PagNewExprNode, used only for globalThis and its field reference
|
|
184
|
+
*/
|
|
185
|
+
export declare class PagGlobalThisNode extends PagNode {
|
|
186
|
+
fieldNodes: Map<string, NodeID>;
|
|
187
|
+
constructor(id: NodeID, cid: number | undefined, r: Value, stmt?: Stmt);
|
|
188
|
+
addFieldNode(fieldSignature: AbstractFieldRef, nodeID: NodeID): boolean;
|
|
189
|
+
getFieldNode(fieldSignature: AbstractFieldRef): NodeID | undefined;
|
|
190
|
+
getFieldNodes(): Map<string, NodeID> | undefined;
|
|
191
|
+
}
|
|
192
|
+
export declare class Pag extends BaseExplicitGraph {
|
|
193
|
+
private cg;
|
|
194
|
+
private contextValueToIdMap;
|
|
195
|
+
private ExportInfoToIdMap?;
|
|
196
|
+
private contextBaseToIdMap;
|
|
197
|
+
private stashAddrEdge;
|
|
198
|
+
private addrEdge;
|
|
199
|
+
private clonedNodeMap;
|
|
200
|
+
getCG(): CallGraph;
|
|
201
|
+
getOrClonePagNode(src: PagNode, basePt: NodeID): PagNode;
|
|
202
|
+
getOrClonePagFieldNode(src: PagInstanceFieldNode, basePt: NodeID): PagInstanceFieldNode | undefined;
|
|
203
|
+
getOrClonePagContainerFieldNode(basePt: NodeID, src?: PagArrayNode, base?: Local): PagInstanceFieldNode | undefined;
|
|
204
|
+
addPagNode(cid: ContextID, value: PagNodeType, stmt?: Stmt, refresh?: boolean): PagNode;
|
|
205
|
+
private handleLocalNode;
|
|
206
|
+
private handleInstanceFieldNode;
|
|
207
|
+
private handleStaticFieldNode;
|
|
208
|
+
private createFieldNode;
|
|
209
|
+
private handleNewExprNode;
|
|
210
|
+
private addContextOrExportInfoMap;
|
|
211
|
+
private addExportInfoMap;
|
|
212
|
+
private addContextMap;
|
|
213
|
+
addPagThisRefNode(value: ArkThisRef): PagNode;
|
|
214
|
+
addPagThisLocalNode(ptNode: NodeID, value: Local): PagNode;
|
|
215
|
+
getOrNewThisRefNode(thisRefNodeID: NodeID, value: ArkThisRef): PagNode;
|
|
216
|
+
getOrNewThisLocalNode(cid: ContextID, ptNode: NodeID, value: Local, s?: Stmt): PagNode;
|
|
217
|
+
hasExportNode(v: ExportInfo): NodeID | undefined;
|
|
218
|
+
hasCtxNode(cid: ContextID, v: Value): NodeID | undefined;
|
|
219
|
+
hasCtxRetNode(cid: ContextID, v: Value): NodeID | undefined;
|
|
220
|
+
getOrNewNode(cid: ContextID, v: PagNodeType, s?: Stmt): PagNode;
|
|
221
|
+
getNodesByValue(v: Value): Map<ContextID, NodeID> | undefined;
|
|
222
|
+
getNodesByBaseValue(v: Value): Map<ContextID, NodeID[]> | undefined;
|
|
223
|
+
addPagEdge(src: PagNode, dst: PagNode, kind: PagEdgeKind, stmt?: Stmt): boolean;
|
|
224
|
+
getAddrEdges(): PagEdgeSet;
|
|
225
|
+
resetAddrEdges(): void;
|
|
226
|
+
getGraphName(): string;
|
|
227
|
+
dump(name: string): void;
|
|
228
|
+
}
|
|
229
|
+
export type InterProceduralSrcType = Local;
|
|
230
|
+
export type IntraProceduralEdge = {
|
|
231
|
+
src: Value;
|
|
232
|
+
dst: Value;
|
|
233
|
+
kind: PagEdgeKind;
|
|
234
|
+
stmt: Stmt;
|
|
235
|
+
};
|
|
236
|
+
export type InterProceduralEdge = {
|
|
237
|
+
src: InterProceduralSrcType;
|
|
238
|
+
dst: Value;
|
|
239
|
+
kind: PagEdgeKind;
|
|
240
|
+
};
|
|
241
|
+
export declare class FuncPag {
|
|
242
|
+
private internalEdges;
|
|
243
|
+
private normalCallSites;
|
|
244
|
+
private dynamicCallSites;
|
|
245
|
+
private unknownCallSites;
|
|
246
|
+
getInternalEdges(): Set<IntraProceduralEdge> | undefined;
|
|
247
|
+
addNormalCallSite(cs: CallSite): void;
|
|
248
|
+
getNormalCallSites(): Set<CallSite>;
|
|
249
|
+
addDynamicCallSite(cs: DynCallSite): void;
|
|
250
|
+
getDynamicCallSites(): Set<DynCallSite>;
|
|
251
|
+
addUnknownCallSite(cs: CallSite): void;
|
|
252
|
+
getUnknownCallSites(): Set<CallSite>;
|
|
253
|
+
addInternalEdge(stmt: ArkAssignStmt, k: PagEdgeKind): boolean;
|
|
254
|
+
}
|
|
255
|
+
export declare class InterFuncPag {
|
|
256
|
+
private interFuncEdges;
|
|
257
|
+
constructor();
|
|
258
|
+
getInterProceduralEdges(): Set<InterProceduralEdge>;
|
|
259
|
+
addToInterProceduralEdgeSet(e: InterProceduralEdge): void;
|
|
260
|
+
}
|
|
261
|
+
export {};
|
|
262
262
|
//# sourceMappingURL=Pag.d.ts.map
|