Ejemplo n.º 1
0
    void visit(TypeInfoAssociativeArrayDeclaration *decl)
    {
        IF_LOG Logger::println("TypeInfoAssociativeArrayDeclaration::llvmDefine() %s", decl->toChars());
        LOG_SCOPE;

        assert(decl->tinfo->ty == Taarray);
        TypeAArray *tc = static_cast<TypeAArray *>(decl->tinfo);

        RTTIBuilder b(Type::typeinfoassociativearray);

        // value typeinfo
        b.push_typeinfo(tc->nextOf());

        // key typeinfo
        b.push_typeinfo(tc->index);

        // finish
        b.finalize(getIrGlobal(decl));
    }
Ejemplo n.º 2
0
void TypeInfoAssociativeArrayDeclaration::llvmDefine()
{
    Logger::println("TypeInfoAssociativeArrayDeclaration::llvmDefine() %s", toChars());
    LOG_SCOPE;

    assert(tinfo->ty == Taarray);
    TypeAArray *tc = static_cast<TypeAArray *>(tinfo);

    RTTIBuilder b(Type::typeinfoassociativearray);

    // value typeinfo
    b.push_typeinfo(tc->nextOf());

    // key typeinfo
    b.push_typeinfo(tc->index);

#if DMDV2
    // impl typeinfo
    b.push_typeinfo(tc->getImpl()->type);
#endif

    // finish
    b.finalize(ir.irGlobal);
}