Variant DynamicObjectData::o_invoke(MethodIndex methodIndex,
                                    const char *s, CArrRef params, int64 hash,
                                    bool fatal /* = false */) {
  if (!parent.isNull()) {
    return parent->o_invoke(methodIndex, s, params, hash, fatal);
  } else {
    // FMC need test case
    if (RuntimeOption::FastMethodCall) {
      s = g_bypassMILR ? s : methodIndexLookupReverse(methodIndex);
    }
    return root->doCall(s, params, fatal);
  }
}
Esempio n. 2
0
Variant ClassStatics::os_invoke(const char *c, MethodIndex methodIndex,
                                const char *s,
                                CArrRef params, int64 hash,
                                bool fatal /* = true */) {
  if (fatal) {
    throw FatalErrorException(m_msg);
  } else {
    if (RuntimeOption::FastMethodCall) {
      // only call with known methodIndex, must succeed
      s = g_bypassMILR ? s : methodIndexLookupReverse(methodIndex);
    }
    raise_warning("call_user_func to non-existent method %s::%s",
                    c, s);
    return false;
  }
}