/** * Copyright (c) 2012-2016 André Bargull * Alle Rechte vorbehalten / All Rights Reserved. Use is subject to license terms. * * <https://github.com/anba/es6draft> */ package com.github.anba.es6draft.compiler.assembler; /** * Concrete {@link ConstantPool} implementation which handles all constant values as inline * constants, i.e. the constant value is directly written into the current class. */ final class InlineConstantPool extends ConstantPool { private static final int INLINE_CONSTANTS_LIMIT = 0x2000; InlineConstantPool(Code code) { super(code, INLINE_CONSTANTS_LIMIT); } @Override protected void close() { // empty } @Override protected ConstantPool newConstantPool() { return code.getSharedConstantPool(); } @Override protected void iconst(InstructionAssembler assembler, Integer cst, int index) { assembler.ldc(cst); } @Override protected void lconst(InstructionAssembler assembler, Long cst, int index) { assembler.ldc(cst); } @Override protected void fconst(InstructionAssembler assembler, Float cst, int index) { assembler.ldc(cst); } @Override protected void dconst(InstructionAssembler assembler, Double cst, int index) { assembler.ldc(cst); } @Override protected void aconst(InstructionAssembler assembler, String cst, int index) { assembler.ldc(cst); } }