package org.simantics.scl.compiler.constants; import org.cojen.classfile.TypeDesc; import org.simantics.scl.compiler.internal.codegen.references.IVal; import org.simantics.scl.compiler.internal.codegen.types.JavaTypeTranslator; import org.simantics.scl.compiler.internal.codegen.utils.MethodBuilder; import org.simantics.scl.compiler.internal.codegen.utils.TransientClassBuilder; import org.simantics.scl.compiler.types.Type; public class GetPrimitiveConstant extends Constant { IVal val; TypeDesc typeDesc; public GetPrimitiveConstant(Type type, IVal val, TypeDesc typeDesc) { super(type); this.val = val; this.typeDesc = typeDesc; } @Override public void push(MethodBuilder mb) { if(typeDesc != TypeDesc.VOID) { val.push(mb); mb.convert(JavaTypeTranslator.toObjectType(typeDesc), typeDesc); } } @Override public Object realizeValue(TransientClassBuilder classLoader) { return val.realizeValue(classLoader); } }