private void evalLDC(int index, Frame frame) throws BadBytecode {
        int tag = constPool.getTag(index);
        Type type;
        switch (tag) {
        case ConstPool.CONST_String:
            type = STRING_TYPE;
            break;
        case ConstPool.CONST_Integer:
            type = Type.INTEGER;
            break;
        case ConstPool.CONST_Float:
            type = Type.FLOAT;
            break;
        case ConstPool.CONST_Long:
            type = Type.LONG;
            break;
        case ConstPool.CONST_Double:
            type = Type.DOUBLE;
            break;
        case ConstPool.CONST_Class:
            type = CLASS_TYPE;
            break;
        default:
            throw new BadBytecode("bad LDC [pos = " + lastPos + "]: " + tag);
        }

        simplePush(type, frame);
    }