Beispiel #1
0
IrTypeClass::IrTypeClass(ClassDeclaration *cd)
    : IrTypeAggr(cd), cd(cd), tc(static_cast<TypeClass *>(cd->type)) {
  std::string vtbl_name(cd->toPrettyChars());
  vtbl_name.append(".__vtbl");
  vtbl_type = LLStructType::create(gIR->context(), vtbl_name);
  vtbl_size = cd->vtbl.dim;
}
Beispiel #2
0
IrTypeClass::IrTypeClass(ClassDeclaration* cd)
:   IrTypeAggr(cd),
    cd(cd),
    tc((TypeClass*)cd->type)
{
    std::string vtbl_name(cd->toPrettyChars());
    vtbl_name.append(".__vtbl");
    vtbl_type = LLStructType::create(gIR->context(), vtbl_name);
    vtbl_size = cd->vtbl.dim;
    num_interface_vtbls = 0;
}
Beispiel #3
0
void SingleInheritanceVtbls::attach_vtbl( SingleInheritanceClassType* ctype ) {
  VariableSymbol* vsym =
    ::create_variable_symbol( _env,
			      NULL,  // type: set by vtbl construction
			      vtbl_name( ctype ),
			      false );

  SymbolTable* symtab = ctype->get_per_class_symbol_table();
  symtab->add_symbol( vsym );

  attach_vtbl( ctype, vsym );
}