Beispiel #1
0
bool CompilerTest::may_be_initialized(InstanceClass *klass) {
 if (klass->is_initialized()) {
    return false;
  }

  // All super classes and super interfaces must be initialized
  InstanceClass ic;
  for (ic = klass->obj(); !ic.is_null(); ic = ic.super()) {
    if (!ic.equals(klass) && !ic.is_initialized()) {
      return false;
    }

    TypeArray interfaces = ic.local_interfaces();
    int n_interfaces = interfaces.length();

    for (int i = 0; i < n_interfaces; i++) {
      int intf_id = interfaces.ushort_at(i);
      InstanceClass intf = Universe::class_from_id(intf_id);
      if (!intf.is_initialized()) {
        return false;
      }
    }
  }

  return true;
}