arkanalyzer 1.0.7 → 1.0.9

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.
Files changed (164) hide show
  1. package/config/arkanalyzer.json +8 -0
  2. package/lib/Config.d.ts +9 -1
  3. package/lib/Config.d.ts.map +1 -1
  4. package/lib/Config.js +24 -11
  5. package/lib/Scene.d.ts +49 -42
  6. package/lib/Scene.d.ts.map +1 -1
  7. package/lib/Scene.js +124 -93
  8. package/lib/callgraph/algorithm/AbstractAnalysis.js +1 -1
  9. package/lib/callgraph/common/Statistics.js +1 -1
  10. package/lib/callgraph/model/CallGraph.d.ts +3 -2
  11. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  12. package/lib/callgraph/model/CallGraph.js +15 -5
  13. package/lib/callgraph/model/builder/CallGraphBuilder.js +1 -1
  14. package/lib/callgraph/pointerAnalysis/Pag.d.ts +35 -8
  15. package/lib/callgraph/pointerAnalysis/Pag.d.ts.map +1 -1
  16. package/lib/callgraph/pointerAnalysis/Pag.js +89 -8
  17. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +32 -5
  18. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  19. package/lib/callgraph/pointerAnalysis/PagBuilder.js +378 -83
  20. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +3 -0
  21. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
  22. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +71 -18
  23. package/lib/core/base/Constant.d.ts +25 -5
  24. package/lib/core/base/Constant.d.ts.map +1 -1
  25. package/lib/core/base/Constant.js +46 -8
  26. package/lib/core/base/Expr.d.ts +45 -40
  27. package/lib/core/base/Expr.d.ts.map +1 -1
  28. package/lib/core/base/Expr.js +236 -150
  29. package/lib/core/base/Local.d.ts +2 -2
  30. package/lib/core/base/Local.d.ts.map +1 -1
  31. package/lib/core/base/Local.js +2 -2
  32. package/lib/core/base/Ref.d.ts +38 -37
  33. package/lib/core/base/Ref.d.ts.map +1 -1
  34. package/lib/core/base/Ref.js +102 -70
  35. package/lib/core/base/Stmt.d.ts +4 -0
  36. package/lib/core/base/Stmt.d.ts.map +1 -1
  37. package/lib/core/base/Stmt.js +12 -1
  38. package/lib/core/base/Type.d.ts +4 -0
  39. package/lib/core/base/Type.d.ts.map +1 -1
  40. package/lib/core/base/Type.js +41 -17
  41. package/lib/core/common/ArkError.d.ts +15 -0
  42. package/lib/core/common/ArkError.d.ts.map +1 -0
  43. package/lib/core/common/ArkError.js +28 -0
  44. package/lib/core/common/ArkIRTransformer.d.ts +1 -1
  45. package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
  46. package/lib/core/common/ArkIRTransformer.js +24 -8
  47. package/lib/core/common/CfgBuilder.d.ts.map +1 -1
  48. package/lib/core/common/CfgBuilder.js +5 -0
  49. package/lib/core/common/Const.d.ts +15 -10
  50. package/lib/core/common/Const.d.ts.map +1 -1
  51. package/lib/core/common/Const.js +18 -11
  52. package/lib/core/common/DummyMainCreater.d.ts +2 -1
  53. package/lib/core/common/DummyMainCreater.d.ts.map +1 -1
  54. package/lib/core/common/DummyMainCreater.js +28 -15
  55. package/lib/core/common/EtsConst.d.ts +1 -0
  56. package/lib/core/common/EtsConst.d.ts.map +1 -1
  57. package/lib/core/common/EtsConst.js +2 -1
  58. package/lib/core/common/IRUtils.d.ts +6 -0
  59. package/lib/core/common/IRUtils.d.ts.map +1 -1
  60. package/lib/core/common/IRUtils.js +29 -2
  61. package/lib/core/common/ModelUtils.d.ts +1 -0
  62. package/lib/core/common/ModelUtils.d.ts.map +1 -1
  63. package/lib/core/common/ModelUtils.js +32 -32
  64. package/lib/core/common/TSConst.d.ts +10 -3
  65. package/lib/core/common/TSConst.d.ts.map +1 -1
  66. package/lib/core/common/TSConst.js +11 -4
  67. package/lib/core/common/TypeInference.d.ts +8 -2
  68. package/lib/core/common/TypeInference.d.ts.map +1 -1
  69. package/lib/core/common/TypeInference.js +218 -87
  70. package/lib/core/common/ValueUtil.d.ts +0 -4
  71. package/lib/core/common/ValueUtil.d.ts.map +1 -1
  72. package/lib/core/common/ValueUtil.js +8 -25
  73. package/lib/core/dataflow/DataflowSolver.d.ts.map +1 -1
  74. package/lib/core/dataflow/DataflowSolver.js +2 -4
  75. package/lib/core/dataflow/TiantAnalysis.js +2 -1
  76. package/lib/core/dataflow/Util.d.ts +1 -1
  77. package/lib/core/dataflow/Util.d.ts.map +1 -1
  78. package/lib/core/dataflow/Util.js +8 -7
  79. package/lib/core/graph/BasicBlock.d.ts +41 -0
  80. package/lib/core/graph/BasicBlock.d.ts.map +1 -1
  81. package/lib/core/graph/BasicBlock.js +132 -1
  82. package/lib/core/graph/Cfg.d.ts +30 -1
  83. package/lib/core/graph/Cfg.d.ts.map +1 -1
  84. package/lib/core/graph/Cfg.js +129 -6
  85. package/lib/core/graph/builder/ViewTreeBuilder.d.ts.map +1 -1
  86. package/lib/core/graph/builder/ViewTreeBuilder.js +3 -2
  87. package/lib/core/model/ArkBaseModel.d.ts +8 -0
  88. package/lib/core/model/ArkBaseModel.d.ts.map +1 -1
  89. package/lib/core/model/ArkBaseModel.js +55 -3
  90. package/lib/core/model/ArkClass.d.ts +36 -30
  91. package/lib/core/model/ArkClass.d.ts.map +1 -1
  92. package/lib/core/model/ArkClass.js +78 -39
  93. package/lib/core/model/ArkExport.d.ts +3 -0
  94. package/lib/core/model/ArkExport.d.ts.map +1 -1
  95. package/lib/core/model/ArkExport.js +10 -0
  96. package/lib/core/model/ArkField.d.ts +2 -0
  97. package/lib/core/model/ArkField.d.ts.map +1 -1
  98. package/lib/core/model/ArkField.js +3 -0
  99. package/lib/core/model/ArkFile.d.ts +4 -0
  100. package/lib/core/model/ArkFile.d.ts.map +1 -1
  101. package/lib/core/model/ArkFile.js +20 -0
  102. package/lib/core/model/ArkImport.d.ts +2 -0
  103. package/lib/core/model/ArkImport.d.ts.map +1 -1
  104. package/lib/core/model/ArkImport.js +3 -0
  105. package/lib/core/model/ArkMetadata.d.ts +20 -0
  106. package/lib/core/model/ArkMetadata.d.ts.map +1 -0
  107. package/lib/core/model/ArkMetadata.js +44 -0
  108. package/lib/core/model/ArkMethod.d.ts +156 -53
  109. package/lib/core/model/ArkMethod.d.ts.map +1 -1
  110. package/lib/core/model/ArkMethod.js +309 -54
  111. package/lib/core/model/ArkNamespace.d.ts +4 -0
  112. package/lib/core/model/ArkNamespace.d.ts.map +1 -1
  113. package/lib/core/model/ArkNamespace.js +13 -0
  114. package/lib/core/model/ArkSignature.d.ts +11 -5
  115. package/lib/core/model/ArkSignature.d.ts.map +1 -1
  116. package/lib/core/model/ArkSignature.js +38 -18
  117. package/lib/core/model/builder/ArkClassBuilder.d.ts +0 -1
  118. package/lib/core/model/builder/ArkClassBuilder.d.ts.map +1 -1
  119. package/lib/core/model/builder/ArkClassBuilder.js +9 -34
  120. package/lib/core/model/builder/ArkExportBuilder.d.ts.map +1 -1
  121. package/lib/core/model/builder/ArkExportBuilder.js +6 -1
  122. package/lib/core/model/builder/ArkFieldBuilder.d.ts.map +1 -1
  123. package/lib/core/model/builder/ArkFieldBuilder.js +3 -0
  124. package/lib/core/model/builder/ArkFileBuilder.js +1 -1
  125. package/lib/core/model/builder/ArkImportBuilder.d.ts +2 -1
  126. package/lib/core/model/builder/ArkImportBuilder.d.ts.map +1 -1
  127. package/lib/core/model/builder/ArkImportBuilder.js +12 -5
  128. package/lib/core/model/builder/ArkMethodBuilder.d.ts +2 -1
  129. package/lib/core/model/builder/ArkMethodBuilder.d.ts.map +1 -1
  130. package/lib/core/model/builder/ArkMethodBuilder.js +87 -47
  131. package/lib/core/model/builder/ArkNamespaceBuilder.d.ts.map +1 -1
  132. package/lib/core/model/builder/ArkNamespaceBuilder.js +2 -0
  133. package/lib/core/model/builder/builderUtils.d.ts.map +1 -1
  134. package/lib/core/model/builder/builderUtils.js +25 -2
  135. package/lib/save/source/SourceClass.d.ts.map +1 -1
  136. package/lib/save/source/SourceClass.js +4 -0
  137. package/lib/save/source/SourceField.d.ts.map +1 -1
  138. package/lib/save/source/SourceField.js +4 -0
  139. package/lib/save/source/SourceMethod.d.ts.map +1 -1
  140. package/lib/save/source/SourceMethod.js +7 -0
  141. package/lib/save/source/SourceModule.d.ts.map +1 -1
  142. package/lib/save/source/SourceModule.js +14 -9
  143. package/lib/save/source/SourceNamespace.d.ts.map +1 -1
  144. package/lib/save/source/SourceNamespace.js +4 -0
  145. package/lib/save/source/SourceStmt.d.ts.map +1 -1
  146. package/lib/save/source/SourceStmt.js +15 -3
  147. package/lib/save/source/SourceTransformer.d.ts +6 -0
  148. package/lib/save/source/SourceTransformer.d.ts.map +1 -1
  149. package/lib/save/source/SourceTransformer.js +72 -41
  150. package/lib/save/source/SourceUtils.d.ts.map +1 -1
  151. package/lib/save/source/SourceUtils.js +3 -2
  152. package/lib/transformer/StaticSingleAssignmentFormer.js +1 -1
  153. package/lib/utils/CfgStructualAnalysis.d.ts +1 -0
  154. package/lib/utils/CfgStructualAnalysis.d.ts.map +1 -1
  155. package/lib/utils/CfgStructualAnalysis.js +41 -7
  156. package/lib/utils/callGraphUtils.d.ts.map +1 -1
  157. package/lib/utils/callGraphUtils.js +7 -10
  158. package/lib/utils/crypto_utils.d.ts +6 -0
  159. package/lib/utils/crypto_utils.d.ts.map +1 -0
  160. package/lib/utils/crypto_utils.js +57 -0
  161. package/lib/utils/getAllFiles.d.ts +1 -1
  162. package/lib/utils/getAllFiles.d.ts.map +1 -1
  163. package/lib/utils/getAllFiles.js +4 -5
  164. package/package.json +3 -2
