1 package org.simantics.scl.compiler.constants;
4 import org.objectweb.asm.Label;
5 import org.simantics.scl.compiler.internal.codegen.continuations.Cont;
6 import org.simantics.scl.compiler.internal.codegen.references.IVal;
7 import org.simantics.scl.compiler.internal.codegen.utils.MethodBuilder;
8 import org.simantics.scl.compiler.internal.codegen.utils.TransientClassBuilder;
9 import org.simantics.scl.compiler.types.Types;
11 public class BooleanConstant extends Constant {
12 public static final BooleanConstant TRUE = new BooleanConstant(true);
13 public static final BooleanConstant FALSE = new BooleanConstant(false);
17 public BooleanConstant(boolean value) {
22 public boolean getValue() {
27 public void push(MethodBuilder mb) {
28 mb.loadConstant(value);
32 public String toString() {
33 return String.valueOf(value);
37 public void deconstruct(MethodBuilder mb, IVal parameter, Cont success,
39 mb.push(parameter, Types.BOOLEAN);
40 mb.ifZeroComparisonBranch(failure, value ? "==" : "!=");
45 public int constructorTag() {
50 public Object realizeValue(TransientClassBuilder classBuilder) {