]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/constants/BooleanConstant.java
Added info on backup location to documentation backup.
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / constants / BooleanConstant.java
1 package org.simantics.scl.compiler.constants;
2
3
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;
10
11 public class BooleanConstant extends Constant {
12     boolean value;
13
14     public BooleanConstant(boolean value) {
15         super(Types.BOOLEAN);
16         this.value = value;
17     }
18     
19     public boolean getValue() {
20         return value;
21     }
22     
23     @Override
24     public void push(MethodBuilder mb) {
25         mb.loadConstant(value);
26     }
27     
28     @Override
29     public String toString() {
30         return String.valueOf(value);
31     }
32     
33     @Override
34     public void deconstruct(MethodBuilder mb, IVal parameter, Cont success,
35             Label failure) {
36         mb.push(parameter, Types.BOOLEAN);
37         mb.ifZeroComparisonBranch(failure, value ? "==" : "!=");
38         mb.jump(success);
39     }
40     
41     @Override
42     public int constructorTag() {
43         return 0;
44     }
45
46     @Override
47     public Object realizeValue(TransientClassBuilder classBuilder) {
48         return value;
49     }
50 }