控制流的翻译
@Override
default void visitWhile(Tree.While loop, FuncVisitor mv) {
var exit = mv.freshLabel();
Function<FuncVisitor, Temp> test = v -> {
loop.cond.accept(this, v);
return loop.cond.val;
};
Consumer<FuncVisitor> body = v -> {
loopExits.push(exit);
loop.body.accept(this, v);
loopExits.pop();
};
emitWhile(test, body, exit, mv);
}while (cond) {
block
}Last updated
Was this helpful?