Exemple #1
0
  private void loadTypes() {
    Set<String> methods = RootbeerClassLoader.v().getDfsInfo().getMethods();
    MethodSignatureUtil util = new MethodSignatureUtil();
    for (final String method_sig : methods) {
      util.parse(method_sig);
      SootMethod method = util.getSootMethod();
      addMethod(method);
    }
    CompilerSetup compiler_setup = new CompilerSetup();
    for (final String extra_method : compiler_setup.getExtraMethods()) {
      util.parse(extra_method);
      addMethod(util.getSootMethod());
    }

    Set<SootField> fields = RootbeerClassLoader.v().getDfsInfo().getFields();
    for (final SootField field : fields) {
      final SootClass soot_class = field.getDeclaringClass();
      getOpenCLClass(soot_class).addField(new OpenCLField(field, soot_class));
    }

    FieldSignatureUtil field_util = new FieldSignatureUtil();
    ForcedFields forced_fields = new ForcedFields();
    for (final String field_sig : forced_fields.get()) {
      field_util.parse(field_sig);
      final SootField field = field_util.getSootField();
      final SootClass soot_class = field.getDeclaringClass();
      getOpenCLClass(soot_class).addField(new OpenCLField(field, soot_class));
    }

    Set<ArrayType> array_types = RootbeerClassLoader.v().getDfsInfo().getArrayTypes();
    for (final ArrayType array_type : array_types) {
      final OpenCLArrayType ocl_array_type = new OpenCLArrayType(array_type);
      if (!m_arrayTypes.contains(ocl_array_type)) m_arrayTypes.add(ocl_array_type);
    }
    for (final ArrayType array_type : compiler_setup.getExtraArrayTypes()) {
      final OpenCLArrayType ocl_array_type = new OpenCLArrayType(array_type);
      if (!m_arrayTypes.contains(ocl_array_type)) m_arrayTypes.add(ocl_array_type);
    }

    Set<Type> instanceofs = RootbeerClassLoader.v().getDfsInfo().getInstanceOfs();
    for (final Type type : instanceofs) {
      final OpenCLInstanceof to_add = new OpenCLInstanceof(type);
      if (!m_instanceOfs.contains(to_add)) m_instanceOfs.add(to_add);
    }

    m_compositeFields = CompositeFieldFactory.getCompositeFields(this, m_classes);
  }