Skip to content

Commit

Permalink
update forinof analysis to always show the target object
Browse files Browse the repository at this point in the history
  • Loading branch information
Haiyang-Sun committed Oct 2, 2019
1 parent 001a676 commit 6fec59b
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 7 deletions.
14 changes: 10 additions & 4 deletions src/ch.usi.inf.nodeprof/js/analysis/forinof/analysis.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@
const assert = require('assert');
function MyAnalysis() {

// last expression before for-in/for-of is the iteration object
// last expression in the current frame before for-in/for-of is the iteration object
let lastExprCurFrame = [];

// last expression executed anywhere
let lastExprResult;

// control flow tracking
Expand Down Expand Up @@ -57,8 +60,9 @@
}
logLoc('cfRootEnter', iid, type);
if (type === J$.cf.FOR_OF || type === J$.cf.FOR_IN) {
const o = lastExprResult;
console.log('iteration obj:', nextFuncs.has(o.next) ? '<iter w/ next()>' : o);
assert(lastExprCurFrame.length > 0);
const targetObjectExpression = lastExprCurFrame[lastExprCurFrame.length-1];
console.log('iteration obj:', JSON.stringify(targetObjectExpression), nextFuncs.has(lastExprResult.result.next) ? '<iter w/ next()>' : '');
}
cfRoots.set(iid, type);
}
Expand Down Expand Up @@ -86,6 +90,7 @@
}
}
this.functionEnter = function (iid, f, dis, args) {
lastExprCurFrame.push(null);
if (iteratorFuncs.has(f)) {
console.log("functionEnter: %s / %s / %d", f.name, J$.iidToLocation(iid), arguments.length);
iteratorIIDs.add(iid);
Expand All @@ -95,6 +100,7 @@
}
}
this.functionExit = function (iid, returnVal) {
lastExprCurFrame.pop();
if (iteratorIIDs.has(iid)) {
nextFuncs.add(returnVal.next);
}
Expand All @@ -106,7 +112,7 @@
}
}
this.endExpression = function (iid, type, result) {
lastExprResult = result;
lastExprResult = lastExprCurFrame[lastExprCurFrame.length-1] = {result, loc: J$.iidToLocation(iid)};
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
cfRootEnter@(src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:22:1:23:2) ForInIteration
iteration obj: { x: 'valueX', y: 'valueY' }
iteration obj: {"result":{"x":"valueX","y":"valueY"},"loc":"(src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:22:17:22:20)"}
cfRoot ForInIteration @ (src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:22:1:23:2)
\-cfBlock @ (src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:22:1:23:2)
cfRoot ForInIteration @ (src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:22:1:23:2)
\-cfBlock @ (src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:22:1:23:2)
cfRootExit@(src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:22:1:23:2) ForInIteration
cfRootEnter@(src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:27:1:28:2) ForOfIteration
iteration obj: [ 41, 42, 43 ]
iteration obj: {"result":[41,42,43],"loc":"(src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:27:17:27:20)"}
cfRoot ForOfIteration @ (src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:27:1:28:2)
\-cfBlock @ (src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:27:1:28:2)
cfRoot ForOfIteration @ (src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:27:1:28:2)
Expand All @@ -16,7 +16,7 @@ cfRoot ForOfIteration @ (src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:27
cfRootExit@(src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:27:1:28:2) ForOfIteration
functionEnter: [Symbol.iterator] / (src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:35:3:48:4) / 4
cfRootEnter@(src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:53:1:54:2) ForOfIteration
iteration obj: <iter w/ next()>
iteration obj: {"result":{"itemB":"bar"},"loc":"(src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:53:11:53:12)"} <iter w/ next()>
read@ (src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:39:13:39:26) moreToIterate
read@ (src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:40:32:40:45) moreToIterate
read@ (src/ch.usi.inf.nodeprof.test/js/minitests/forinof.js:40:53:40:58) itemA
Expand Down

0 comments on commit 6fec59b

Please sign in to comment.