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); } }
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; } }