arkanalyzer 1.0.27 → 1.0.28

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 (42) hide show
  1. package/config/arkanalyzer.json +1 -0
  2. package/lib/VFG/DVFG.d.ts +43 -0
  3. package/lib/VFG/DVFG.d.ts.map +1 -0
  4. package/lib/VFG/DVFG.js +109 -0
  5. package/lib/VFG/builder/DVFGBuilder.d.ts +17 -0
  6. package/lib/VFG/builder/DVFGBuilder.d.ts.map +1 -0
  7. package/lib/VFG/builder/DVFGBuilder.js +111 -0
  8. package/lib/callgraph/algorithm/AbstractAnalysis.d.ts.map +1 -1
  9. package/lib/callgraph/algorithm/AbstractAnalysis.js +1 -0
  10. package/lib/callgraph/model/CallGraph.d.ts +4 -0
  11. package/lib/callgraph/model/CallGraph.d.ts.map +1 -1
  12. package/lib/callgraph/model/CallGraph.js +29 -0
  13. package/lib/callgraph/pointerAnalysis/Pag.js +3 -3
  14. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts +10 -3
  15. package/lib/callgraph/pointerAnalysis/PagBuilder.d.ts.map +1 -1
  16. package/lib/callgraph/pointerAnalysis/PagBuilder.js +141 -62
  17. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts +2 -0
  18. package/lib/callgraph/pointerAnalysis/PointerAnalysis.d.ts.map +1 -1
  19. package/lib/callgraph/pointerAnalysis/PointerAnalysis.js +33 -7
  20. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts +7 -2
  21. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.d.ts.map +1 -1
  22. package/lib/callgraph/pointerAnalysis/PointerAnalysisConfig.js +10 -4
  23. package/lib/core/base/Ref.d.ts +0 -1
  24. package/lib/core/base/Ref.d.ts.map +1 -1
  25. package/lib/core/base/Ref.js +0 -11
  26. package/lib/core/base/Type.d.ts.map +1 -1
  27. package/lib/core/common/IRInference.d.ts +3 -0
  28. package/lib/core/common/IRInference.d.ts.map +1 -1
  29. package/lib/core/common/IRInference.js +62 -23
  30. package/lib/core/common/SdkUtils.js +1 -1
  31. package/lib/core/common/TypeInference.d.ts +5 -3
  32. package/lib/core/common/TypeInference.d.ts.map +1 -1
  33. package/lib/core/common/TypeInference.js +92 -59
  34. package/lib/core/dataflow/ReachingDef.d.ts.map +1 -1
  35. package/lib/core/dataflow/ReachingDef.js +1 -0
  36. package/lib/core/graph/BaseImplicitGraph.d.ts +1 -0
  37. package/lib/core/graph/BaseImplicitGraph.d.ts.map +1 -1
  38. package/lib/core/graph/BaseImplicitGraph.js +6 -0
  39. package/lib/index.d.ts +2 -0
  40. package/lib/index.d.ts.map +1 -1
  41. package/lib/index.js +6 -2
  42. package/package.json +2 -2
@@ -62,7 +62,7 @@ class CSFuncID {
62
62
  }
63
63
  exports.CSFuncID = CSFuncID;
