Operand |
IR_Builder.buildEvStr(EvStrNode node,
IR_Scope s)
public Operand buildEnsureNode(Node node, IR_Scope m) {
final EnsureNode ensureNode = (EnsureNode) node;
if (ensureNode.getEnsureNode() != null) {
m.performEnsure(new BranchCallback() {
public void branch(IR_Scope m) {
if (ensureNode.getBodyNode() != null) {
build(ensureNode.getBodyNode(), m, true);
} else {
m.loadNil();
}
}
},
new BranchCallback() {
public void branch(IR_Scope m) {
build(ensureNode.getEnsureNode(), m, false);
}
});
} else {
if (ensureNode.getBodyNode() != null) {
build(ensureNode.getBodyNode(), m,true);
} else {
m.loadNil();
}
}
// TODO: don't require pop
if (!expr) m.consumeCurrentValue();
} |