@@ -46,6 +46,8 @@ export declare class PointerAnalysis extends AbstractAnalysis {
46
46
  * 3. 在addDynamicCall里对传入指针过滤(已处理指针和未处理指针)
47
47
  */
48
48
  private onTheFlyDynamicCallSolve;
49
+ private processDynCallSite;
50
+ private processUnknownCallSite;
49
51
  private addToReanalyze;
50
52
  /**
51
53
  * compare interface
@@ -63,5 +65,6 @@ export declare class PointerAnalysis extends AbstractAnalysis {
63
65
  getHandledFuncs(): FuncID[];
64
66
  getPTAConfig(): PointerAnalysisConfig;
65
67
  private dumpUnhandledFunctions;
68
+ mergeInstanceFieldMap(src: Map<number, number[]>, dst: Map<number, number[]>): Map<number, number[]>;
66
69
  }
67
70
  //# sourceMappingURL=PointerAnalysis.d.ts.map
@@ -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,oBAAoB,CAAC;AAG5C,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;AAKhE,qBAAa,eAAgB,SAAQ,gBAAgB;IACjD,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,GAAG,CAA6C;IACxD,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,QAAQ,CAAY;IAE5B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,MAAM,CAAwB;gBAE1B,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB;IAW1E,MAAM,CAAC,8BAA8B,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,qBAAqB,GAAG,eAAe;IAuB3G,SAAS,CAAC,IAAI;IAYP,KAAK;IAMZ,OAAO,CAAC,WAAW;IAgBnB,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,EAAE;IAK/C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE;IAIhC,OAAO,CAAC,eAAe;IAoBvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,eAAe;IA+BvB,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,SAAS;IAoBjB;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAoChC,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACI,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,GAAG,OAAO;IAmCrD,QAAQ,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,GAAG,OAAO;IAItD,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IA6BhD,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,cAAc;IA2Cf,cAAc,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAI9C,SAAS,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,GAAG,QAAQ,EAAE;IAIlE,iBAAiB,IAAI,MAAM,EAAE;IAI7B,eAAe,IAAI,MAAM,EAAE;IAI3B,YAAY,IAAI,qBAAqB;IAI5C,OAAO,CAAC,sBAAsB;CA+BjC"}
1
+ {"version":3,"file":"PointerAnalysis.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PointerAnalysis.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,7 @@ const Pag_1 = require("./Pag");
54
54
  const PagBuilder_1 = require("./PagBuilder");
55
55
  const PointerAnalysisConfig_1 = require("./PointerAnalysisConfig");
56
56
  const PtsDS_1 = require("./PtsDS");
57
+ const Local_1 = require("../../core/base/Local");
57
58
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'PTA');
58
59
  class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
59
60
  constructor(p, cg, s, config) {
@@ -181,19 +182,29 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
181
182
  return true;
182
183
  }
183
184
  handleLoadWrite(nodeID) {
185
+ var _a;
184
186
  let node = this.pag.getNode(nodeID);
187
+ let nodeValue = node.getValue();
185
188
  let diffPts = this.ptd.getDiffPts(nodeID);
186
189
  if (!diffPts || diffPts.count() === 0) {
187
190
  return false;
188
191
  }
189
192
  // get related field node with current node's value
190
- let instanceFieldNodeMap = this.pag.getNodesByBaseValue(node.getValue());
191
- if (instanceFieldNodeMap === undefined) {
192
- return true;
193
+ let instanceFieldNodeMap = (_a = this.pag.getNodesByBaseValue(nodeValue)) !== null && _a !== void 0 ? _a : new Map();
194
+ // get intra procedural field node by exportMap
195
+ let intraProceduralFieldNodeMap = new Map();
196
+ if (nodeValue instanceof Local_1.Local) {
197
+ this.pagBuilder.getExportVariableMap(nodeValue).forEach((dst) => {
198
+ var _a;
199
+ let temp = (_a = this.pag.getNodesByBaseValue(dst)) !== null && _a !== void 0 ? _a : new Map();
200
+ intraProceduralFieldNodeMap = this.mergeInstanceFieldMap(instanceFieldNodeMap, temp);
201
+ });
193
202
  }
194
203
  instanceFieldNodeMap.forEach((nodeIDs, cid) => {
195
204
  // TODO: check cid
196
- if (cid !== node.getCid()) {
205
+ // cid === -1 will escape the check, mainly for globalThis
206
+ let baseCid = node.getCid();
207
+ if (baseCid !== -1 && cid !== baseCid) {
197
208
  return;
198
209
  }
199
210
  nodeIDs.forEach((nodeID) => {
@@ -203,6 +214,15 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
203
214
  this.handleFieldOutEdges(fieldNode, diffPts);
204
215
  });
205
216
  });
217
+ // without cid check, because closure and export is under different cid
218
+ intraProceduralFieldNodeMap.forEach((nodeIDs) => {
219
+ nodeIDs.forEach((nodeID) => {
220
+ // get abstract field node
221
+ let fieldNode = this.pag.getNode(nodeID);
222
+ this.handleFieldInEdges(fieldNode, diffPts);
223
+ this.handleFieldOutEdges(fieldNode, diffPts);
224
+ });
225
+ });
206
226
  return true;
207
227
  }
208
228
  handleFieldInEdges(fieldNode, diffPts) {
@@ -307,19 +327,8 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
307
327
  logger.warn(`node ${nodeID} is not local node, value: ${node.getValue()}`);
308
328
  return;
309
329
  }
310
- let dynCallSites = node.getRelatedDynCallSites();
311
- if (!dynCallSites) {
312
- logger.warn(`node ${nodeID} has no related dynamic call site`);
313
- return;
314
- }
315
- logger.info(`[process dynamic callsite] node ${nodeID}`);
316
- dynCallSites.forEach((dynCallsite) => {
317
- for (let pt of pts) {
318
- let srcNodes = this.pagBuilder.addDynamicCallEdge(dynCallsite, pt, node.getCid());
319
- changed = this.addToReanalyze(srcNodes) || changed;
320
- }
321
- processedCallSites.add(dynCallsite);
322
- });
330
+ changed = this.processDynCallSite(node, pts, processedCallSites) || changed;
331
+ changed = this.processUnknownCallSite(node, pts) || changed;
323
332
  });
324
333
  this.pagBuilder.resetUpdatedNodes();
325
334
  let srcNodes = this.pagBuilder.handleUnprocessedCallSites(processedCallSites);
@@ -328,6 +337,39 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
328
337
  this.initWorklist();
329
338
  return changed;
330
339
  }
340
+ processDynCallSite(node, pts, processedCallSites) {
341
+ let changed = false;
342
+ let dynCallSites = node.getRelatedDynCallSites();
343
+ if (!dynCallSites && !node.isSdkParam()) {
344
+ logger.warn(`node ${node.getID()} has no related dynamic call site`);
345
+ return changed;
346
+ }
347
+ logger.info(`[process dynamic callsite] node ${node.getID()}`);
348
+ dynCallSites.forEach((dynCallsite) => {
349
+ for (let pt of pts) {
350
+ let srcNodes = this.pagBuilder.addDynamicCallEdge(dynCallsite, pt, node.getCid());
351
+ changed = this.addToReanalyze(srcNodes) || changed;
352
+ }
353
+ processedCallSites.add(dynCallsite);
354
+ });
355
+ return changed;
356
+ }
357
+ processUnknownCallSite(node, pts) {
358
+ let changed = false;
359
+ let unknownCallSites = node.getRelatedUnknownCallSites();
360
+ if (!unknownCallSites) {
361
+ logger.warn(`node ${node.getID()} has no related unknown call site`);
362
+ return changed;
363
+ }
364
+ logger.info(`[process unknown callsite] node ${node.getID()}`);
365
+ unknownCallSites.forEach((unknownCallSite) => {
366
+ for (let pt of pts) {
367
+ let srcNodes = this.pagBuilder.addDynamicCallEdge(unknownCallSite, pt, node.getCid());
368
+ changed = this.addToReanalyze(srcNodes) || changed;
369
+ }
370
+ });
371
+ return changed;
372
+ }
331
373
  addToReanalyze(startNodes) {
332
374
  let flag = false;
333
375
  for (let node of startNodes) {
@@ -493,7 +535,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
493
535
  let updatedContent = '';
494
536
  this.getUnhandledFuncs().forEach(funcID => {
495
537
  let cgNode = this.cg.getNode(funcID);
496
- if (cgNode.getIsSdkMethod()) {
538
+ if (cgNode.isSdkMethod()) {
497
539
  return;
498
540
  }
499
541
  let f = this.cg.getArkMethodByFuncID(funcID);
@@ -508,5 +550,16 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
508
550
  });
509
551
  });
510
552
  }
553
+ mergeInstanceFieldMap(src, dst) {
554
+ dst.forEach((value, key) => {
555
+ if (src.has(key)) {
556
+ src.set(key, [...src.get(key), ...value]);
557
+ }
558
+ else {
559
+ src.set(key, value);
560
+ }
561
+ });
562
+ return src;
563
+ }
511
564
  }
512
565
  exports.PointerAnalysis = PointerAnalysis;
@@ -4,26 +4,46 @@ import { Value } from './Value';
4
4
  * @category core/base
5
5
  */
6
6
  export declare class Constant implements Value {
7
- private value;
8
- private type;
9
- constructor(value: string, type?: Type);
7
+ private readonly value;
8
+ private readonly type;
9
+ constructor(value: string, type: Type);
10
10
  /**
11
11
  * Returns the constant's value as a **string**.
12
12
  * @returns The constant's value.
13
13
  */
14
14
  getValue(): string;
15
- setValue(newValue: string): void;
16
15
  getUses(): Value[];
17
16
  /**
18
17
  * Returns the type of this constant.
19
18
  * @returns The type of this constant.
20
19
  */
21
20
  getType(): Type;
22
- setType(newType: Type): void;
23
21
  /**
24
22
  * Get a string of constant value in Constant.
25
23
  * @returns The string of constant value.
26
24
  */
27
25
  toString(): string;
28
26
  }
27
+ export declare class BooleanConstant extends Constant {
28
+ private static readonly FALSE;
29
+ private static readonly TRUE;
30
+ constructor(value: boolean);
31
+ static getInstance(value: boolean): NullConstant;
32
+ }
33
+ export declare class NumberConstant extends Constant {
34
+ constructor(value: number);
35
+ }
36
+ export declare class StringConstant extends Constant {
37
+ constructor(value: string);
38
+ }
39
+ export declare class NullConstant extends Constant {
40
+ private static readonly INSTANCE;
41
+ constructor();
42
+ static getInstance(): NullConstant;
43
+ }
44
+ export declare class UndefinedConstant extends Constant {
45
+ private static readonly INSTANCE;
46
+ constructor();
47
+ static getInstance(): UndefinedConstant;
48
+ }
29
49
  //# sourceMappingURL=Constant.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Constant.d.ts","sourceRoot":"","sources":["../../../src/core/base/Constant.ts"],"names":[],"mappings":"AAeA,OAAO,EAAc,IAAI,EAAe,MAAM,QAAQ,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC;;GAEG;AACH,qBAAa,QAAS,YAAW,KAAK;IAClC,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAO;gBAEP,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,IAAgC;IAKjE;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAIlB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIhC,OAAO,IAAI,KAAK,EAAE;IAIzB;;;OAGG;IACI,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI;IAInC;;;OAGG;IACI,QAAQ,IAAI,MAAM;CAS5B"}
1
+ {"version":3,"file":"Constant.d.ts","sourceRoot":"","sources":["../../../src/core/base/Constant.ts"],"names":[],"mappings":"AAeA,OAAO,EAAiD,IAAI,EAAiB,MAAM,QAAQ,CAAC;AAC5F,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC;;GAEG;AACH,qBAAa,QAAS,YAAW,KAAK;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAO;gBAEhB,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAKrC;;;OAGG;IACI,QAAQ,IAAI,MAAM;IAIlB,OAAO,IAAI,KAAK,EAAE;IAIzB;;;OAGG;IACI,OAAO,IAAI,IAAI;IAItB;;;OAGG;IACI,QAAQ,IAAI,MAAM;CAS5B;AAED,qBAAa,eAAgB,SAAQ,QAAQ;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAA8B;IAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAA6B;gBAE7C,KAAK,EAAE,OAAO;WAIZ,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY;CAG1D;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC5B,KAAK,EAAE,MAAM;CAG5B;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC5B,KAAK,EAAE,MAAM;CAG5B;AAED,qBAAa,YAAa,SAAQ,QAAQ;IACtC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAsB;;WAMxC,WAAW,IAAI,YAAY;CAG5C;AAED,qBAAa,iBAAkB,SAAQ,QAAQ;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAA2B;;WAM7C,WAAW,IAAI,iBAAiB;CAGjD"}
@@ -14,13 +14,14 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.Constant = void 0;
17
+ exports.UndefinedConstant = exports.NullConstant = exports.StringConstant = exports.NumberConstant = exports.BooleanConstant = exports.Constant = void 0;
18
18
  const Type_1 = require("./Type");
19
+ const TSConst_1 = require("../common/TSConst");
19
20
  /**
20
21
  * @category core/base
21
22
  */
22
23
  class Constant {
23
- constructor(value, type = Type_1.UnknownType.getInstance()) {
24
+ constructor(value, type) {
24
25
  this.value = value;
25
26
  this.type = type;
26
27
  }
@@ -31,9 +32,6 @@ class Constant {
31
32
  getValue() {
32
33
  return this.value;
33
34
  }
34
- setValue(newValue) {
35
- this.value = newValue;
36
- }
37
35
  getUses() {
38
36
  return [];
39
37
  }
@@ -44,9 +42,6 @@ class Constant {
44
42
  getType() {
45
43
  return this.type;
46
44
  }
47
- setType(newType) {
48
- this.type = newType;
49
- }
50
45
  /**
51
46
  * Get a string of constant value in Constant.
52
47
  * @returns The string of constant value.
@@ -63,3 +58,46 @@ class Constant {
63
58
  }
64
59
  }
65
60
  exports.Constant = Constant;
61
+ class BooleanConstant extends Constant {
62
+ constructor(value) {
63
+ super(value.toString(), Type_1.BooleanType.getInstance());
64
+ }
65
+ static getInstance(value) {
66
+ return value ? this.TRUE : this.FALSE;
67
+ }
68
+ }
69
+ exports.BooleanConstant = BooleanConstant;
70
+ BooleanConstant.FALSE = new BooleanConstant(false);
71
+ BooleanConstant.TRUE = new BooleanConstant(true);
72
+ class NumberConstant extends Constant {
73
+ constructor(value) {
74
+ super(value.toString(), Type_1.NumberType.getInstance());
75
+ }
76
+ }
77
+ exports.NumberConstant = NumberConstant;
78
+ class StringConstant extends Constant {
79
+ constructor(value) {
80
+ super(value.toString(), Type_1.StringType.getInstance());
81
+ }
82
+ }
83
+ exports.StringConstant = StringConstant;
84
+ class NullConstant extends Constant {
85
+ constructor() {
86
+ super(TSConst_1.NULL_KEYWORD, Type_1.NullType.getInstance());
87
+ }
88
+ static getInstance() {
89
+ return this.INSTANCE;
90
+ }
91
+ }
92
+ exports.NullConstant = NullConstant;
93
+ NullConstant.INSTANCE = new NullConstant();
94
+ class UndefinedConstant extends Constant {
95
+ constructor() {
96
+ super(TSConst_1.UNDEFINED_KEYWORD, Type_1.UndefinedType.getInstance());
97
+ }
98
+ static getInstance() {
99
+ return this.INSTANCE;
100
+ }
101
+ }
102
+ exports.UndefinedConstant = UndefinedConstant;
103
+ UndefinedConstant.INSTANCE = new UndefinedConstant();
@@ -1,10 +1,11 @@
1
1
  import { BasicBlock } from '../graph/BasicBlock';
2
- import { ArkClass } from '../model/ArkClass';
3
2
  import { MethodSignature } from '../model/ArkSignature';
4
3
  import { Local } from './Local';
5
4
  import { ArrayType, ClassType, Type } from './Type';
6
5
  import { Value } from './Value';
7
6
  import { AbstractFieldRef } from './Ref';
7
+ import { Scene } from '../../Scene';
8
+ import { ArkMethod } from '../model/ArkMethod';
8
9
  /**
9
10
  * @category core/base/expr
10
11
  */
@@ -12,7 +13,7 @@ export declare abstract class AbstractExpr implements Value {
12
13
  abstract getUses(): Value[];
13
14
  abstract getType(): Type;
14
15
  abstract toString(): string;
15
- inferType(arkClass: ArkClass): AbstractExpr;
16
+ inferType(arkMethod: ArkMethod): AbstractExpr;
16
17
  }
17
18
  export declare abstract class AbstractInvokeExpr extends AbstractExpr {
18
19
  private methodSignature;
@@ -26,12 +27,12 @@ export declare abstract class AbstractInvokeExpr extends AbstractExpr {
26
27
  * @example
27
28
  * 1. 3AC information composed of getMethodSignature ().
28
29
 
29
- ```typescript
30
- let strs: string[] = [];
31
- strs.push('staticinvoke <');
32
- strs.push(this.getMethodSignature().toString());
33
- strs.push('>(');
34
- ```
30
+ ```typescript
31
+ let strs: string[] = [];
32
+ strs.push('staticinvoke <');
33
+ strs.push(this.getMethodSignature().toString());
34
+ strs.push('>(');
35
+ ```
35
36
  */
36
37
  getMethodSignature(): MethodSignature;
37
38
  setMethodSignature(newMethodSignature: MethodSignature): void;
@@ -47,26 +48,30 @@ export declare abstract class AbstractInvokeExpr extends AbstractExpr {
47
48
  * @example
48
49
  * 1. get args number.
49
50
 
50
- ```typescript
51
- const argsNum = expr.getArgs().length;
52
- if (argsNum < 5) {
53
- ... ...
54
- }
55
- ```
51
+ ```typescript
52
+ const argsNum = expr.getArgs().length;
53
+ if (argsNum < 5) {
54
+ ... ...
55
+ }
56
+ ```
56
57
 
57
- 2. iterate arg based on expression
58
+ 2. iterate arg based on expression
58
59
 
59
- ```typescript
60
- for (const arg of this.getArgs()) {
61
- strs.push(arg.toString());
62
- strs.push(', ');
63
- }
64
- ```
60
+ ```typescript
61
+ for (const arg of this.getArgs()) {
62
+ strs.push(arg.toString());
63
+ strs.push(', ');
64
+ }
65
+ ```
65
66
  */
66
67
  getArgs(): Value[];
67
68
  setArgs(newArgs: Value[]): void;
69
+ inferArgs(arkMethod: ArkMethod): void;
70
+ private inferArg;
68
71
  getType(): Type;
69
72
  getRealGenericTypes(): Type[] | undefined;
73
+ inferMethod(baseType: Type, methodName: string, scene: Scene): AbstractInvokeExpr | null;
74
+ private processClassMethod;
70
75
  getUses(): Value[];
71
76
  }
72
77
  export declare class ArkInstanceInvokeExpr extends AbstractInvokeExpr {
@@ -86,15 +91,15 @@ export declare class ArkInstanceInvokeExpr extends AbstractInvokeExpr {
86
91
  */
87
92
  getUses(): Value[];
88
93
  toString(): string;
89
- inferType(arkClass: ArkClass): AbstractInvokeExpr;
94
+ inferType(arkMethod: ArkMethod): AbstractInvokeExpr;
90
95
  private processForEach;
91
96
  private tryInferFormGlobal;
92
- private inferMethod;
93
97
  }
94
98
  export declare class ArkStaticInvokeExpr extends AbstractInvokeExpr {
95
99
  constructor(methodSignature: MethodSignature, args: Value[], realGenericTypes?: Type[]);
96
100
  toString(): string;
97
- inferType(arkClass: ArkClass): ArkStaticInvokeExpr;
101
+ inferType(arkMethod: ArkMethod): ArkStaticInvokeExpr;
102
+ private processDynamicImport;
98
103
  }
99
104
  export declare class ArkPtrInvokeExpr extends AbstractInvokeExpr {
100
105
  private funPtrLocal;
@@ -102,7 +107,7 @@ export declare class ArkPtrInvokeExpr extends AbstractInvokeExpr {
102
107
  setFunPtrLocal(ptr: Local): void;
103
108
  getFuncPtrLocal(): Local;
104
109
  toString(): string;
105
- inferType(arkClass: ArkClass): ArkPtrInvokeExpr;
110
+ inferType(arkMethod: ArkMethod): ArkPtrInvokeExpr;
106
111
  }
107
112
  export declare class ArkNewExpr extends AbstractExpr {
108
113
  private classType;
@@ -111,7 +116,7 @@ export declare class ArkNewExpr extends AbstractExpr {
111
116
  getUses(): Value[];
112
117
  getType(): Type;
113
118
  toString(): string;
114
- inferType(arkClass: ArkClass): ArkNewExpr;
119
+ inferType(arkMethod: ArkMethod): ArkNewExpr;
115
120
  }
116
121
  export declare class ArkNewArrayExpr extends AbstractExpr {
117
122
  private baseType;
@@ -124,7 +129,7 @@ export declare class ArkNewArrayExpr extends AbstractExpr {
124
129
  getBaseType(): Type;
125
130
  setBaseType(newType: Type): void;
126
131
  isFromLiteral(): boolean;
127
- inferType(arkClass: ArkClass): ArkNewArrayExpr;
132
+ inferType(arkMethod: ArkMethod): ArkNewArrayExpr;
128
133
  getUses(): Value[];
129
134
  toString(): string;
130
135
  }
@@ -143,7 +148,7 @@ export declare class ArkAwaitExpr extends AbstractExpr {
143
148
  getPromise(): Value;
144
149
  setPromise(newPromise: Value): void;
145
150
  getType(): Type;
146
- inferType(arkClass: ArkClass): ArkAwaitExpr;
151
+ inferType(arkMethod: ArkMethod): ArkAwaitExpr;
147
152
  getUses(): Value[];
148
153
  toString(): string;
149
154
  }
@@ -210,26 +215,26 @@ export declare abstract class AbstractBinopExpr extends AbstractExpr {
210
215
  * one is the normal binary operator and the other is relational binary operator.
211
216
  * @returns The binary operator from the statement.
212
217
  * @example
213
- ```typescript
214
- if (expr instanceof AbstractBinopExpr) {
215
- let op1: Value = expr.getOp1();
216
- let op2: Value = expr.getOp2();
217
- let operator: string = expr.getOperator();
218
- ... ...
219
- }
220
- ```
218
+ ```typescript
219
+ if (expr instanceof AbstractBinopExpr) {
220
+ let op1: Value = expr.getOp1();
221
+ let op2: Value = expr.getOp2();
222
+ let operator: string = expr.getOperator();
223
+ ... ...
224
+ }
225
+ ```
221
226
  */
222
227
  getOperator(): BinaryOperator;
223
228
  getType(): Type;
224
229
  getUses(): Value[];
225
230
  toString(): string;
226
- protected inferOpType(op: Value, arkClass: ArkClass): void;
231
+ protected inferOpType(op: Value, arkMethod: ArkMethod): void;
227
232
  protected setType(): void;
228
- inferType(arkClass: ArkClass): AbstractBinopExpr;
233
+ inferType(arkMethod: ArkMethod): AbstractBinopExpr;
229
234
  }
230
235
  export declare class ArkConditionExpr extends AbstractBinopExpr {
231
236
  constructor(op1: Value, op2: Value, operator: RelationalBinaryOperator);
232
- inferType(arkClass: ArkClass): ArkConditionExpr;
237
+ inferType(arkMethod: ArkMethod): ArkConditionExpr;
233
238
  }
234
239
  export declare class ArkNormalBinopExpr extends AbstractBinopExpr {
235
240
  constructor(op1: Value, op2: Value, operator: NormalBinaryOperator);
@@ -262,7 +267,7 @@ export declare class ArkCastExpr extends AbstractExpr {
262
267
  setOp(newOp: Value): void;
263
268
  getUses(): Value[];
264
269
  getType(): Type;
265
- inferType(arkClass: ArkClass): AbstractExpr;
270
+ inferType(arkMethod: ArkMethod): AbstractExpr;
266
271
  toString(): string;
267
272
  }
268
273
  export declare class ArkPhiExpr extends AbstractExpr {
@@ -1 +1 @@
1
- {"version":3,"file":"Expr.d.ts","sourceRoot":"","sources":["../../../src/core/base/Expr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Expr.d.ts","sourceRoot":"","sources":["../../../src/core/base/Expr.ts"],"names":[],"mappings":"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"}