64
64
  class PagBuilder {
65
- constructor(p, cg, s, kLimit) {
65
+ constructor(p, cg, s, kLimit, scale) {
66
66
  this.handledFunc = new Set();
67
67
  this.worklist = [];
68
68
  // TODO: change string to hash value
@@ -73,7 +73,7 @@ class PagBuilder {
73
73
  this.cid2ThisLocalMap = new Map();
74
74
  this.sdkMethodReturnValueMap = new Map();
75
75
  // record the SDK API param, and create fake Values
76
- this.sdkMethodParamValueMap = new Map();
76
+ this.methodParamValueMap = new Map();
77
77
  this.fakeSdkMethodParamDeclaringStmt = new Stmt_1.ArkAssignStmt(new Local_1.Local(""), new Local_1.Local(""));
78
78
  this.funcHandledThisRound = new Set();
79
79
  this.updatedNodesThisRound = new Map();
@@ -83,6 +83,7 @@ class PagBuilder {
83
83
  this.externalScopeVariableMap = new Map();
84
84
  this.pag = p;
85
85
  this.cg = cg;
86
+ this.scale = scale;
86
87
  this.funcPags = new Map;
87
88
  this.ctx = new Context_1.KLimitedContextSensitive(kLimit);
88
89
  this.scene = s;
@@ -163,52 +164,10 @@ class PagBuilder {
163
164
  continue;
164
165
  }
165
166
  // handle call
166
- let ivkExpr = stmt.getInvokeExpr();
167
- if (ivkExpr instanceof Expr_1.ArkStaticInvokeExpr) {
168
- let cs = this.cg.getCallSiteByStmt(stmt);
169
- if (cs) {
170
- // direct call is already existing in CG
171
- // TODO: API Invoke stmt has anonymous method param, how to add these param into callee
172
- fpag.addNormalCallSite(cs);
173
- if (ivkExpr.getMethodSignature().getDeclaringClassSignature()
174
- .getDeclaringFileSignature().getFileName() === Const_1.UNKNOWN_FILE_NAME) {
175
- fpag.addUnknownCallSite(cs);
176
- continue;
177
- }
178
- }
179
- else {
180
- throw new Error('Can not find static callsite');
181
- }
182
- }
183
- else if (ivkExpr instanceof Expr_1.ArkInstanceInvokeExpr || ivkExpr instanceof Expr_1.ArkPtrInvokeExpr) {
184
- let ptcs = this.cg.getDynCallsiteByStmt(stmt);
185
- if (ptcs) {
186
- this.addToDynamicCallSite(fpag, ptcs);
187
- }
188
- }
167
+ this.buildInvokeExprInAssignStmt(stmt, fpag);
189
168
  }
190
- else if (stmt instanceof Stmt_1.ArkInvokeStmt) {
191
- // TODO: discuss if we need a invokeStmt
192
- let cs = this.cg.getCallSiteByStmt(stmt);
193
- if (cs) {
194
- // direct call or constructor call is already existing in CG
195
- // TODO: some ptr invoke stmt is recognized as Static invoke in tests/resources/callgraph/funPtrTest1/fnPtrTest4.ts
196
- // TODO: instance invoke(ptr invoke)
197
- if (this.cg.isUnknownMethod(cs.calleeFuncID)) {
198
- fpag.addUnknownCallSite(cs);
199
- }
200
- else {
201
- fpag.addNormalCallSite(cs);
202
- }
203
- continue;
204
- }
205
- let dycs = this.cg.getDynCallsiteByStmt(stmt);
206
- if (dycs) {
207
- this.addToDynamicCallSite(fpag, dycs);
208
- }
209
- else {
210
- throw new Error('Can not find callsite by stmt');
211
- }
169
+ else if (stmt instanceof Stmt_1.ArkInvokeStmt && this.scale === PointerAnalysisConfig_1.PtaAnalysisScale.WholeProgram) {
170
+ this.buildInvokeExprInInvokeStmt(stmt, fpag);
212
171
  }
213
172
  else {
214
173
  // TODO: need handle other type of stmt?
@@ -218,27 +177,109 @@ class PagBuilder {
218
177
  this.pagStat.numTotalFunction++;
219
178
  return true;
220
179
  }
180
+ buildInvokeExprInAssignStmt(stmt, fpag) {
181
+ let ivkExpr = stmt.getInvokeExpr();
182
+ if (ivkExpr instanceof Expr_1.ArkStaticInvokeExpr) {
183
+ let cs = this.cg.getCallSiteByStmt(stmt);
184
+ if (cs) {
185
+ // direct call is already existing in CG
186
+ // TODO: API Invoke stmt has anonymous method param, how to add these param into callee
187
+ fpag.addNormalCallSite(cs);
188
+ if (ivkExpr.getMethodSignature().getDeclaringClassSignature()
189
+ .getDeclaringFileSignature().getFileName() === Const_1.UNKNOWN_FILE_NAME) {
190
+ fpag.addUnknownCallSite(cs);
191
+ return;
192
+ }
193
+ }
194
+ else {
195
+ throw new Error('Can not find static callsite');
196
+ }
197
+ }
198
+ else if (ivkExpr instanceof Expr_1.ArkInstanceInvokeExpr || ivkExpr instanceof Expr_1.ArkPtrInvokeExpr) {
199
+ let ptcs = this.cg.getDynCallsiteByStmt(stmt);
200
+ if (ptcs) {
201
+ this.addToDynamicCallSite(fpag, ptcs);
202
+ }
203
+ }
204
+ }
205
+ buildInvokeExprInInvokeStmt(stmt, fpag) {
206
+ // TODO: discuss if we need a invokeStmt
207
+ let cs = this.cg.getCallSiteByStmt(stmt);
208
+ if (cs) {
209
+ // direct call or constructor call is already existing in CG
210
+ // TODO: some ptr invoke stmt is recognized as Static invoke in tests/resources/callgraph/funPtrTest1/fnPtrTest4.ts
211
+ // TODO: instance invoke(ptr invoke)
212
+ if (this.cg.isUnknownMethod(cs.calleeFuncID)) {
213
+ fpag.addUnknownCallSite(cs);
214
+ }
215
+ else {
216
+ fpag.addNormalCallSite(cs);
217
+ }
218
+ return;
219
+ }
220
+ let dycs = this.cg.getDynCallsiteByStmt(stmt);
221
+ if (dycs) {
222
+ this.addToDynamicCallSite(fpag, dycs);
223
+ }
224
+ else {
225
+ throw new Error('Can not find callsite by stmt');
226
+ }
227
+ }
221
228
  /**
222
229
  * will not create real funcPag, only create param values
223
230
  */
224
231
  buildSDKFuncPag(funcID) {
225
- var _a;
226
232
  // check if SDK method
227
233
  let cgNode = this.cg.getNode(funcID);
228
234
  if (!cgNode.isSdkMethod()) {
229
235
  return;
230
236
  }
231
- let args = (_a = this.cg.getArkMethodByFuncID(funcID)) === null || _a === void 0 ? void 0 : _a.getParameters();
237
+ let paramArr = this.createDummyParamValue(funcID);
238
+ this.methodParamValueMap.set(funcID, paramArr);
239
+ }
240
+ createDummyParamValue(funcID, type = 1) {
241
+ let arkMethod = this.cg.getArkMethodByFuncID(funcID);
242
+ if (!arkMethod) {
243
+ return new Map();
244
+ }
245
+ let args = arkMethod.getParameters();
232
246
  if (!args) {
233
- return;
247
+ return new Map();
248
+ }
249
+ let paramArr = new Map();
250
+ if (type === 0) {
251
+ // heapObj
252
+ args.forEach((arg, index) => {
253
+ let paramType = arg.getType();
254
+ if (!(paramType instanceof Type_1.ClassType)) {
255
+ return;
256
+ // TODO: support more type
257
+ }
258
+ let argInstance = new Expr_1.ArkNewExpr(paramType);
259
+ paramArr.set(index, argInstance);
260
+ });
234
261
  }
235
- let paramArr = [];
236
- args.forEach((arg) => {
237
- let argInstance = new Local_1.Local(arg.getName(), arg.getType());
238
- argInstance.setDeclaringStmt(this.fakeSdkMethodParamDeclaringStmt);
239
- paramArr.push(argInstance);
262
+ else if (type === 1) {
263
+ // Local
264
+ args.forEach((arg, index) => {
265
+ let argInstance = new Local_1.Local(arg.getName(), arg.getType());
266
+ argInstance.setDeclaringStmt(this.fakeSdkMethodParamDeclaringStmt);
267
+ paramArr.set(index, argInstance);
268
+ });
269
+ }
270
+ return paramArr;
271
+ }
272
+ createDummyParamPagNodes(value, funcID) {
273
+ let paramPagNodes = new Map();
274
+ let method = this.cg.getArkMethodByFuncID(funcID);
275
+ if (!method || !method.getCfg()) {
276
+ return paramPagNodes;
277
+ }
278
+ value.forEach((v, index) => {
279
+ let paramArkExprNode = this.pag.getOrNewNode(Context_1.DUMMY_CID, v, this.fakeSdkMethodParamDeclaringStmt);
280
+ paramPagNodes.set(index, paramArkExprNode.getID());
240
281
  });
241
- this.sdkMethodParamValueMap.set(funcID, paramArr);
282
+ return paramPagNodes;
242
283
  }
243
284
  buildPagFromFuncPag(funcID, cid) {
244
285
  var _a;
@@ -249,7 +290,7 @@ class PagBuilder {
249
290
  if (this.handledFunc.has(`${cid}-${funcID}`)) {
250
291
  return;
251
292
  }
252
- this.addEdgesFromFuncPag(funcPag, cid);
293
+ this.addEdgesFromFuncPag(funcPag, cid, funcID);
253
294
  let interFuncPag = (_a = this.interFuncPags) === null || _a === void 0 ? void 0 : _a.get(funcID);
254
295
  if (interFuncPag) {
255
296
  this.addEdgesFromInterFuncPag(interFuncPag, cid);
@@ -260,11 +301,16 @@ class PagBuilder {
260
301
  this.handledFunc.add(`${cid}-${funcID}`);
261
302
  }
262
303
  /// Add Pag Nodes and Edges in function
263
- addEdgesFromFuncPag(funcPag, cid) {
304
+ addEdgesFromFuncPag(funcPag, cid, funcID) {
264
305
  let inEdges = funcPag.getInternalEdges();
265
306
  if (inEdges === undefined) {
266
307
  return false;
267
308
  }
309
+ let paramNodes;
310
+ let paramRefIndex = 0;
311
+ if (this.scale === PointerAnalysisConfig_1.PtaAnalysisScale.MethodLevel) {
312
+ paramNodes = this.createDummyParamPagNodes(this.createDummyParamValue(funcID, 0), funcID);
313
+ }
268
314
  for (let e of inEdges) {
269
315
  let srcPagNode = this.getOrNewPagNode(cid, e.src, e.stmt);
270
316
  let dstPagNode = this.getOrNewPagNode(cid, e.dst, e.stmt);
@@ -273,6 +319,14 @@ class PagBuilder {
273
319
  if (dstPagNode.getStmt() instanceof Stmt_1.ArkReturnStmt) {
274
320
  dstPagNode.setStmt(e.stmt);
275
321
  }
322
+ // for demand-driven analysis, add fake parameter heapObj nodes
323
+ if (e.src instanceof Ref_1.ArkParameterRef && this.scale === PointerAnalysisConfig_1.PtaAnalysisScale.MethodLevel) {
324
+ let paramObjNodeID = paramNodes === null || paramNodes === void 0 ? void 0 : paramNodes.get(paramRefIndex++);
325
+ if (!paramObjNodeID) {
326
+ continue;
327
+ }
328
+ this.pag.addPagEdge(this.pag.getNode(paramObjNodeID), srcPagNode, Pag_1.PagEdgeKind.Address);
329
+ }
276
330
  }
277
331
  return true;
278
332
  }
@@ -282,6 +336,9 @@ class PagBuilder {
282
336
  let ivkExpr = cs.callStmt.getInvokeExpr();
283
337
  let calleeCid = this.ctx.getOrNewContext(cid, cs.calleeFuncID, true);
284
338
  let calleeCGNode = this.cg.getNode(cs.calleeFuncID);
339
+ if (this.scale === PointerAnalysisConfig_1.PtaAnalysisScale.MethodLevel) {
340
+ this.addStaticPagCallReturnEdge(cs, cid, calleeCid);
341
+ }
285
342
  // process the Storage API(Static)
286
343
  if (!this.processStorage(cs, calleeCGNode, cid)) {
287
344
  // If not Storage API, process normal edge
@@ -508,6 +565,10 @@ class PagBuilder {
508
565
  if (!this.cg.detectReachable(dstCGNode.getID(), callerNode.getID())) {
509
566
  let calleeCid = this.ctx.getOrNewContext(cid, dstCGNode.getID(), true);
510
567
  let staticCS = new CallGraph_1.CallSite(cs.callStmt, cs.args, dstCGNode.getID(), cs.callerFuncID);
568
+ if (this.scale === PointerAnalysisConfig_1.PtaAnalysisScale.MethodLevel) {
569
+ srcNodes.push(...this.addStaticPagCallReturnEdge(staticCS, baseClassPTNode, calleeCid));
570
+ continue;
571
+ }
511
572
  srcNodes.push(...this.processContainerPagCallEdge(staticCS, cid, baseClassPTNode));
512
573
  srcNodes.push(...this.addStaticPagCallEdge(staticCS, cid, calleeCid));
513
574
  // Pass base's pts to callee's this pointer
@@ -752,6 +813,21 @@ class PagBuilder {
752
813
  }
753
814
  return srcNodes;
754
815
  }
816
+ addStaticPagCallReturnEdge(cs, callerCid, calleeCid) {
817
+ if (!calleeCid) {
818
+ calleeCid = this.ctx.getOrNewContext(callerCid, cs.calleeFuncID, true);
819
+ }
820
+ let srcNodes = [];
821
+ // Add reachable
822
+ let calleeNode = this.cg.getNode(cs.calleeFuncID);
823
+ let calleeMethod = this.scene.getMethod(calleeNode.getMethod());
824
+ if (!calleeMethod) {
825
+ // TODO: check if nodes need to delete
826
+ return srcNodes;
827
+ }
828
+ srcNodes.push(...this.addSDKMethodReturnPagEdge(cs, callerCid, calleeCid, calleeMethod));
829
+ return srcNodes;
830
+ }
755
831
  addCallParamPagEdge(params, cs, callerCid, calleeCid) {
756
832
  var _a, _b, _c;
757
833
  let srcNodes = [];
@@ -819,17 +895,18 @@ class PagBuilder {
819
895
  if ((0, PTAUtils_1.IsCollectionAPI)(calleeMethod.getSignature())) {
820
896
  return srcNodes;
821
897
  }
822
- if (!this.sdkMethodParamValueMap.has(calleeNode.getID())) {
898
+ if (!this.methodParamValueMap.has(calleeNode.getID())) {
823
899
  this.buildSDKFuncPag(calleeNode.getID());
824
900
  }
825
- this.addSDKMethodReturnPagEdge(cs, callerCid, calleeCid, calleeMethod);
901
+ srcNodes.push(...this.addSDKMethodReturnPagEdge(cs, callerCid, calleeCid, calleeMethod));
826
902
  srcNodes.push(...this.addSDKMethodParamPagEdge(cs, callerCid, calleeCid, calleeNode.getID()));
827
903
  return srcNodes;
828
904
  }
829
905
  addSDKMethodReturnPagEdge(cs, callerCid, calleeCid, calleeMethod) {
906
+ let srcNodes = [];
830
907
  let returnType = calleeMethod.getReturnType();
831
908
  if (!(returnType instanceof Type_1.ClassType) || !(cs.callStmt instanceof Stmt_1.ArkAssignStmt)) {
832
- return;
909
+ return srcNodes;
833
910
  }
834
911
  // check fake heap object exists or not
835
912
  let cidMap = this.sdkMethodReturnValueMap.get(calleeMethod);
@@ -847,6 +924,8 @@ class PagBuilder {
847
924
  let srcPagNode = this.getOrNewPagNode(calleeCid, newExpr);
848
925
  let dstPagNode = this.getOrNewPagNode(callerCid, cs.callStmt.getLeftOp(), cs.callStmt);
849
926
  this.pag.addPagEdge(srcPagNode, dstPagNode, Pag_1.PagEdgeKind.Address, cs.callStmt);
927
+ srcNodes.push(srcPagNode.getID());
928
+ return srcNodes;
850
929
  }
851
930
  addSDKMethodParamPagEdge(cs, callerCid, calleeCid, funcID) {
852
931
  var _a, _b;
@@ -859,7 +938,7 @@ class PagBuilder {
859
938
  let paramValue;
860
939
  if (arg instanceof Local_1.Local && arg.getType() instanceof Type_1.FunctionType) {
861
940
  // TODO: cannot find value
862
- paramValue = this.sdkMethodParamValueMap.get(funcID)[i];
941
+ paramValue = this.methodParamValueMap.get(funcID).get(i);
863
942
  }
864
943
  else {
865
944
  continue;
@@ -8,6 +8,7 @@ import { Stmt } from '../../core/base/Stmt';
8
8
  import { Pag } from './Pag';
9
9
  import { PointerAnalysisConfig } from './PointerAnalysisConfig';
10
10
  import { DiffPTData, IPtsCollection } from './PtsDS';
11
+ import { ArkMethod } from '../../core/model/ArkMethod';
11
12
  export declare class PointerAnalysis extends AbstractAnalysis {
12
13
  private pag;
13
14
  private pagBuilder;
@@ -19,6 +20,7 @@ export declare class PointerAnalysis extends AbstractAnalysis {
19
20
  private config;
20
21
  constructor(p: Pag, cg: CallGraph, s: Scene, config: PointerAnalysisConfig);
21
22
  static pointerAnalysisForWholeProject(projectScene: Scene, config?: PointerAnalysisConfig): PointerAnalysis;
23
+ static pointerAnalysisForMethod(s: Scene, method: ArkMethod, config?: PointerAnalysisConfig): PointerAnalysis;
22
24
  protected init(): void;
23
25
  start(): void;
24
26
  private postProcess;
@@ -1 +1 @@
1
- {"version":3,"file":"PointerAnalysis.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PointerAnalysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PointerAnalysis.d.ts","sourceRoot":"","sources":["../../../src/callgraph/pointerAnalysis/PointerAnalysis.ts"],"names":[],"mappings":"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"}
@@ -62,7 +62,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
62
62
  this.pag = p;
63
63
  this.cg = cg;
64
64
  this.ptd = new PtsDS_1.DiffPTData(config.ptsCollectionCtor);
65
- this.pagBuilder = new PagBuilder_1.PagBuilder(this.pag, this.cg, s, config.kLimit);
65
+ this.pagBuilder = new PagBuilder_1.PagBuilder(this.pag, this.cg, s, config.kLimit, config.analysisScale);
66
66
  this.cgBuilder = new CallGraphBuilder_1.CallGraphBuilder(this.cg, s);
67
67
  this.ptaStat = new Statistics_1.PTAStat(this);
68
68
  this.config = config;
@@ -86,6 +86,20 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
86
86
  pta.start();
87
87
  return pta;
88
88
  }
89
+ static pointerAnalysisForMethod(s, method, config) {
90
+ let cg = new CallGraph_1.CallGraph(s);
91
+ let cgBuilder = new CallGraphBuilder_1.CallGraphBuilder(cg, s);
92
+ cgBuilder.buildDirectCallGraphForScene();
93
+ let pag = new Pag_1.Pag();
94
+ if (!config) {
95
+ config = PointerAnalysisConfig_1.PointerAnalysisConfig.create(1, 'out/', false, false);
96
+ }
97
+ let entryMethodID = cg.getCallGraphNodeByMethod(method.getSignature()).getID();
98
+ let pta = new PointerAnalysis(pag, cg, s, config);
99
+ pta.setEntries([entryMethodID]);
100
+ pta.start();
101
+ return pta;
102
+ }
89
103
  init() {
90
104
  logger.warn(`========== Init Pointer Analysis ==========`);
91
105
  // start statistics
@@ -143,7 +157,12 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
143
157
  // do pointer transfer
144
158
  this.solveWorklist();
145
159
  // process dynamic call
146
- reanalyzer = this.onTheFlyDynamicCallSolve();
160
+ if (this.config.analysisScale === PointerAnalysisConfig_1.PtaAnalysisScale.WholeProgram || this.ptaStat.iterTimes === 1) {
161
+ reanalyzer = this.onTheFlyDynamicCallSolve();
162
+ }
163
+ else {
164
+ reanalyzer = false;
165
+ }
147
166
  if (this.config.dotDump) {
148
167
  this.pag.dump(path_1.default.join(this.config.outputDirectory, `pta_pag_itor#${this.ptaStat.iterTimes}.dot`));
149
168
  }
@@ -153,6 +172,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
153
172
  * get newly added Address Edge, and add them to initial WorkList
154
173
  */
155
174
  initWorklist() {
175
+ let changed = false;
156
176
  for (let e of this.pag.getAddrEdges()) {
157
177
  this.ptaStat.numProcessedAddr++;
158
178
  let { src, dst } = e.getEndPoints();
@@ -163,8 +183,10 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
163
183
  this.worklist.push(src);
164
184
  }
165
185
  this.worklist.push(dst);
186
+ changed = true;
166
187
  }
167
188
  this.pag.resetAddrEdges();
189
+ return changed;
168
190
  }
169
191
  solveWorklist() {
170
192
  while (this.worklist.length > 0) {
@@ -343,7 +365,7 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
343
365
  let srcNodes = this.pagBuilder.handleUnprocessedCallSites(processedCallSites);
344
366
  changed = this.addToReanalyze(srcNodes) || changed;
345
367
  changed = this.pagBuilder.handleReachable() || changed;
346
- this.initWorklist();
368
+ changed = this.initWorklist() || changed;
347
369
  return changed;
348
370
  }
349
371
  processDynCallSite(node, pts, processedCallSites) {
@@ -455,8 +477,10 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
455
477
  }
456
478
  addIncomingEdgesToWorkList(valueNode, workListNodes, processedNodes) {
457
479
  let inCopyEdges = valueNode.getIncomingCopyEdges();
458
- if (inCopyEdges) {
459
- inCopyEdges.forEach(edge => {
480
+ let inThisEdges = valueNode.getIncomingThisEdges();
481
+ let combinedEdges = new Set([...inCopyEdges !== null && inCopyEdges !== void 0 ? inCopyEdges : [], ...inThisEdges !== null && inThisEdges !== void 0 ? inThisEdges : []]);
482
+ if (combinedEdges) {
483
+ combinedEdges.forEach(edge => {
460
484
  let srcID = edge.getSrcID();
461
485
  if (!processedNodes.has(srcID)) {
462
486
  workListNodes.push(srcID);
@@ -466,8 +490,10 @@ class PointerAnalysis extends AbstractAnalysis_1.AbstractAnalysis {
466
490
  }
467
491
  addOutgoingEdgesToWorkList(valueNode, workListNodes, processedNodes) {
468
492
  let outCopyEdges = valueNode.getOutgoingCopyEdges();
469
- if (outCopyEdges) {
470
- outCopyEdges.forEach(edge => {
493
+ let outThisEdges = valueNode.getOutgoingThisEdges();
494
+ let combinedEdges = new Set([...outCopyEdges !== null && outCopyEdges !== void 0 ? outCopyEdges : [], ...outThisEdges !== null && outThisEdges !== void 0 ? outThisEdges : []]);
495
+ if (combinedEdges) {
496
+ combinedEdges.forEach(edge => {
471
497
  let dstID = edge.getDstID();
472
498
  if (!processedNodes.has(dstID)) {
473
499
  workListNodes.push(dstID);
@@ -1,5 +1,9 @@
1
1
  import { IPtsCollection, PtsCollectionType } from './PtsDS';
2
2
  import { NodeID } from '../../core/graph/BaseExplicitGraph';
3
+ export declare enum PtaAnalysisScale {
4
+ WholeProgram = 0,
5
+ MethodLevel = 1
6
+ }
3
7
  export declare class PointerAnalysisConfig {
4
8
  private static instance;
5
9
  kLimit: number;
@@ -7,10 +11,11 @@ export declare class PointerAnalysisConfig {
7
11
  detectTypeDiff: boolean;
8
12
  dotDump: boolean;
9
13
  unhandledFuncDump: boolean;
14
+ analysisScale: PtaAnalysisScale;
10
15
  ptsCollectionType: PtsCollectionType;
11
16
  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;
17
+ constructor(kLimit: number, outputDirectory: string, detectTypeDiff?: boolean, dotDump?: boolean, unhandledFuncDump?: boolean, analysisScale?: PtaAnalysisScale, ptsCoType?: PtsCollectionType);
18
+ static create(kLimit: number, outputDirectory: string, detectTypeDiff?: boolean, dotDump?: boolean, unhandledFuncDump?: boolean, analysisScale?: PtaAnalysisScale, ptsCoType?: PtsCollectionType): PointerAnalysisConfig;
14
19
  static getInstance(): PointerAnalysisConfig;
15
20
  }
16
21
  //# sourceMappingURL=PointerAnalysisConfig.d.ts.map
@@ -1 +1 @@
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
+ {"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,oBAAY,gBAAgB;IACxB,YAAY,IAAI;IAChB,WAAW,IAAI;CAClB;AAED,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,aAAa,EAAE,gBAAgB,CAAC;IAChC,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,EAC5D,aAAa,GAAE,gBAAgD,EAAE,SAAS,oBAAwB;WAuBxF,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,GAAE,OAAe,EACzF,OAAO,GAAE,OAAe,EAAE,iBAAiB,GAAE,OAAe,EAC5D,aAAa,GAAE,gBAAgD,EAAE,SAAS,oBAAwB,GAAG,qBAAqB;WAUhH,WAAW,IAAI,qBAAqB;CAMrD"}
@@ -37,15 +37,20 @@ var __importStar = (this && this.__importStar) || function (mod) {
37
37
  return result;
38
38
  };
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.PointerAnalysisConfig = void 0;
40
+ exports.PointerAnalysisConfig = exports.PtaAnalysisScale = void 0;
41
41
  const fs = __importStar(require("fs"));
42
42
  const PtsDS_1 = require("./PtsDS");
43
+ var PtaAnalysisScale;
44
+ (function (PtaAnalysisScale) {
45
+ PtaAnalysisScale[PtaAnalysisScale["WholeProgram"] = 0] = "WholeProgram";
46
+ PtaAnalysisScale[PtaAnalysisScale["MethodLevel"] = 1] = "MethodLevel";
47
+ })(PtaAnalysisScale = exports.PtaAnalysisScale || (exports.PtaAnalysisScale = {}));
43
48
  class PointerAnalysisConfig {
44
49
  /*
45
50
  * Note: DO NOT use `new PointerAnalysisConfig` to initialize ptaconfig
46
51
  * Use PointerAnalysisConfig.create() for singleton pattern
47
52
  */
48
- constructor(kLimit, outputDirectory, detectTypeDiff = false, dotDump = false, unhandledFuncDump = false, ptsCoType = PtsDS_1.PtsCollectionType.Set) {
53
+ constructor(kLimit, outputDirectory, detectTypeDiff = false, dotDump = false, unhandledFuncDump = false, analysisScale = PtaAnalysisScale.WholeProgram, ptsCoType = PtsDS_1.PtsCollectionType.Set) {
49
54
  if (kLimit > 5) {
50
55
  throw new Error('K Limit too large');
51
56
  }
@@ -54,6 +59,7 @@ class PointerAnalysisConfig {
54
59
  this.detectTypeDiff = detectTypeDiff;
55
60
  this.dotDump = dotDump;
56
61
  this.unhandledFuncDump = unhandledFuncDump;
62
+ this.analysisScale = analysisScale;
57
63
  this.ptsCollectionType = ptsCoType;
58
64
  this.ptsCollectionCtor = (0, PtsDS_1.createPtsCollectionCtor)(ptsCoType);
59
65
  if (!fs.existsSync(outputDirectory)) {
@@ -64,8 +70,8 @@ class PointerAnalysisConfig {
64
70
  * Create Singleton instance
65
71
  * The instance can be created multi-times and be overwrited
66
72
  */
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);
73
+ static create(kLimit, outputDirectory, detectTypeDiff = false, dotDump = false, unhandledFuncDump = false, analysisScale = PtaAnalysisScale.WholeProgram, ptsCoType = PtsDS_1.PtsCollectionType.Set) {
74
+ PointerAnalysisConfig.instance = new PointerAnalysisConfig(kLimit, outputDirectory, detectTypeDiff, dotDump, unhandledFuncDump, analysisScale, ptsCoType);
69
75
  return PointerAnalysisConfig.instance;
70
76
  }
71
77
  /*
@@ -134,7 +134,6 @@ export declare class ArkParameterRef extends AbstractRef {
134
134
  export declare class ArkThisRef extends AbstractRef {
135
135
  private type;
136
136
  constructor(type: ClassType);
137
- inferType(arkMethod: ArkMethod): AbstractRef;
138
137
  getType(): ClassType;
139
138
  getUses(): Value[];
140
139
  toString(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"Ref.d.ts","sourceRoot":"","sources":["../../../src/core/base/Ref.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAa,SAAS,EAAkB,IAAI,EAAe,MAAM,QAAQ,CAAC;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAK9B;;GAEG;AACH,8BAAsB,WAAY,YAAW,KAAK;IAC9C,QAAQ,CAAC,OAAO,IAAI,KAAK,EAAE;IAE3B,QAAQ,CAAC,OAAO,IAAI,IAAI;IAEjB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW;CAGtD;AAED,qBAAa,WAAY,SAAQ,WAAW;IACxC,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,KAAK,CAAQ;gBAET,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAMrC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACI,OAAO,IAAI,KAAK;IAIhB,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,IAAI;IAIpC;;;;;OAKG;IACI,QAAQ,IAAI,KAAK;IAIjB,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI;IAI/B,OAAO,IAAI,IAAI;IAUf,OAAO,IAAI,KAAK,EAAE;IASlB,QAAQ,IAAI,MAAM;CAG5B;AAED,8BAAsB,gBAAiB,SAAQ,WAAW;IACtD,OAAO,CAAC,cAAc,CAAiB;gBAE3B,cAAc,EAAE,cAAc;IAK1C;;;OAGG;IACI,YAAY,IAAI,MAAM;IAI7B;;;;;;;;;;;;;;;;;OAiBG;IACI,iBAAiB,IAAI,cAAc;IAInC,iBAAiB,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IAI1D,OAAO,IAAI,IAAI;CAGzB;AAED,qBAAa,mBAAoB,SAAQ,gBAAgB;IACrD,OAAO,CAAC,IAAI,CAAQ;gBAER,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,cAAc;IAKvD;;;;;;;;;;;;;;;;;;;OAmBG;IACI,OAAO,IAAI,KAAK;IAIhB,OAAO,CAAC,OAAO,EAAE,KAAK,GAAG,IAAI;IAI7B,OAAO,IAAI,KAAK,EAAE;IAOlB,QAAQ,IAAI,MAAM;IAIlB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW;CAItD;AAED,qBAAa,iBAAkB,SAAQ,gBAAgB;gBACvC,cAAc,EAAE,cAAc;IAInC,OAAO,IAAI,KAAK,EAAE;IAIlB,QAAQ,IAAI,MAAM;CAG5B;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAC5C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAO;gBAEZ,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI;IAMnC,QAAQ,IAAI,MAAM;IAIlB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,OAAO,EAAE,IAAI,GAAG,IAAI;IAI5B,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW;IAI5C,OAAO,IAAI,KAAK,EAAE;IAIlB,QAAQ,IAAI,MAAM;CAG5B;AAGD,qBAAa,UAAW,SAAQ,WAAW;IACvC,OAAO,CAAC,IAAI,CAAY;gBAEZ,IAAI,EAAE,SAAS;IAKpB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW;IAW5C,OAAO,IAAI,SAAS;IAIpB,OAAO,IAAI,KAAK,EAAE;IAIlB,QAAQ,IAAI,MAAM;CAG5B;AAED,qBAAa,qBAAsB,SAAQ,WAAW;IAClD,OAAO,CAAC,IAAI,CAAO;gBAEP,IAAI,EAAE,IAAI;IAKf,OAAO,IAAI,IAAI;IAIf,OAAO,IAAI,KAAK,EAAE;IAIlB,QAAQ,IAAI,MAAM;CAG5B;AAED,qBAAa,SAAU,SAAQ,WAAW;IACtC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,GAAG,CAAe;IAC1B,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK;IAO9B,OAAO,IAAI,MAAM;IAIjB,OAAO,IAAI,KAAK,EAAE;IAIlB,OAAO,IAAI,IAAI;IAIf,MAAM,IAAI,KAAK,GAAG,IAAI;IAItB,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI1B,YAAY,IAAI,IAAI,EAAE;IAItB,YAAY,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI;IAQ5C,QAAQ,IAAI,MAAM;CAG5B;AAED,qBAAa,eAAgB,SAAQ,WAAW;IAC5C,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,IAAI,CAAO;gBAEP,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAO/C,OAAO,IAAI,KAAK,EAAE;IAIlB,OAAO,IAAI,KAAK;IAIhB,OAAO,IAAI,IAAI;IAIf,YAAY,IAAI,MAAM;IAItB,QAAQ,IAAI,MAAM;IAIlB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW;CAYtD"}
1
+ {"version":3,"file":"Ref.d.ts","sourceRoot":"","sources":["../../../src/core/base/Ref.ts"],"names":[],"mappings":"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"}
@@ -41,7 +41,6 @@ exports.ClosureFieldRef = exports.GlobalRef = exports.ArkCaughtExceptionRef = ex
41
41
  const logger_1 = __importStar(require("../../utils/logger"));
42
42
  const Type_1 = require("./Type");
43
43
  const TypeInference_1 = require("../common/TypeInference");
44
- const Const_1 = require("../common/Const");
45
44
  const Stmt_1 = require("./Stmt");
46
45
  const IRInference_1 = require("../common/IRInference");
47
46
  const logger = logger_1.default.getLogger(logger_1.LOG_MODULE_TYPE.ARKANALYZER, 'Ref');
@@ -258,16 +257,6 @@ class ArkThisRef extends AbstractRef {
258
257
  super();
259
258
  this.type = type;
260
259
  }
261
- inferType(arkMethod) {
262
- const classSignature = this.type.getClassSignature();
263
- if (classSignature.getClassName().startsWith(Const_1.ANONYMOUS_CLASS_PREFIX)) {
264
- let type = TypeInference_1.TypeInference.inferBaseType(classSignature.getDeclaringClassName(), arkMethod.getDeclaringArkClass());
265
- if (type instanceof Type_1.ClassType) {
266
- this.type = type;
267
- }
268
- }
269
- return this;
270
- }
271
260
  getType() {
272
261
  return this.type;
273
262
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Type.d.ts","sourceRoot":"","sources":["../../../src/core/base/Type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Type.d.ts","sourceRoot":"","sources":["../../../src/core/base/Type.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,8 @@ export declare class IRInference {
23
23
  */
24
24
  private static processExtendFunc;
25
25
  static inferFieldRef(ref: ArkInstanceFieldRef, arkMethod: ArkMethod): AbstractRef;
26
+ private static inferBase;
27
+ static inferThisLocal(arkMethod: ArkMethod): Local | null;
26
28
  private static inferArgs;
27
29
  private static inferArg;
28
30
  static inferRightWithSdkType(leftType: Type, rightType: Type, ackClass: ArkClass): void;
@@ -37,6 +39,7 @@ export declare class IRInference {
37
39
  static inferLocal(base: Local, arkMethod: ArkMethod): void;
38
40
  private static generateNewFieldSignature;
39
41
  static inferAnonymousClass(anon: ArkClass | null, declaredSignature: ClassSignature, set?: Set<string>): void;
42
+ private static assignAnonMethod;
40
43
  private static assignAnonField;
41
44
  static inferAliasTypeExpr(expr: AliasTypeExpr, arkMethod: ArkMethod): AbstractExpr;
42
45
  static inferTypeQueryExpr(expr: TypeQueryExpr, arkMethod: ArkMethod): void;
@@ -1 +1 @@
1
- {"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAKH,SAAS,EAKT,IAAI,EAKP,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,OAAO,EACH,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EAErB,mBAAmB,EACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,OAAO,EAGH,cAAc,EAEd,eAAe,EAElB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAEH,WAAW,EAEX,mBAAmB,EACnB,eAAe,EAElB,MAAM,aAAa,CAAC;AAYrB,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAoB,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKlF,qBAAa,WAAW;IAEpB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAY/B,OAAO,CAAC,MAAM,CAAC,gBAAgB;WAMjB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;WAwB9B,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,kBAAkB;IAqCxG,OAAO,CAAC,MAAM,CAAC,iCAAiC;WAuClC,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,SAAS,GAAG,kBAAkB;IA8B5G;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;WAgBlB,aAAa,CAAC,GAAG,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,GAAG,WAAW;IAiBxF,OAAO,CAAC,MAAM,CAAC,SAAS;IAoBxB,OAAO,CAAC,MAAM,CAAC,QAAQ;WA4BT,qBAAqB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;WAehF,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI;IAiBxF,OAAO,CAAC,MAAM,CAAC,eAAe;IAoC9B,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAiBvC,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAiB1C,OAAO,CAAC,MAAM,CAAC,gCAAgC;IAqD/C,OAAO,CAAC,MAAM,CAAC,YAAY;WAYb,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,GAAG,eAAe;IAcvG,OAAO,CAAC,MAAM,CAAC,cAAc;WAsBf,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IA2BjE,OAAO,CAAC,MAAM,CAAC,yBAAyB;WA4C1B,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,IAAI;IA+B/H,OAAO,CAAC,MAAM,CAAC,eAAe;WAiChB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,YAAY;WAiC3E,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;WA2CnE,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;WAcnE,iBAAiB,CAAC,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,GAAG,WAAW;CAmB3F"}
1
+ {"version":3,"file":"IRInference.d.ts","sourceRoot":"","sources":["../../../src/core/common/IRInference.ts"],"names":[],"mappings":"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"}