mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-17 17:01:37 +00:00
fixes, dist files
This commit is contained in:
@ -1,4 +1,6 @@
|
||||
function rtrace(onerror) {
|
||||
function rtrace(onerror, oninfo) {
|
||||
if (!onerror) onerror = function() {};
|
||||
if (!oninfo) oninfo = function() {};
|
||||
var blocks = new Map();
|
||||
var rtrace = {
|
||||
|
||||
@ -12,6 +14,7 @@ function rtrace(onerror) {
|
||||
if (blocks.has(block)) {
|
||||
onerror(Error("duplicate alloc: " + block));
|
||||
} else {
|
||||
oninfo("ALLOC " + block);
|
||||
blocks.set(block, 0);
|
||||
}
|
||||
},
|
||||
@ -21,6 +24,7 @@ function rtrace(onerror) {
|
||||
if (!blocks.has(block)) {
|
||||
onerror(Error("orphaned free: " + block));
|
||||
} else {
|
||||
oninfo("FREE " + block + " @ " + blocks.get(block));
|
||||
blocks.delete(block);
|
||||
}
|
||||
},
|
||||
@ -30,8 +34,9 @@ function rtrace(onerror) {
|
||||
if (!blocks.has(block)) {
|
||||
onerror(Error("orphaned increment: " + block));
|
||||
} else {
|
||||
let rc = blocks.get(block) + 1;
|
||||
blocks.set(block, rc);
|
||||
let rc = blocks.get(block);
|
||||
oninfo("++ " + block + " @ " + rc + "->" + (rc + 1));
|
||||
blocks.set(block, rc + 1);
|
||||
}
|
||||
},
|
||||
|
||||
@ -40,11 +45,12 @@ function rtrace(onerror) {
|
||||
if (!blocks.has(block)) {
|
||||
onerror(Error("orphaned decrement: " + block));
|
||||
} else {
|
||||
let rc = blocks.get(block) - 1;
|
||||
if (rc < 0) {
|
||||
let rc = blocks.get(block);
|
||||
if (rc < 1) {
|
||||
onerror(Error("invalid decrement: " + block));
|
||||
} else {
|
||||
blocks.set(block, rc);
|
||||
oninfo("-- " + block + " @ " + rc + "->" + (rc - 1));
|
||||
blocks.set(block, rc - 1);
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -54,6 +60,11 @@ function rtrace(onerror) {
|
||||
},
|
||||
|
||||
get leakCount() {
|
||||
if (oninfo) {
|
||||
for (let [block, rc ] of blocks) {
|
||||
oninfo("LEAKING " + block + " @ " + rc);
|
||||
}
|
||||
}
|
||||
return blocks.size;
|
||||
}
|
||||
};
|
||||
|
Reference in New Issue
Block a user