reduce memory pressure via bit fields (#5203)

This commit is contained in:
Alex Lam S.L
2021-12-06 03:30:05 +00:00
committed by GitHub
parent b0799105c2
commit 033d8d9405
8 changed files with 97 additions and 21 deletions

View File

@@ -273,3 +273,21 @@ function first_in_statement(stack, arrow, export_default) {
return false;
}
}
function DEF_BITPROPS(ctor, props) {
if (props.length > 31) throw new Error("Too many properties: " + props.length + "\n" + props.join(", "));
props.forEach(function(name, pos) {
var mask = 1 << pos;
Object.defineProperty(ctor.prototype, name, {
get: function() {
return !!(this._bits & mask);
},
set: function(val) {
if (val)
this._bits |= mask;
else
this._bits &= ~mask;
},
});
});
}