1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.springframework.expression.spel.ast;
17
18 import org.springframework.asm.MethodVisitor;
19 import org.springframework.expression.spel.CodeFlow;
20 import org.springframework.expression.spel.support.BooleanTypedValue;
21
22
23
24
25
26
27
28 public class BooleanLiteral extends Literal {
29
30 private final BooleanTypedValue value;
31
32
33 public BooleanLiteral(String payload, int pos, boolean value) {
34 super(payload, pos);
35 this.value = BooleanTypedValue.forValue(value);
36 this.exitTypeDescriptor = "Z";
37 }
38
39
40 @Override
41 public BooleanTypedValue getLiteralValue() {
42 return this.value;
43 }
44
45 @Override
46 public boolean isCompilable() {
47 return true;
48 }
49
50 @Override
51 public void generateCode(MethodVisitor mv, CodeFlow cf) {
52 if (this.value == BooleanTypedValue.TRUE) {
53 mv.visitLdcInsn(1);
54 }
55 else {
56 mv.visitLdcInsn(0);
57 }
58 cf.pushDescriptor(this.exitTypeDescriptor);
59 }
60
61 }