1 package org.simantics.scl.compiler.constants;
3 import org.objectweb.asm.Label;
4 import org.simantics.scl.compiler.internal.codegen.continuations.Cont;
5 import org.simantics.scl.compiler.internal.codegen.references.IVal;
6 import org.simantics.scl.compiler.internal.codegen.references.Val;
7 import org.simantics.scl.compiler.internal.codegen.ssa.statements.LetApply;
8 import org.simantics.scl.compiler.internal.codegen.utils.MethodBuilder;
9 import org.simantics.scl.compiler.internal.codegen.utils.SSASimplificationContext;
10 import org.simantics.scl.compiler.internal.codegen.utils.TransientClassBuilder;
11 import org.simantics.scl.compiler.types.Type;
13 public abstract class DelegateConstant extends Constant {
17 public DelegateConstant(Type type) {
21 public DelegateConstant(Type type, Constant base) {
26 public DelegateConstant(Constant base) {
27 super(base.getType());
31 public void setBase(Constant base) {
36 public void push(MethodBuilder mb) {
41 public Type apply(MethodBuilder mb, Type[] typeParameters,
43 return base.apply(mb, typeParameters, parameters);
47 public void deconstruct(MethodBuilder mb, IVal parameter, Cont success,
49 base.deconstruct(mb, parameter, success, failure);
53 public int constructorTag() {
54 return base.constructorTag();
58 public int getArity() {
59 return base.getArity();
63 public void inline(SSASimplificationContext context, LetApply apply) {
64 base.inline(context, apply);
68 public Object realizeValue(TransientClassBuilder classLoader) {
69 return base.realizeValue(classLoader);