p = p.cdr;
}
},
+ len: function() {
+ if (this.cdr instanceof AST_Seq) {
+ return this.cdr.len() + 1;
+ } else {
+ return 2;
+ }
+ },
_walk: function(visitor) {
return visitor._visit(this, function(){
this.car._walk(visitor);
seq = [];
};
statements.forEach(function(stat){
- if (stat instanceof AST_SimpleStatement && seq.length < 2000) seq.push(stat.body);
- else push_seq(), ret.push(stat);
+ if (stat instanceof AST_SimpleStatement && seqLength(seq) < 2000) {
+ seq.push(stat.body);
+ } else {
+ push_seq();
+ ret.push(stat);
+ }
});
push_seq();
ret = sequencesize_2(ret, compressor);
return ret;
};
+ function seqLength(a) {
+ for (var len = 0, i = 0; i < a.length; ++i) {
+ var stat = a[i];
+ if (stat instanceof AST_Seq) {
+ len += stat.len();
+ } else {
+ len++;
+ }
+ }
+ return len;
+ };
+
function sequencesize_2(statements, compressor) {
function cons_seq(right) {
ret.pop();