diff --git a/src/compiler/analysis/analysis_result.cpp b/src/compiler/analysis/analysis_result.cpp index b79278096a6f4..7a43ba03ff826 100644 --- a/src/compiler/analysis/analysis_result.cpp +++ b/src/compiler/analysis/analysis_result.cpp @@ -3682,7 +3682,7 @@ void AnalysisResult::outputCPPRedeclaredClassImpl(CodeGenerator &cg) { cg_printf("static const RedeclaredObjectStaticCallbacks %s%s = {\n" " {\n" " coo_ObjectData,\n" - " 0,0,0,0,&s_%s,0,0,0,0\n" + " 0,0,0,0,&s_%s,0,0,0,0,0\n" " },\n" " -1\n" "};\n", diff --git a/src/compiler/analysis/class_scope.cpp b/src/compiler/analysis/class_scope.cpp index 2ec0c1978286d..7a20b89f3922c 100644 --- a/src/compiler/analysis/class_scope.cpp +++ b/src/compiler/analysis/class_scope.cpp @@ -1344,13 +1344,12 @@ void ClassScope::outputCPPHashTableClasses void ClassScope::outputCPPClassVarInitImpl (CodeGenerator &cg, const StringToClassScopePtrVecMap &classScopes, const vector &classes) { - bool system = cg.getOutput() == CodeGenerator::SystemCPP; + if (cg.getOutput() == CodeGenerator::SystemCPP) return; - cg_indentBegin("Variant get%s_class_var_init(CStrRef s, " - "const char *var) {\n", - system ? "_builtin" : ""); - bool withEval = !system && Option::EnableEval == Option::FullEval; - if (withEval) { + cg_indentBegin("Variant get_class_var_init(CStrRef s, " + "const char *var) {\n"); + + if (Option::EnableEval == Option::FullEval) { // See if there's an eval'd version cg_indentBegin("{\n"); cg_printf("Variant r;\n"); @@ -1358,19 +1357,11 @@ void ClassScope::outputCPPClassVarInitImpl "return r;\n"); cg_indentEnd("}\n"); } - if (classes.size()) { - cg_printf("const ObjectStaticCallbacks *cwo = " - "get_%sobject_static_callbacks(s);\n" - "return LIKELY(cwo != 0) ? " - "cwo->os_getInit(var) : throw_missing_class(s);\n", - system ? "builtin_" : ""); - } else { - if (system) { - cg_printf("return throw_missing_class(s);\n"); - } else { - cg_printf("return get_builtin_class_var_init(s, var);\n"); - } - } + cg_printf("const ObjectStaticCallbacks *cwo = " + "get_%sobject_static_callbacks(s);\n" + "return LIKELY(cwo != 0) ? " + "cwo->os_getInit(var) : throw_missing_class(s);\n", + !classes.size() ? "builtin_" : ""); cg_indentEnd("}\n"); } @@ -1391,19 +1382,11 @@ void ClassScope::outputCPPDynamicClassCreateImpl "return r;\n"); cg_indentEnd("}\n"); } - if (!classes.size()) { - if (system) { - cg_printf("return 0;\n"); - } else { - cg_printf("return create_builtin_object_only_no_init(s, root);\n"); - } - } else { - cg_printf("const ObjectStaticCallbacks *cwo = " - "get_%sobject_static_callbacks(s);\n" - "if (LIKELY(cwo != 0)) return cwo->createOnlyNoInit(root);\n" - "return 0;\n", - system ? "builtin_" : ""); - } + cg_printf("const ObjectStaticCallbacks *cwo = " + "get_%sobject_static_callbacks(s);\n" + "if (LIKELY(cwo != 0)) return cwo->createOnlyNoInit(root);\n" + "return 0;\n", + system || !classes.size() ? "builtin_" : ""); cg_indentEnd("}\n"); // output create_object_only() cg_indentBegin("Object create%s_object_only(CStrRef s, " @@ -1421,14 +1404,11 @@ void ClassScope::outputCPPDynamicClassCreateImpl void ClassScope::outputCPPGetCallInfoStaticMethodImpl( CodeGenerator &cg, const StringToClassScopePtrVecMap &classScopes, const vector &classes) { - bool system = cg.getOutput() == CodeGenerator::SystemCPP; - bool useHashTable = (classes.size() > 0); - cg_indentBegin("bool get_call_info_static_method%s(MethodCallPackage &mcp)" - " {\n", system ? "_builtin" : ""); - - cg_printf("StringData *s ATTRIBUTE_UNUSED (mcp.rootCls);\n"); + if (cg.getOutput() == CodeGenerator::SystemCPP) return; + cg_indentBegin( + "bool get_call_info_static_method(MethodCallPackage &mcp) {\n"); - if (!system && Option::EnableEval == Option::FullEval) { + if (Option::EnableEval == Option::FullEval) { cg_printf("bool foundClass = false;\n"); cg_printf("if (eval_get_call_info_static_method_hook(mcp, foundClass)) " "return true;\n"); @@ -1437,32 +1417,28 @@ void ClassScope::outputCPPGetCallInfoStaticMethodImpl( cg_printf("return false;\n"); cg_indentEnd("}\n"); } - if (useHashTable) { - cg_printf("const ObjectStaticCallbacks *cwo = " - "get_%sobject_static_callbacks(s);\n" - "return ObjectStaticCallbacks::GetCallInfo(cwo,mcp,-1);\n" , - system ? "builtin_" : ""); - } else { - if (system) { - cg_printf("return ObjectStaticCallbacks::GetCallInfo(0,mcp,-1);\n"); - } else { - cg_printf("return get_call_info_static_method_builtin(mcp);\n"); - } - } + + cg_printf("StringData *s ATTRIBUTE_UNUSED (mcp.rootCls);\n"); + + cg_printf("const ObjectStaticCallbacks *cwo = " + "get_%sobject_static_callbacks(s);\n" + "if (LIKELY(cwo != 0)) " + "return ObjectStaticCallbacks::GetCallInfo(cwo,mcp,-1);\n" + "if (mcp.m_fatal) throw_missing_class(s->data());\n" + "return false;\n", + !classes.size() ? "builtin_" : ""); cg_indentEnd("}\n"); } - void ClassScope::outputCPPGetStaticPropertyImpl (CodeGenerator &cg, const StringToClassScopePtrVecMap &classScopes, const vector &classes) { - bool system = cg.getOutput() == CodeGenerator::SystemCPP; + if (cg.getOutput() == CodeGenerator::SystemCPP) return; - cg_indentBegin("Variant get%s_static_property(CStrRef s, " - "const char *prop) {\n", - system ? "_builtin" : ""); - if (!system && Option::EnableEval == Option::FullEval) { + cg_indentBegin("Variant get_static_property(CStrRef s, " + "const char *prop) {\n"); + if (Option::EnableEval == Option::FullEval) { // See if there's an eval'd version cg_indentBegin("{\n"); cg_printf("Variant r;\n"); @@ -1473,16 +1449,14 @@ void ClassScope::outputCPPGetStaticPropertyImpl cg.printf("const ObjectStaticCallbacks * cwo = " "get%s_object_static_callbacks(s);\n", - system ? "_builtin" : ""); + !classes.size() ? "_builtin" : ""); cg.printf("if (cwo) return cwo->os_get(prop);\n"); - cg_printf("return null;\n"); cg_indentEnd("}\n"); - cg_indentBegin("Variant *get%s_static_property_lv(CStrRef s, " - "const char *prop) {\n", - system ? "_builtin" : ""); - if (!system && Option::EnableEval == Option::FullEval) { + cg_indentBegin("Variant *get_static_property_lv(CStrRef s, " + "const char *prop) {\n"); + if (Option::EnableEval == Option::FullEval) { // See if there's an eval'd version cg_indentBegin("{\n"); cg_printf("Variant *r;\n"); @@ -1493,20 +1467,18 @@ void ClassScope::outputCPPGetStaticPropertyImpl cg.printf("const ObjectStaticCallbacks * cwo = " "get%s_object_static_callbacks(s);\n", - system ? "_builtin" : ""); + !classes.size() ? "_builtin" : ""); cg.printf("if (cwo) return &cwo->os_lval(prop);\n"); - cg_printf("return NULL;\n"); cg_indentEnd("}\n"); } void ClassScope::outputCPPGetClassConstantImpl (CodeGenerator &cg, const StringToClassScopePtrVecMap &classScopes) { - bool system = cg.getOutput() == CodeGenerator::SystemCPP; - cg_indentBegin("Variant get%s_class_constant(CStrRef s, " - "const char *constant, int fatal /* = true */) {\n", - system ? "_builtin" : ""); - if (!system && Option::EnableEval == Option::FullEval) { + if (cg.getOutput() == CodeGenerator::SystemCPP) return; + cg_indentBegin("Variant get_class_constant(CStrRef s, " + "const char *constant, int fatal /* = true */) {\n"); + if (Option::EnableEval == Option::FullEval) { // See if there's an eval'd version cg_indentBegin("{\n"); cg_printf("Variant r;\n"); @@ -1518,7 +1490,7 @@ void ClassScope::outputCPPGetClassConstantImpl cg.indentBegin("{\n"); cg.printf("const ObjectStaticCallbacks * cwo = " "get%s_object_static_callbacks(s);\n", - system ? "_builtin" : ""); + !classScopes.size() ? "_builtin" : ""); cg.printf("if (cwo) return cwo->os_constant(constant);\n"); cg.indentEnd("}\n"); @@ -2731,7 +2703,7 @@ void ClassScope::outputCPPGlobalTableWrappersImpl(CodeGenerator &cg, cg_indentBegin("{\n"); } if (isInterface()) { - cg_printf("0,0,0,0,0,0,0,0,0,0\n"); + cg_printf("0,0,0,0,0,0,0,0,0,0,0\n"); } else { cg_printf("(ObjectData*(*)(ObjectData*))%s%s,\n", Option::CreateObjectOnlyPrefix, id.c_str()); @@ -2777,11 +2749,22 @@ void ClassScope::outputCPPGlobalTableWrappersImpl(CodeGenerator &cg, if (derivesFromRedeclaring() != DirectFromRedeclared && (par = getParentScope(ar))) { - cg_printf("&%s%s\n", + cg_printf("&%s%s", Option::ClassStaticsCallbackPrefix, par->getId().c_str()); } else { - cg_printf("0\n"); + cg_printf("0"); + } + + int attributes = 0; + if (m_attribute & (HasUnknownStaticMethodHandler| + InheritsUnknownStaticMethodHandler)) { + attributes |= ObjectData::HasCallStatic; + } + if (m_attribute & (HasUnknownMethodHandler| + InheritsUnknownMethodHandler)) { + attributes |= ObjectData::HasCall; } + cg_printf(",0x%x\n", attributes); } if (isRedeclaring()) { diff --git a/src/runtime/base/builtin_functions.cpp b/src/runtime/base/builtin_functions.cpp index 51ce6eede093b..92cf09eb6598e 100644 --- a/src/runtime/base/builtin_functions.cpp +++ b/src/runtime/base/builtin_functions.cpp @@ -504,7 +504,7 @@ Variant o_invoke_failed(const char *cls, const char *meth, Array collect_few_args(int count, INVOKE_FEW_ARGS_IMPL_ARGS) { if (RuntimeOption::UseArgArray) { - if (count == 0) return Array(); + if (count == 0) return Array::Create(); ArgArray *args = NEW(ArgArray)(count); ArgArray::Argument *argp = args->getStack(); if (count > 0) { @@ -556,7 +556,7 @@ Array collect_few_args(int count, INVOKE_FEW_ARGS_IMPL_ARGS) { } switch (count) { case 0: { - return Array(); + return Array::Create(); } case 1: { return Array(ArrayInit(1).set(a0).create()); diff --git a/src/runtime/base/class_info.h b/src/runtime/base/class_info.h index 5ffc54eb07a10..214b8cd7971a2 100644 --- a/src/runtime/base/class_info.h +++ b/src/runtime/base/class_info.h @@ -49,6 +49,8 @@ class ClassInfo { IsPrivate = (1 << 8), // x x IsStatic = (1 << 9), // x x IsInherited = (1 << 10), // x + HasCall = IsPublic, // x + HasCallStatic = IsProtected,// x IsReference = (1 << 11), // x x x IsOptional = (1 << 12), // x diff --git a/src/runtime/base/externals.h b/src/runtime/base/externals.h index 98a1e38059248..1ca6b993a8607 100644 --- a/src/runtime/base/externals.h +++ b/src/runtime/base/externals.h @@ -56,9 +56,7 @@ extern const ObjectStaticCallbacks * * Getting a static property */ extern Variant get_static_property(CStrRef s, const char *prop); -extern Variant get_builtin_static_property(CStrRef s, const char *prop); extern Variant *get_static_property_lv(CStrRef s, const char *prop); -extern Variant *get_builtin_static_property_lv(CStrRef s, const char *prop); // defined in builtin_functions.cpp Variant &get_static_property_lval(CStrRef s, const char *prop); @@ -67,7 +65,6 @@ Variant &get_static_property_lval(CStrRef s, const char *prop); * Getting the init value of a class variable */ extern Variant get_class_var_init(CStrRef s, const char *var); -extern Variant get_builtin_class_var_init(CStrRef s, const char *var); /** * Getting a constant @@ -87,8 +84,6 @@ extern ConstantType check_constant(CStrRef name); */ extern Variant get_class_constant(CStrRef s, const char *prop, int fatal = true); -extern Variant get_builtin_class_constant(CStrRef s, const char *prop, - int fatal = true); /** * Getting function info @@ -100,7 +95,6 @@ extern bool get_call_info_no_eval(const CallInfo *&ci, void *&extra, extern bool get_call_info_builtin(const CallInfo *&ci, void *&extra, const char *s, int64 hash = -1); extern bool get_call_info_static_method(MethodCallPackage &info); -extern bool get_call_info_static_method_builtin(MethodCallPackage &info); /** * Class/function meta info entirely encoded here as a const char * array. diff --git a/src/runtime/base/object_data.cpp b/src/runtime/base/object_data.cpp index 64aabcfb07c8a..5ec84039be112 100644 --- a/src/runtime/base/object_data.cpp +++ b/src/runtime/base/object_data.cpp @@ -56,6 +56,9 @@ ObjectData::~ObjectData() { } } +CallInfo *ObjectData::GetCallHandler() { + return &s_ObjectData_call_handler; +} static CallInfo s_ObjectData_null_constructor( (void*)ObjectData::NullConstructor, @@ -529,11 +532,12 @@ inline ALWAYS_INLINE bool GetCallInfoHelper(bool ex, const char *cls, return true; } } else { + const ObjectStaticCallbacks *cur = osc; do { - if (!ex || found || !strcasecmp(cls, osc->cls->data())) { + if (!ex || found || !strcasecmp(cls, cur->cls->data())) { if (ex) found = true; - if (const int *ix = osc->mcit_ix) { - const MethodCallInfoTable *info = osc->mcit; + if (const int *ix = cur->mcit_ix) { + const MethodCallInfoTable *info = cur->mcit; int h = hash & ix[0]; int o = ix[h + 1]; @@ -551,20 +555,20 @@ inline ALWAYS_INLINE bool GetCallInfoHelper(bool ex, const char *cls, } } } - if (!osc->parent) { - if (LIKELY(!osc->redeclaredParent)) break; + if (!cur->parent) { + if (LIKELY(!cur->redeclaredParent)) break; if (LIKELY(!globals)) { globals = (char*)get_global_variables(); } - osc = *(ObjectStaticCallbacks**)(globals + osc->redeclaredParent); + cur = *(ObjectStaticCallbacks**)(globals + cur->redeclaredParent); if (mcp.obj) { mcp.obj = static_cast(mcp.obj)-> getRedeclaredParent(); } } else { - osc = osc->parent; + cur = cur->parent; } - } while (osc); + } while (cur); } if (mcp.obj) { @@ -578,12 +582,17 @@ inline ALWAYS_INLINE bool GetCallInfoHelper(bool ex, const char *cls, StrNR cls = mcp.rootCls; bool ok = false; if (!obj || !obj->o_instanceof(cls)) { - obj = create_object_only_no_init(cls); - if (obj) { - ok = obj->hasCallStatic(); - obj->release(); - obj = 0; + if (LIKELY(osc != 0)) { + ok = osc->checkAttribute(ObjectData::HasCallStatic); + } else { + const ClassInfo *info = ClassInfo::FindClassInterfaceOrTrait(cls); + if (info) { + ok = info->getAttribute() & ClassInfo::HasCallStatic; + } else if (mcp.m_fatal) { + throw_missing_class(cls); + } } + obj = 0; } else { ok = obj->hasCallStatic() || obj->hasCall(); } @@ -611,6 +620,16 @@ bool ObjectStaticCallbacks::GetCallInfoEx(const char *cls, return GetCallInfoHelper(true, cls, osc, mcp, hash); } +bool ObjectStaticCallbacks::checkAttribute(int attrs) const { + if (attributes & attrs) return true; + if (LIKELY(!redeclaredParent)) return false; + + const ObjectStaticCallbacks *osc = + *(ObjectStaticCallbacks**)((char*)get_global_variables() + + redeclaredParent); + return osc->checkAttribute(attrs); +} + Variant ObjectData::os_invoke(CStrRef c, CStrRef s, CArrRef params, int64 hash, bool fatal /* = true */) { diff --git a/src/runtime/base/object_data.h b/src/runtime/base/object_data.h index 16081e07edef9..ce777f620c036 100644 --- a/src/runtime/base/object_data.h +++ b/src/runtime/base/object_data.h @@ -127,6 +127,7 @@ class ObjectData : public CountableNF { CStrRef o_getParentName() const; virtual CStrRef o_getClassNameHook() const; static CStrRef GetParentName(CStrRef cls); + static CallInfo *GetCallHandler(); virtual bool isResource() const { return false;} bool o_isClass(const char *s) const; int o_getId() const { return o_id;} @@ -304,8 +305,8 @@ class ObjectData : public CountableNF { protected: virtual bool php_sleep(Variant &ret); public: - virtual bool hasCall(); - virtual bool hasCallStatic(); + bool hasCall(); + bool hasCallStatic(); private: ObjectData(const ObjectData &) { ASSERT(false);} @@ -396,6 +397,7 @@ struct ObjectStaticCallbacks { const ObjectStaticCallbacks *osc, MethodCallPackage &mcp, int64 hash); + bool checkAttribute(int attrs) const; operator const ObjectStaticCallbacks*() const { return this; } const ObjectStaticCallbacks* operator->() const { return this; } GlobalVariables *lazy_initializer(GlobalVariables *g) const; @@ -411,6 +413,7 @@ struct ObjectStaticCallbacks { const CallInfo *constructor; int64 redeclaredParent; const ObjectStaticCallbacks *parent; + int attributes; }; struct RedeclaredObjectStaticCallbacks { diff --git a/src/runtime/eval/ast/class_statement.cpp b/src/runtime/eval/ast/class_statement.cpp index 20f9a93678f5b..9e4c3404fcc7b 100644 --- a/src/runtime/eval/ast/class_statement.cpp +++ b/src/runtime/eval/ast/class_statement.cpp @@ -95,12 +95,18 @@ void ClassVariable::eval(VariableEnvironment &env, Variant &res) const { ClassStatement::ClassStatement(STATEMENT_ARGS, const string &name, const string &parent, const string &doc) : Statement(STATEMENT_PASS), m_name(StringData::GetStaticString(name)), - m_modifiers(0), m_parent(StringData::GetStaticString(parent)), - m_docComment(doc), + m_modifiers(0), m_attributes(0), + m_parent(StringData::GetStaticString(parent)), m_docComment(doc), m_marker(new ClassStatementMarker(STATEMENT_PASS, this)), m_delayDeclaration(false) { } void ClassStatement::finish() { + if (findMethod("__get")) m_attributes |= ObjectData::UseGet; + if (findMethod("__set")) m_attributes |= ObjectData::UseSet; + if (findMethod("__isset")) m_attributes |= ObjectData::UseIsset; + if (findMethod("__unset")) m_attributes |= ObjectData::UseUnset; + if (findMethod("__call")) m_attributes |= ObjectData::HasCall; + if (findMethod("__callstatic")) m_attributes |= ObjectData::HasCallStatic; } const ClassStatement *ClassStatement::parentStatement() const { @@ -128,6 +134,7 @@ void ClassStatement::loadMethodTable( } else { seen.insert(this); } + ce.setAttributes(m_attributes); ClassEvalState::MethodTable &mtable = ce.getMethodTable(); if (!m_parent->empty()) { const ClassStatement* parent_cls = parentStatement(); @@ -137,6 +144,17 @@ void ClassStatement::loadMethodTable( // Built in ClassInfo::MethodVec meths; ClassInfo::GetClassMethods(meths, m_parent, 1); + if (const ClassInfo *info = + ClassInfo::FindClassInterfaceOrTrait(m_parent)) { + int attr = info->getAttribute(), o_attr = 0; + if (attr & ClassInfo::HasCall) { + o_attr |= ObjectData::HasCall; + } + if (attr & ClassInfo::HasCallStatic) { + o_attr |= ObjectData::HasCallStatic; + } + ce.setAttributes(o_attr); + } for (ClassInfo::MethodVec::const_iterator it = meths.begin(); it != meths.end(); ++it) { int mods = 0; diff --git a/src/runtime/eval/ast/class_statement.h b/src/runtime/eval/ast/class_statement.h index 3fb862b61eae2..d1fc48c18835f 100644 --- a/src/runtime/eval/ast/class_statement.h +++ b/src/runtime/eval/ast/class_statement.h @@ -84,6 +84,7 @@ class ClassStatement : public Statement { void loadInterfaceStatements() const; void setModifiers(int m) { m_modifiers = m; } int getModifiers() const { return m_modifiers; } + int getAttributes() const { return m_attributes; } void addBases(const std::vector &bases); void addVariable(ClassVariablePtr v); void addMethod(MethodStatementPtr m); @@ -132,6 +133,7 @@ class ClassStatement : public Statement { protected: StringData *m_name; int m_modifiers; + int m_attributes; StringData *m_parent; std::vector m_bases; diff --git a/src/runtime/eval/eval.cpp b/src/runtime/eval/eval.cpp index b9cf434ba2d02..fbd45cca9340f 100644 --- a/src/runtime/eval/eval.cpp +++ b/src/runtime/eval/eval.cpp @@ -181,8 +181,12 @@ bool eval_get_call_info_static_method_hook(MethodCallPackage &info, } if (foundClass) { - // deal with callStatic - return ObjectStaticCallbacks::GetCallInfo(0, info, -1); + ClassEvalState *ce = Eval::RequestEvalState::findClassState(info.rootCls); + if (ce->getAttributes() & ObjectData::HasCallStatic) { + info.obj = 0; + info.ci = ObjectData::GetCallHandler(); + return true; + } } return false; } diff --git a/src/runtime/eval/runtime/eval_object_data.cpp b/src/runtime/eval/runtime/eval_object_data.cpp index 936deb879db18..0e6b23d75d966 100644 --- a/src/runtime/eval/runtime/eval_object_data.cpp +++ b/src/runtime/eval/runtime/eval_object_data.cpp @@ -36,10 +36,7 @@ EvalObjectData::EvalObjectData(ClassEvalState &cls, const char* pname, if (r == NULL) { RequestEvalState::registerObject(this); } - if (getMethodStatement("__get")) setAttribute(UseGet); - if (getMethodStatement("__set")) setAttribute(UseSet); - if (getMethodStatement("__isset")) setAttribute(UseIsset); - if (getMethodStatement("__unset")) setAttribute(UseUnset); + setAttributes(m_cls.getAttributes()); // an object can never live longer than its class m_class_name = m_cls.getClass()->name(); @@ -55,8 +52,7 @@ EvalObjectData::EvalObjectData(EvalObjectData *original) : RequestEvalState::registerObject(this); - if (getMethodStatement("__get")) setAttribute(UseGet); - if (getMethodStatement("__set")) setAttribute(UseSet); + setAttributes(m_cls.getAttributes()); // an object can never live longer than its class m_class_name = m_cls.getClass()->name(); @@ -335,13 +331,6 @@ Variant EvalObjectData::t___unset(Variant v_name) { } } -bool EvalObjectData::hasCall() { - return getMethodStatement("__call") || DynamicObjectData::hasCall(); -} -bool EvalObjectData::hasCallStatic() { - return getMethodStatement("__callStatic") || - DynamicObjectData::hasCallStatic(); -} bool EvalObjectData::php_sleep(Variant &ret) { ret = t___sleep(); return getMethodStatement("__sleep"); diff --git a/src/runtime/eval/runtime/eval_object_data.h b/src/runtime/eval/runtime/eval_object_data.h index dafb75b225f83..fddd74d507906 100644 --- a/src/runtime/eval/runtime/eval_object_data.h +++ b/src/runtime/eval/runtime/eval_object_data.h @@ -82,9 +82,6 @@ class EvalObjectData : public DynamicObjectData { protected: virtual ObjectData* clone(); - - virtual bool hasCall(); - virtual bool hasCallStatic(); virtual bool php_sleep(Variant &ret); private: diff --git a/src/runtime/eval/runtime/eval_state.h b/src/runtime/eval/runtime/eval_state.h index 4e62b748efde4..ac7bcc06c0b0e 100644 --- a/src/runtime/eval/runtime/eval_state.h +++ b/src/runtime/eval/runtime/eval_state.h @@ -40,6 +40,7 @@ class ClassEvalState { typedef hphp_const_char_imap > MethodTable; ClassEvalState() : m_class(NULL), m_constructor(NULL), + m_attributes(0), m_initializedInstance(false), m_initializedStatics(false), m_doneSemanticCheck(false) @@ -58,6 +59,8 @@ class ClassEvalState { LVariableTable &getStatics() { return m_statics; } + void setAttributes(int attrs) { m_attributes |= attrs; } + int getAttributes() const { return m_attributes; } void initializeInstance(); void initializeStatics(); void semanticCheck(); @@ -72,6 +75,7 @@ class ClassEvalState { MethodTable m_methodTable; const MethodStatement *m_constructor; LVariableTable m_statics; + int m_attributes; bool m_initializedInstance; bool m_initializedStatics; bool m_doneSemanticCheck; diff --git a/src/system/gen/php/classes/directory.cpp b/src/system/gen/php/classes/directory.cpp index d119af3b3118d..d611de4f5ec35 100644 --- a/src/system/gen/php/classes/directory.cpp +++ b/src/system/gen/php/classes/directory.cpp @@ -113,7 +113,7 @@ const ObjectStaticCallbacks cw_Directory = { c_Directory::s_call_info_table,c_Directory::s_call_info_index, c_Directory::s_instanceof_table,c_Directory::s_instanceof_index, &c_Directory::s_class_name, - &c_Directory::os_prop_table,&c_Directory::ci___construct,0,0 + &c_Directory::os_prop_table,&c_Directory::ci___construct,0,0,0x0 }; /* SRC: classes/directory.php line 7 */ void c_Directory::t___construct(Variant v_path) { diff --git a/src/system/gen/php/classes/directoryiterator.cpp b/src/system/gen/php/classes/directoryiterator.cpp index 06ee2abf12215..50da4d1df9e64 100644 --- a/src/system/gen/php/classes/directoryiterator.cpp +++ b/src/system/gen/php/classes/directoryiterator.cpp @@ -241,7 +241,7 @@ const ObjectStaticCallbacks cw_RecursiveDirectoryIterator = { c_RecursiveDirectoryIterator::s_call_info_table,c_RecursiveDirectoryIterator::s_call_info_index, c_RecursiveDirectoryIterator::s_instanceof_table,c_RecursiveDirectoryIterator::s_instanceof_index, &c_RecursiveDirectoryIterator::s_class_name, - &c_RecursiveDirectoryIterator::os_prop_table,&c_RecursiveDirectoryIterator::ci___construct,0,&cw_DirectoryIterator + &c_RecursiveDirectoryIterator::os_prop_table,&c_RecursiveDirectoryIterator::ci___construct,0,&cw_DirectoryIterator,0x0 }; /* SRC: classes/directoryiterator.php line 132 */ void c_RecursiveDirectoryIterator::t___construct(Variant v_path, Variant v_flags // = 16LL /* RecursiveDirectoryIterator::CURRENT_AS_FILEINFO */ @@ -488,7 +488,7 @@ const ObjectStaticCallbacks cw_DirectoryIterator = { c_DirectoryIterator::s_call_info_table,c_DirectoryIterator::s_call_info_index, c_DirectoryIterator::s_instanceof_table,c_DirectoryIterator::s_instanceof_index, &c_DirectoryIterator::s_class_name, - &c_SplFileInfo::os_prop_table,&c_DirectoryIterator::ci___construct,0,&cw_SplFileInfo + &c_SplFileInfo::os_prop_table,&c_DirectoryIterator::ci___construct,0,&cw_SplFileInfo,0x0 }; /* SRC: classes/directoryiterator.php line 14 */ void c_DirectoryIterator::t___construct(Variant v_path) { diff --git a/src/system/gen/php/classes/exception.cpp b/src/system/gen/php/classes/exception.cpp index 012467a37dbfd..ae6cf525974f6 100644 --- a/src/system/gen/php/classes/exception.cpp +++ b/src/system/gen/php/classes/exception.cpp @@ -49,7 +49,7 @@ const ObjectStaticCallbacks cw_OutOfRangeException = { c_OutOfRangeException::s_call_info_table,c_OutOfRangeException::s_call_info_index, c_OutOfRangeException::s_instanceof_table,c_OutOfRangeException::s_instanceof_index, &c_OutOfRangeException::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_LogicException + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_LogicException,0x0 }; /* SRC: classes/exception.php line 235 */ IMPLEMENT_CLASS_NO_DEFAULT_SWEEP(RuntimeException) @@ -66,7 +66,7 @@ const ObjectStaticCallbacks cw_RuntimeException = { c_RuntimeException::s_call_info_table,c_RuntimeException::s_call_info_index, c_RuntimeException::s_instanceof_table,c_RuntimeException::s_instanceof_index, &c_RuntimeException::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_Exception + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_Exception,0x0 }; /* SRC: classes/exception.php line 183 */ IMPLEMENT_CLASS_NO_DEFAULT_SWEEP(BadFunctionCallException) @@ -85,7 +85,7 @@ const ObjectStaticCallbacks cw_BadFunctionCallException = { c_BadFunctionCallException::s_call_info_table,c_BadFunctionCallException::s_call_info_index, c_BadFunctionCallException::s_instanceof_table,c_BadFunctionCallException::s_instanceof_index, &c_BadFunctionCallException::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_LogicException + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_LogicException,0x0 }; /* SRC: classes/exception.php line 202 */ IMPLEMENT_CLASS_NO_DEFAULT_SWEEP(DomainException) @@ -104,7 +104,7 @@ const ObjectStaticCallbacks cw_DomainException = { c_DomainException::s_call_info_table,c_DomainException::s_call_info_index, c_DomainException::s_instanceof_table,c_DomainException::s_instanceof_index, &c_DomainException::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_LogicException + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_LogicException,0x0 }; /* SRC: classes/exception.php line 286 */ IMPLEMENT_CLASS_NO_DEFAULT_SWEEP(ErrorException) @@ -175,7 +175,7 @@ const ObjectStaticCallbacks cw_ErrorException = { c_ErrorException::s_call_info_table,c_ErrorException::s_call_info_index, c_ErrorException::s_instanceof_table,c_ErrorException::s_instanceof_index, &c_ErrorException::s_class_name, - &c_ErrorException::os_prop_table,&c_ErrorException::ci___construct,0,&cw_Exception + &c_ErrorException::os_prop_table,&c_ErrorException::ci___construct,0,&cw_Exception,0x0 }; /* SRC: classes/exception.php line 288 */ void c_ErrorException::t___construct(Variant v_message // = NAMSTR(s_sys_ss00000000, "") @@ -225,7 +225,7 @@ const ObjectStaticCallbacks cw_BadMethodCallException = { c_BadMethodCallException::s_call_info_table,c_BadMethodCallException::s_call_info_index, c_BadMethodCallException::s_instanceof_table,c_BadMethodCallException::s_instanceof_index, &c_BadMethodCallException::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_BadFunctionCallException + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_BadFunctionCallException,0x0 }; /* SRC: classes/exception.php line 317 */ IMPLEMENT_CLASS_NO_DEFAULT_SWEEP(PDOException) @@ -268,7 +268,7 @@ const ObjectStaticCallbacks cw_PDOException = { c_PDOException::s_call_info_table,c_PDOException::s_call_info_index, c_PDOException::s_instanceof_table,c_PDOException::s_instanceof_index, &c_PDOException::s_class_name, - &c_Exception::os_prop_table,&c_PDOException::ci___construct,0,&cw_Exception + &c_Exception::os_prop_table,&c_PDOException::ci___construct,0,&cw_Exception,0x0 }; /* SRC: classes/exception.php line 318 */ void c_PDOException::t___construct() { @@ -293,7 +293,7 @@ const ObjectStaticCallbacks cw_RangeException = { c_RangeException::s_call_info_table,c_RangeException::s_call_info_index, c_RangeException::s_instanceof_table,c_RangeException::s_instanceof_index, &c_RangeException::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_RuntimeException + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_RuntimeException,0x0 }; /* SRC: classes/exception.php line 277 */ IMPLEMENT_CLASS_NO_DEFAULT_SWEEP(UnexpectedValueException) @@ -312,7 +312,7 @@ const ObjectStaticCallbacks cw_UnexpectedValueException = { c_UnexpectedValueException::s_call_info_table,c_UnexpectedValueException::s_call_info_index, c_UnexpectedValueException::s_instanceof_table,c_UnexpectedValueException::s_instanceof_index, &c_UnexpectedValueException::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_RuntimeException + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_RuntimeException,0x0 }; /* SRC: classes/exception.php line 268 */ IMPLEMENT_CLASS_NO_DEFAULT_SWEEP(UnderflowException) @@ -331,7 +331,7 @@ const ObjectStaticCallbacks cw_UnderflowException = { c_UnderflowException::s_call_info_table,c_UnderflowException::s_call_info_index, c_UnderflowException::s_instanceof_table,c_UnderflowException::s_instanceof_index, &c_UnderflowException::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_RuntimeException + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_RuntimeException,0x0 }; /* SRC: classes/exception.php line 10 */ IMPLEMENT_CLASS_NO_DEFAULT_SWEEP(Exception) @@ -503,7 +503,7 @@ const ObjectStaticCallbacks cw_Exception = { c_Exception::s_call_info_table,c_Exception::s_call_info_index, c_Exception::s_instanceof_table,c_Exception::s_instanceof_index, &c_Exception::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,0 + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,0,0x0 }; void c_Exception::init() { m_message = NAMSTR(s_sys_ss00000000, ""); @@ -740,7 +740,7 @@ const ObjectStaticCallbacks cw_LogicException = { c_LogicException::s_call_info_table,c_LogicException::s_call_info_index, c_LogicException::s_instanceof_table,c_LogicException::s_instanceof_index, &c_LogicException::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_Exception + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_Exception,0x0 }; /* SRC: classes/exception.php line 219 */ IMPLEMENT_CLASS_NO_DEFAULT_SWEEP(LengthException) @@ -759,7 +759,7 @@ const ObjectStaticCallbacks cw_LengthException = { c_LengthException::s_call_info_table,c_LengthException::s_call_info_index, c_LengthException::s_instanceof_table,c_LengthException::s_instanceof_index, &c_LengthException::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_LogicException + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_LogicException,0x0 }; /* SRC: classes/exception.php line 211 */ IMPLEMENT_CLASS_NO_DEFAULT_SWEEP(InvalidArgumentException) @@ -778,7 +778,7 @@ const ObjectStaticCallbacks cw_InvalidArgumentException = { c_InvalidArgumentException::s_call_info_table,c_InvalidArgumentException::s_call_info_index, c_InvalidArgumentException::s_instanceof_table,c_InvalidArgumentException::s_instanceof_index, &c_InvalidArgumentException::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_LogicException + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_LogicException,0x0 }; /* SRC: classes/exception.php line 311 */ IMPLEMENT_CLASS_NO_DEFAULT_SWEEP(DOMException) @@ -823,7 +823,7 @@ const ObjectStaticCallbacks cw_DOMException = { c_DOMException::s_call_info_table,c_DOMException::s_call_info_index, c_DOMException::s_instanceof_table,c_DOMException::s_instanceof_index, &c_DOMException::s_class_name, - &c_Exception::os_prop_table,&c_DOMException::ci___construct,0,&cw_Exception + &c_Exception::os_prop_table,&c_DOMException::ci___construct,0,&cw_Exception,0x0 }; /* SRC: classes/exception.php line 312 */ void c_DOMException::t___construct(Variant v_message, Variant v_code) { @@ -850,7 +850,7 @@ const ObjectStaticCallbacks cw_OverflowException = { c_OverflowException::s_call_info_table,c_OverflowException::s_call_info_index, c_OverflowException::s_instanceof_table,c_OverflowException::s_instanceof_index, &c_OverflowException::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_RuntimeException + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_RuntimeException,0x0 }; /* SRC: classes/exception.php line 243 */ IMPLEMENT_CLASS_NO_DEFAULT_SWEEP(OutOfBoundsException) @@ -869,7 +869,7 @@ const ObjectStaticCallbacks cw_OutOfBoundsException = { c_OutOfBoundsException::s_call_info_table,c_OutOfBoundsException::s_call_info_index, c_OutOfBoundsException::s_instanceof_table,c_OutOfBoundsException::s_instanceof_index, &c_OutOfBoundsException::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_RuntimeException + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_RuntimeException,0x0 }; ObjectData *coo_OutOfRangeException() { return NEWOBJ(c_OutOfRangeException)(); diff --git a/src/system/gen/php/classes/fbmysqllexer.cpp b/src/system/gen/php/classes/fbmysqllexer.cpp index 383104f642559..a66b919e5123f 100644 --- a/src/system/gen/php/classes/fbmysqllexer.cpp +++ b/src/system/gen/php/classes/fbmysqllexer.cpp @@ -187,7 +187,7 @@ const ObjectStaticCallbacks cw_FB_MySQLLexer = { c_FB_MySQLLexer::s_call_info_table,c_FB_MySQLLexer::s_call_info_index, c_FB_MySQLLexer::s_instanceof_table,c_FB_MySQLLexer::s_instanceof_index, &c_FB_MySQLLexer::s_class_name, - &c_FB_MySQLLexer::os_prop_table,&c_FB_MySQLLexer::ci___construct,0,0 + &c_FB_MySQLLexer::os_prop_table,&c_FB_MySQLLexer::ci___construct,0,0,0x0 }; void c_FB_MySQLLexer::init() { m_symbols = s_sys_sa00000000; diff --git a/src/system/gen/php/classes/iterator.cpp b/src/system/gen/php/classes/iterator.cpp index 0e4e13293fa72..e4008922311e7 100644 --- a/src/system/gen/php/classes/iterator.cpp +++ b/src/system/gen/php/classes/iterator.cpp @@ -169,7 +169,7 @@ const ObjectStaticCallbacks cw_RecursiveIteratorIterator = { c_RecursiveIteratorIterator::s_call_info_table,c_RecursiveIteratorIterator::s_call_info_index, c_RecursiveIteratorIterator::s_instanceof_table,c_RecursiveIteratorIterator::s_instanceof_index, &c_RecursiveIteratorIterator::s_class_name, - &c_RecursiveIteratorIterator::os_prop_table,&c_RecursiveIteratorIterator::ci___construct,0,0 + &c_RecursiveIteratorIterator::os_prop_table,&c_RecursiveIteratorIterator::ci___construct,0,0,0x0 }; /* SRC: classes/iterator.php line 237 */ void c_RecursiveIteratorIterator::t___construct(Variant v_iterator, Variant v_mode // = 0LL /* RecursiveIteratorIterator::LEAVES_ONLY */ @@ -391,7 +391,7 @@ const ObjectStaticCallbacks cw_FilterIterator = { c_FilterIterator::s_call_info_table,c_FilterIterator::s_call_info_index, c_FilterIterator::s_instanceof_table,c_FilterIterator::s_instanceof_index, &c_FilterIterator::s_class_name, - &c_FilterIterator::os_prop_table,&c_FilterIterator::ci___construct,0,&cw_IteratorIterator + &c_FilterIterator::os_prop_table,&c_FilterIterator::ci___construct,0,&cw_IteratorIterator,0x100 }; /* SRC: classes/iterator.php line 714 */ void c_FilterIterator::t___construct(Variant v_it) { @@ -592,7 +592,7 @@ const ObjectStaticCallbacks cw_MutableArrayIterator = { c_MutableArrayIterator::s_call_info_table,c_MutableArrayIterator::s_call_info_index, c_MutableArrayIterator::s_instanceof_table,c_MutableArrayIterator::s_instanceof_index, &c_MutableArrayIterator::s_class_name, - &c_ArrayIterator::os_prop_table,&c_MutableArrayIterator::ci___construct,0,&cw_ArrayIterator + &c_ArrayIterator::os_prop_table,&c_MutableArrayIterator::ci___construct,0,&cw_ArrayIterator,0x0 }; /* SRC: classes/iterator.php line 645 */ void c_MutableArrayIterator::t___construct(VRefParam rv_array, Variant v_flags // = 0LL @@ -756,7 +756,7 @@ const ObjectStaticCallbacks cw_IteratorIterator = { c_IteratorIterator::s_call_info_table,c_IteratorIterator::s_call_info_index, c_IteratorIterator::s_instanceof_table,c_IteratorIterator::s_instanceof_index, &c_IteratorIterator::s_class_name, - &c_IteratorIterator::os_prop_table,&c_IteratorIterator::ci___construct,0,0 + &c_IteratorIterator::os_prop_table,&c_IteratorIterator::ci___construct,0,0,0x100 }; /* SRC: classes/iterator.php line 660 */ void c_IteratorIterator::t___construct(Variant v_iterator) { @@ -1207,7 +1207,7 @@ const ObjectStaticCallbacks cw_ArrayIterator = { c_ArrayIterator::s_call_info_table,c_ArrayIterator::s_call_info_index, c_ArrayIterator::s_instanceof_table,c_ArrayIterator::s_instanceof_index, &c_ArrayIterator::s_class_name, - &c_ArrayIterator::os_prop_table,&c_ArrayIterator::ci___construct,0,0 + &c_ArrayIterator::os_prop_table,&c_ArrayIterator::ci___construct,0,0,0x0 }; /* SRC: classes/iterator.php line 336 */ void c_ArrayIterator::t___construct(Variant v_array, Variant v_flags // = 0LL @@ -1543,7 +1543,7 @@ const ObjectStaticCallbacks cw_AppendIterator = { c_AppendIterator::s_call_info_table,c_AppendIterator::s_call_info_index, c_AppendIterator::s_instanceof_table,c_AppendIterator::s_instanceof_index, &c_AppendIterator::s_class_name, - &c_AppendIterator::os_prop_table,&c_AppendIterator::ci___construct,0,0 + &c_AppendIterator::os_prop_table,&c_AppendIterator::ci___construct,0,0,0x100 }; /* SRC: classes/iterator.php line 799 */ void c_AppendIterator::t___construct() { diff --git a/src/system/gen/php/classes/reflection.cpp b/src/system/gen/php/classes/reflection.cpp index b10eb43387023..200d6afd34cdb 100644 --- a/src/system/gen/php/classes/reflection.cpp +++ b/src/system/gen/php/classes/reflection.cpp @@ -236,7 +236,7 @@ const ObjectStaticCallbacks cw_ReflectionParameter = { c_ReflectionParameter::s_call_info_table,c_ReflectionParameter::s_call_info_index, c_ReflectionParameter::s_instanceof_table,c_ReflectionParameter::s_instanceof_index, &c_ReflectionParameter::s_class_name, - &c_ReflectionParameter::os_prop_table,&c_ReflectionParameter::ci___construct,0,0 + &c_ReflectionParameter::os_prop_table,&c_ReflectionParameter::ci___construct,0,0,0x0 }; /* SRC: classes/reflection.php line 49 */ void c_ReflectionParameter::t___construct(Variant v_func, Variant v_param) { @@ -683,7 +683,7 @@ const ObjectStaticCallbacks cw_ReflectionMethod = { c_ReflectionMethod::s_call_info_table,c_ReflectionMethod::s_call_info_index, c_ReflectionMethod::s_instanceof_table,c_ReflectionMethod::s_instanceof_index, &c_ReflectionMethod::s_class_name, - &c_ReflectionMethod::os_prop_table,&c_ReflectionMethod::ci___construct,0,&cw_ReflectionFunctionAbstract + &c_ReflectionMethod::os_prop_table,&c_ReflectionMethod::ci___construct,0,&cw_ReflectionFunctionAbstract,0x0 }; /* SRC: classes/reflection.php line 1619 */ void c_ReflectionMethod::t___construct(Variant v_cls, Variant v_name // = NAMSTR(s_sys_ss00000000, "") @@ -1118,7 +1118,7 @@ const ObjectStaticCallbacks cw_ReflectionExtension = { c_ReflectionExtension::s_call_info_table,c_ReflectionExtension::s_call_info_index, c_ReflectionExtension::s_instanceof_table,c_ReflectionExtension::s_instanceof_index, &c_ReflectionExtension::s_class_name, - &c_ReflectionExtension::os_prop_table,&c_ReflectionExtension::ci___construct,0,0 + &c_ReflectionExtension::os_prop_table,&c_ReflectionExtension::ci___construct,0,0,0x0 }; /* SRC: classes/reflection.php line 1873 */ void c_ReflectionExtension::t___construct(Variant v_name) { @@ -1338,7 +1338,7 @@ const ObjectStaticCallbacks cw_ReflectionFunction = { c_ReflectionFunction::s_call_info_table,c_ReflectionFunction::s_call_info_index, c_ReflectionFunction::s_instanceof_table,c_ReflectionFunction::s_instanceof_index, &c_ReflectionFunction::s_class_name, - &c_ReflectionFunction::os_prop_table,&c_ReflectionFunction::ci___construct,0,&cw_ReflectionFunctionAbstract + &c_ReflectionFunction::os_prop_table,&c_ReflectionFunction::ci___construct,0,&cw_ReflectionFunctionAbstract,0x0 }; /* SRC: classes/reflection.php line 465 */ void c_ReflectionFunction::t___construct(Variant v_name) { @@ -1648,7 +1648,7 @@ const ObjectStaticCallbacks cw_ReflectionProperty = { c_ReflectionProperty::s_call_info_table,c_ReflectionProperty::s_call_info_index, c_ReflectionProperty::s_instanceof_table,c_ReflectionProperty::s_instanceof_index, &c_ReflectionProperty::s_class_name, - &c_ReflectionProperty::os_prop_table,&c_ReflectionProperty::ci___construct,0,0 + &c_ReflectionProperty::os_prop_table,&c_ReflectionProperty::ci___construct,0,0,0x0 }; /* SRC: classes/reflection.php line 1365 */ void c_ReflectionProperty::t___construct(Variant v_cls, Variant v_name) { @@ -2083,7 +2083,7 @@ const ObjectStaticCallbacks cw_ReflectionFunctionAbstract = { c_ReflectionFunctionAbstract::s_call_info_table,c_ReflectionFunctionAbstract::s_call_info_index, c_ReflectionFunctionAbstract::s_instanceof_table,c_ReflectionFunctionAbstract::s_instanceof_index, &c_ReflectionFunctionAbstract::s_class_name, - &c_ReflectionFunctionAbstract::os_prop_table,0,0,0 + &c_ReflectionFunctionAbstract::os_prop_table,0,0,0,0x0 }; /* SRC: classes/reflection.php line 261 */ Variant c_ReflectionFunctionAbstract::t_getname() { @@ -2243,7 +2243,7 @@ const ObjectStaticCallbacks cw_ReflectionException = { c_ReflectionException::s_call_info_table,c_ReflectionException::s_call_info_index, c_ReflectionException::s_instanceof_table,c_ReflectionException::s_instanceof_index, &c_ReflectionException::s_class_name, - &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_Exception + &c_Exception::os_prop_table,&c_Exception::ci___construct,0,&cw_Exception,0x0 }; /* SRC: classes/reflection.php line 1317 */ IMPLEMENT_CLASS_NO_DEFAULT_SWEEP(ReflectionObject) @@ -2280,7 +2280,7 @@ const ObjectStaticCallbacks cw_ReflectionObject = { c_ReflectionObject::s_call_info_table,c_ReflectionObject::s_call_info_index, c_ReflectionObject::s_instanceof_table,c_ReflectionObject::s_instanceof_index, &c_ReflectionObject::s_class_name, - &c_ReflectionClass::os_prop_table,&c_ReflectionClass::ci___construct,0,&cw_ReflectionClass + &c_ReflectionClass::os_prop_table,&c_ReflectionClass::ci___construct,0,&cw_ReflectionClass,0x0 }; /* SRC: classes/reflection.php line 1334 */ Variant c_ReflectionObject::t_export(Variant v_obj, CVarRef v_ret) { @@ -2980,7 +2980,7 @@ const ObjectStaticCallbacks cw_ReflectionClass = { c_ReflectionClass::s_call_info_table,c_ReflectionClass::s_call_info_index, c_ReflectionClass::s_instanceof_table,c_ReflectionClass::s_instanceof_index, &c_ReflectionClass::s_class_name, - &c_ReflectionClass::os_prop_table,&c_ReflectionClass::ci___construct,0,0 + &c_ReflectionClass::os_prop_table,&c_ReflectionClass::ci___construct,0,0,0x0 }; /* SRC: classes/reflection.php line 546 */ void c_ReflectionClass::t___construct(Variant v_name) { diff --git a/src/system/gen/php/classes/soapfault.cpp b/src/system/gen/php/classes/soapfault.cpp index 065a77a55c467..fed66ba39961c 100644 --- a/src/system/gen/php/classes/soapfault.cpp +++ b/src/system/gen/php/classes/soapfault.cpp @@ -101,7 +101,7 @@ const ObjectStaticCallbacks cw_SoapFault = { c_SoapFault::s_call_info_table,c_SoapFault::s_call_info_index, c_SoapFault::s_instanceof_table,c_SoapFault::s_instanceof_index, &c_SoapFault::s_class_name, - &c_SoapFault::os_prop_table,&c_SoapFault::ci___construct,0,&cw_Exception + &c_SoapFault::os_prop_table,&c_SoapFault::ci___construct,0,&cw_Exception,0x0 }; /* SRC: classes/soapfault.php line 12 */ void c_SoapFault::t___construct(Variant v_code, Variant v_message, Variant v_actor // = null diff --git a/src/system/gen/php/classes/splfile.cpp b/src/system/gen/php/classes/splfile.cpp index 7b339fdf0d91c..a4e8a2b73c5e5 100644 --- a/src/system/gen/php/classes/splfile.cpp +++ b/src/system/gen/php/classes/splfile.cpp @@ -508,7 +508,7 @@ const ObjectStaticCallbacks cw_SplFileObject = { c_SplFileObject::s_call_info_table,c_SplFileObject::s_call_info_index, c_SplFileObject::s_instanceof_table,c_SplFileObject::s_instanceof_index, &c_SplFileObject::s_class_name, - &c_SplFileObject::os_prop_table,&c_SplFileObject::ci___construct,0,&cw_SplFileInfo + &c_SplFileObject::os_prop_table,&c_SplFileObject::ci___construct,0,&cw_SplFileInfo,0x0 }; /* SRC: classes/splfile.php line 392 */ void c_SplFileObject::t___construct(Variant v_filename, Variant v_open_mode // = NAMSTR(s_sys_ss0d42ecf6, "r") @@ -1123,7 +1123,7 @@ const ObjectStaticCallbacks cw_SplFileInfo = { c_SplFileInfo::s_call_info_table,c_SplFileInfo::s_call_info_index, c_SplFileInfo::s_instanceof_table,c_SplFileInfo::s_instanceof_index, &c_SplFileInfo::s_class_name, - &c_SplFileInfo::os_prop_table,&c_SplFileInfo::ci___construct,0,0 + &c_SplFileInfo::os_prop_table,&c_SplFileInfo::ci___construct,0,0,0x0 }; /* SRC: classes/splfile.php line 14 */ void c_SplFileInfo::t___construct(Variant v_file_name) { diff --git a/src/system/gen/php/classes/splobjectstorage.cpp b/src/system/gen/php/classes/splobjectstorage.cpp index eb280950c54db..27a231e3e4eec 100644 --- a/src/system/gen/php/classes/splobjectstorage.cpp +++ b/src/system/gen/php/classes/splobjectstorage.cpp @@ -182,7 +182,7 @@ const ObjectStaticCallbacks cw_SplObjectStorage = { c_SplObjectStorage::s_call_info_table,c_SplObjectStorage::s_call_info_index, c_SplObjectStorage::s_instanceof_table,c_SplObjectStorage::s_instanceof_index, &c_SplObjectStorage::s_class_name, - &c_SplObjectStorage::os_prop_table,0,0,0 + &c_SplObjectStorage::os_prop_table,0,0,0,0x0 }; void c_SplObjectStorage::init() { m_storage = s_sys_sa00000000; diff --git a/src/system/gen/php/classes/stdclass.cpp b/src/system/gen/php/classes/stdclass.cpp index d663372f12264..129a57e0891e2 100644 --- a/src/system/gen/php/classes/stdclass.cpp +++ b/src/system/gen/php/classes/stdclass.cpp @@ -46,7 +46,7 @@ const ObjectStaticCallbacks cw___PHP_Incomplete_Class = { c___PHP_Incomplete_Class::s_call_info_table,c___PHP_Incomplete_Class::s_call_info_index, c___PHP_Incomplete_Class::s_instanceof_table,c___PHP_Incomplete_Class::s_instanceof_index, &c___PHP_Incomplete_Class::s_class_name, - 0,0,0,0 + 0,0,0,0,0x0 }; /* SRC: classes/stdclass.php line 4 */ IMPLEMENT_CLASS_NO_DEFAULT_SWEEP(stdClass) @@ -62,7 +62,7 @@ const ObjectStaticCallbacks cw_stdClass = { c_stdClass::s_call_info_table,c_stdClass::s_call_info_index, c_stdClass::s_instanceof_table,c_stdClass::s_instanceof_index, &c_stdClass::s_class_name, - 0,0,0,0 + 0,0,0,0,0x0 }; ObjectData *coo___PHP_Incomplete_Class() { return NEWOBJ(c___PHP_Incomplete_Class)(); diff --git a/src/system/gen/php/classes/xhprof.cpp b/src/system/gen/php/classes/xhprof.cpp index f106dc7ba870a..275ca3d714bc9 100644 --- a/src/system/gen/php/classes/xhprof.cpp +++ b/src/system/gen/php/classes/xhprof.cpp @@ -86,7 +86,7 @@ const ObjectStaticCallbacks cw_XhprofFrame = { c_XhprofFrame::s_call_info_table,c_XhprofFrame::s_call_info_index, c_XhprofFrame::s_instanceof_table,c_XhprofFrame::s_instanceof_index, &c_XhprofFrame::s_class_name, - 0,&c_XhprofFrame::ci___construct,0,0 + 0,&c_XhprofFrame::ci___construct,0,0,0x0 }; /* SRC: classes/xhprof.php line 7 */ void c_XhprofFrame::t___construct(Variant v_name) { diff --git a/src/system/gen/sys/dynamic_table_class.cpp b/src/system/gen/sys/dynamic_table_class.cpp index 7680cf45178c7..557b0b81f74a8 100644 --- a/src/system/gen/sys/dynamic_table_class.cpp +++ b/src/system/gen/sys/dynamic_table_class.cpp @@ -173,7 +173,7 @@ const ObjectStaticCallbacks cw_DOMDocumentType = { c_DOMDocumentType::s_call_info_table,c_DOMDocumentType::s_call_info_index, c_DOMDocumentType::s_instanceof_table,c_DOMDocumentType::s_instanceof_index, &c_DOMDocumentType::s_class_name, - 0,&c_DOMDocumentType::ci___construct,0,&cw_DOMNode + 0,&c_DOMDocumentType::ci___construct,0,&cw_DOMNode,0x0 }; ObjectData *coo_DOMNodeList() { return NEWOBJ(c_DOMNodeList)(); @@ -305,7 +305,7 @@ const ObjectStaticCallbacks cw_DOMNodeList = { c_DOMNodeList::s_call_info_table,c_DOMNodeList::s_call_info_index, c_DOMNodeList::s_instanceof_table,c_DOMNodeList::s_instanceof_index, &c_DOMNodeList::s_class_name, - 0,&c_DOMNodeList::ci___construct,0,0 + 0,&c_DOMNodeList::ci___construct,0,0,0x0 }; ObjectData *coo_DOMNamedNodeMap() { return NEWOBJ(c_DOMNamedNodeMap)(); @@ -468,7 +468,7 @@ const ObjectStaticCallbacks cw_DOMNamedNodeMap = { c_DOMNamedNodeMap::s_call_info_table,c_DOMNamedNodeMap::s_call_info_index, c_DOMNamedNodeMap::s_instanceof_table,c_DOMNamedNodeMap::s_instanceof_index, &c_DOMNamedNodeMap::s_class_name, - 0,&c_DOMNamedNodeMap::ci___construct,0,0 + 0,&c_DOMNamedNodeMap::ci___construct,0,0,0x0 }; ObjectData *coo_PDOStatement() { return NEWOBJ(c_PDOStatement)(); @@ -937,7 +937,7 @@ const ObjectStaticCallbacks cw_PDOStatement = { c_PDOStatement::s_call_info_table,c_PDOStatement::s_call_info_index, c_PDOStatement::s_instanceof_table,c_PDOStatement::s_instanceof_index, &c_PDOStatement::s_class_name, - 0,&c_PDOStatement::ci___construct,0,0 + 0,&c_PDOStatement::ci___construct,0,0,0x0 }; ObjectData *coo_DOMNodeIterator() { return NEWOBJ(c_DOMNodeIterator)(); @@ -1064,7 +1064,7 @@ const ObjectStaticCallbacks cw_DOMNodeIterator = { c_DOMNodeIterator::s_call_info_table,c_DOMNodeIterator::s_call_info_index, c_DOMNodeIterator::s_instanceof_table,c_DOMNodeIterator::s_instanceof_index, &c_DOMNodeIterator::s_class_name, - 0,&c_DOMNodeIterator::ci___construct,0,0 + 0,&c_DOMNodeIterator::ci___construct,0,0,0x0 }; ObjectData *coo_Locale() { return NEWOBJ(c_Locale)(); @@ -1121,7 +1121,7 @@ const ObjectStaticCallbacks cw_Locale = { c_Locale::s_call_info_table,c_Locale::s_call_info_index, c_Locale::s_instanceof_table,c_Locale::s_instanceof_index, &c_Locale::s_class_name, - &c_Locale::os_prop_table,&c_Locale::ci___construct,0,0 + &c_Locale::os_prop_table,&c_Locale::ci___construct,0,0,0x0 }; ObjectData *coo_SpoofChecker() { return NEWOBJ(c_SpoofChecker)(); @@ -1241,7 +1241,7 @@ const ObjectStaticCallbacks cw_SpoofChecker = { c_SpoofChecker::s_call_info_table,c_SpoofChecker::s_call_info_index, c_SpoofChecker::s_instanceof_table,c_SpoofChecker::s_instanceof_index, &c_SpoofChecker::s_class_name, - &c_SpoofChecker::os_prop_table,&c_SpoofChecker::ci___construct,0,0 + &c_SpoofChecker::os_prop_table,&c_SpoofChecker::ci___construct,0,0,0x0 }; ObjectData *coo_XMLWriter() { return NEWOBJ(c_XMLWriter)(); @@ -1932,7 +1932,7 @@ const ObjectStaticCallbacks cw_XMLWriter = { c_XMLWriter::s_call_info_table,c_XMLWriter::s_call_info_index, c_XMLWriter::s_instanceof_table,c_XMLWriter::s_instanceof_index, &c_XMLWriter::s_class_name, - 0,&c_XMLWriter::ci___construct,0,0 + 0,&c_XMLWriter::ci___construct,0,0,0x0 }; ObjectData *coo_DOMComment() { return NEWOBJ(c_DOMComment)(); @@ -1994,7 +1994,7 @@ const ObjectStaticCallbacks cw_DOMComment = { c_DOMComment::s_call_info_table,c_DOMComment::s_call_info_index, c_DOMComment::s_instanceof_table,c_DOMComment::s_instanceof_index, &c_DOMComment::s_class_name, - 0,&c_DOMComment::ci___construct,0,&cw_DOMCharacterData + 0,&c_DOMComment::ci___construct,0,&cw_DOMCharacterData,0x0 }; ObjectData *coo_Closure() { return NEWOBJ(c_Closure)(); @@ -2090,7 +2090,7 @@ const ObjectStaticCallbacks cw_Closure = { c_Closure::s_call_info_table,c_Closure::s_call_info_index, c_Closure::s_instanceof_table,c_Closure::s_instanceof_index, &c_Closure::s_class_name, - 0,&c_Closure::ci___construct,0,0 + 0,&c_Closure::ci___construct,0,0,0x0 }; ObjectData *coo_SQLite3() { return NEWOBJ(c_SQLite3)(); @@ -2390,7 +2390,7 @@ const ObjectStaticCallbacks cw_SQLite3 = { c_SQLite3::s_call_info_table,c_SQLite3::s_call_info_index, c_SQLite3::s_instanceof_table,c_SQLite3::s_instanceof_index, &c_SQLite3::s_class_name, - 0,&c_SQLite3::ci___construct,0,0 + 0,&c_SQLite3::ci___construct,0,0,0x0 }; ObjectData *coo_DOMProcessingInstruction() { return NEWOBJ(c_DOMProcessingInstruction)(); @@ -2496,7 +2496,7 @@ const ObjectStaticCallbacks cw_DOMProcessingInstruction = { c_DOMProcessingInstruction::s_call_info_table,c_DOMProcessingInstruction::s_call_info_index, c_DOMProcessingInstruction::s_instanceof_table,c_DOMProcessingInstruction::s_instanceof_index, &c_DOMProcessingInstruction::s_class_name, - 0,&c_DOMProcessingInstruction::ci___construct,0,&cw_DOMNode + 0,&c_DOMProcessingInstruction::ci___construct,0,&cw_DOMNode,0x0 }; ObjectData *coo_Collator() { return NEWOBJ(c_Collator)(); @@ -2726,7 +2726,7 @@ const ObjectStaticCallbacks cw_Collator = { c_Collator::s_call_info_table,c_Collator::s_call_info_index, c_Collator::s_instanceof_table,c_Collator::s_instanceof_index, &c_Collator::s_class_name, - &c_Collator::os_prop_table,&c_Collator::ci___construct,0,0 + &c_Collator::os_prop_table,&c_Collator::ci___construct,0,0,0x0 }; ObjectData *coo_SoapHeader() { return NEWOBJ(c_SoapHeader)(); @@ -2791,7 +2791,7 @@ const ObjectStaticCallbacks cw_SoapHeader = { c_SoapHeader::s_call_info_table,c_SoapHeader::s_call_info_index, c_SoapHeader::s_instanceof_table,c_SoapHeader::s_instanceof_index, &c_SoapHeader::s_class_name, - 0,&c_SoapHeader::ci___construct,0,0 + 0,&c_SoapHeader::ci___construct,0,0,0x0 }; ObjectData *coo_GeneratorClosure() { return NEWOBJ(c_GeneratorClosure)(); @@ -2849,7 +2849,7 @@ const ObjectStaticCallbacks cw_GeneratorClosure = { c_GeneratorClosure::s_call_info_table,c_GeneratorClosure::s_call_info_index, c_GeneratorClosure::s_instanceof_table,c_GeneratorClosure::s_instanceof_index, &c_GeneratorClosure::s_class_name, - 0,&c_GeneratorClosure::ci___construct,0,&cw_Closure + 0,&c_GeneratorClosure::ci___construct,0,&cw_Closure,0x0 }; ObjectData *coo_EncodingDetector() { return NEWOBJ(c_EncodingDetector)(); @@ -2962,7 +2962,7 @@ const ObjectStaticCallbacks cw_EncodingDetector = { c_EncodingDetector::s_call_info_table,c_EncodingDetector::s_call_info_index, c_EncodingDetector::s_instanceof_table,c_EncodingDetector::s_instanceof_index, &c_EncodingDetector::s_class_name, - 0,&c_EncodingDetector::ci___construct,0,0 + 0,&c_EncodingDetector::ci___construct,0,0,0x0 }; ObjectData *coo_ImageSprite() { return NEWOBJ(c_ImageSprite)(); @@ -3184,7 +3184,7 @@ const ObjectStaticCallbacks cw_ImageSprite = { c_ImageSprite::s_call_info_table,c_ImageSprite::s_call_info_index, c_ImageSprite::s_instanceof_table,c_ImageSprite::s_instanceof_index, &c_ImageSprite::s_class_name, - 0,&c_ImageSprite::ci___construct,0,0 + 0,&c_ImageSprite::ci___construct,0,0,0x0 }; ObjectData *coo_DOMDocumentFragment() { return NEWOBJ(c_DOMDocumentFragment)(); @@ -3257,7 +3257,7 @@ const ObjectStaticCallbacks cw_DOMDocumentFragment = { c_DOMDocumentFragment::s_call_info_table,c_DOMDocumentFragment::s_call_info_index, c_DOMDocumentFragment::s_instanceof_table,c_DOMDocumentFragment::s_instanceof_index, &c_DOMDocumentFragment::s_class_name, - 0,&c_DOMDocumentFragment::ci___construct,0,&cw_DOMNode + 0,&c_DOMDocumentFragment::ci___construct,0,&cw_DOMNode,0x0 }; ObjectData *coo_DOMXPath() { return NEWOBJ(c_DOMXPath)(); @@ -3424,7 +3424,7 @@ const ObjectStaticCallbacks cw_DOMXPath = { c_DOMXPath::s_call_info_table,c_DOMXPath::s_call_info_index, c_DOMXPath::s_instanceof_table,c_DOMXPath::s_instanceof_index, &c_DOMXPath::s_class_name, - 0,&c_DOMXPath::ci___construct,0,0 + 0,&c_DOMXPath::ci___construct,0,0,0x0 }; ObjectData *coo_DebuggerClient() { return NEWOBJ(c_DebuggerClient)(); @@ -4007,7 +4007,7 @@ const ObjectStaticCallbacks cw_DebuggerClient = { c_DebuggerClient::s_call_info_table,c_DebuggerClient::s_call_info_index, c_DebuggerClient::s_instanceof_table,c_DebuggerClient::s_instanceof_index, &c_DebuggerClient::s_class_name, - &c_DebuggerClient::os_prop_table,&c_DebuggerClient::ci___construct,0,0 + &c_DebuggerClient::os_prop_table,&c_DebuggerClient::ci___construct,0,0,0x0 }; ObjectData *coo_DebuggerProxy() { return NEWOBJ(c_DebuggerProxy)(); @@ -4092,7 +4092,7 @@ const ObjectStaticCallbacks cw_DebuggerProxy = { c_DebuggerProxy::s_call_info_table,c_DebuggerProxy::s_call_info_index, c_DebuggerProxy::s_instanceof_table,c_DebuggerProxy::s_instanceof_index, &c_DebuggerProxy::s_class_name, - 0,&c_DebuggerProxy::ci___construct,0,0 + 0,&c_DebuggerProxy::ci___construct,0,0,0x0 }; ObjectData *coo_SoapParam() { return NEWOBJ(c_SoapParam)(); @@ -4151,7 +4151,7 @@ const ObjectStaticCallbacks cw_SoapParam = { c_SoapParam::s_call_info_table,c_SoapParam::s_call_info_index, c_SoapParam::s_instanceof_table,c_SoapParam::s_instanceof_index, &c_SoapParam::s_class_name, - 0,&c_SoapParam::ci___construct,0,0 + 0,&c_SoapParam::ci___construct,0,0,0x0 }; ObjectData *coo_Memcached() { return NEWOBJ(c_Memcached)(); @@ -4819,7 +4819,7 @@ const ObjectStaticCallbacks cw_Memcached = { c_Memcached::s_call_info_table,c_Memcached::s_call_info_index, c_Memcached::s_instanceof_table,c_Memcached::s_instanceof_index, &c_Memcached::s_class_name, - &c_Memcached::os_prop_table,&c_Memcached::ci___construct,0,0 + &c_Memcached::os_prop_table,&c_Memcached::ci___construct,0,0,0x0 }; ObjectData *coo_DOMAttr() { return NEWOBJ(c_DOMAttr)(); @@ -4938,7 +4938,7 @@ const ObjectStaticCallbacks cw_DOMAttr = { c_DOMAttr::s_call_info_table,c_DOMAttr::s_call_info_index, c_DOMAttr::s_instanceof_table,c_DOMAttr::s_instanceof_index, &c_DOMAttr::s_class_name, - 0,&c_DOMAttr::ci___construct,0,&cw_DOMNode + 0,&c_DOMAttr::ci___construct,0,&cw_DOMNode,0x0 }; ObjectData *coo_SQLite3Result() { return NEWOBJ(c_SQLite3Result)(); @@ -5079,7 +5079,7 @@ const ObjectStaticCallbacks cw_SQLite3Result = { c_SQLite3Result::s_call_info_table,c_SQLite3Result::s_call_info_index, c_SQLite3Result::s_instanceof_table,c_SQLite3Result::s_instanceof_index, &c_SQLite3Result::s_class_name, - 0,&c_SQLite3Result::ci___construct,0,0 + 0,&c_SQLite3Result::ci___construct,0,0,0x0 }; ObjectData *coo_DOMDocument() { return NEWOBJ(c_DOMDocument)(); @@ -5638,7 +5638,7 @@ const ObjectStaticCallbacks cw_DOMDocument = { c_DOMDocument::s_call_info_table,c_DOMDocument::s_call_info_index, c_DOMDocument::s_instanceof_table,c_DOMDocument::s_instanceof_index, &c_DOMDocument::s_class_name, - 0,&c_DOMDocument::ci___construct,0,&cw_DOMNode + 0,&c_DOMDocument::ci___construct,0,&cw_DOMNode,0x0 }; ObjectData *coo_SoapVar() { return NEWOBJ(c_SoapVar)(); @@ -5705,7 +5705,7 @@ const ObjectStaticCallbacks cw_SoapVar = { c_SoapVar::s_call_info_table,c_SoapVar::s_call_info_index, c_SoapVar::s_instanceof_table,c_SoapVar::s_instanceof_index, &c_SoapVar::s_class_name, - 0,&c_SoapVar::ci___construct,0,0 + 0,&c_SoapVar::ci___construct,0,0,0x0 }; ObjectData *coo_SimpleXMLElementIterator() { return NEWOBJ(c_SimpleXMLElementIterator)(); @@ -5832,7 +5832,7 @@ const ObjectStaticCallbacks cw_SimpleXMLElementIterator = { c_SimpleXMLElementIterator::s_call_info_table,c_SimpleXMLElementIterator::s_call_info_index, c_SimpleXMLElementIterator::s_instanceof_table,c_SimpleXMLElementIterator::s_instanceof_index, &c_SimpleXMLElementIterator::s_class_name, - 0,&c_SimpleXMLElementIterator::ci___construct,0,0 + 0,&c_SimpleXMLElementIterator::ci___construct,0,0,0x0 }; ObjectData *coo_PDO() { return NEWOBJ(c_PDO)(); @@ -6108,7 +6108,7 @@ const ObjectStaticCallbacks cw_PDO = { c_PDO::s_call_info_table,c_PDO::s_call_info_index, c_PDO::s_instanceof_table,c_PDO::s_instanceof_index, &c_PDO::s_class_name, - &c_PDO::os_prop_table,&c_PDO::ci___construct,0,0 + &c_PDO::os_prop_table,&c_PDO::ci___construct,0,0,0x0 }; ObjectData *coo_Continuation() { return NEWOBJ(c_Continuation)(); @@ -6410,7 +6410,7 @@ const ObjectStaticCallbacks cw_Continuation = { c_Continuation::s_call_info_table,c_Continuation::s_call_info_index, c_Continuation::s_instanceof_table,c_Continuation::s_instanceof_index, &c_Continuation::s_class_name, - &c_Continuation::os_prop_table,&c_Continuation::ci___construct,0,0 + &c_Continuation::os_prop_table,&c_Continuation::ci___construct,0,0,0x0 }; ObjectData *coo_SimpleXMLElement() { return NEWOBJ(c_SimpleXMLElement)(); @@ -6800,7 +6800,7 @@ const ObjectStaticCallbacks cw_SimpleXMLElement = { c_SimpleXMLElement::s_call_info_table,c_SimpleXMLElement::s_call_info_index, c_SimpleXMLElement::s_instanceof_table,c_SimpleXMLElement::s_instanceof_index, &c_SimpleXMLElement::s_class_name, - 0,&c_SimpleXMLElement::ci___construct,0,0 + 0,&c_SimpleXMLElement::ci___construct,0,0,0x0 }; ObjectData *coo_DOMText() { return NEWOBJ(c_DOMText)(); @@ -6934,7 +6934,7 @@ const ObjectStaticCallbacks cw_DOMText = { c_DOMText::s_call_info_table,c_DOMText::s_call_info_index, c_DOMText::s_instanceof_table,c_DOMText::s_instanceof_index, &c_DOMText::s_class_name, - 0,&c_DOMText::ci___construct,0,&cw_DOMCharacterData + 0,&c_DOMText::ci___construct,0,&cw_DOMCharacterData,0x0 }; ObjectData *coo_SoapServer() { return NEWOBJ(c_SoapServer)(); @@ -7135,7 +7135,7 @@ const ObjectStaticCallbacks cw_SoapServer = { c_SoapServer::s_call_info_table,c_SoapServer::s_call_info_index, c_SoapServer::s_instanceof_table,c_SoapServer::s_instanceof_index, &c_SoapServer::s_class_name, - 0,&c_SoapServer::ci___construct,0,0 + 0,&c_SoapServer::ci___construct,0,0,0x0 }; ObjectData *coo_DOMCDATASection() { return NEWOBJ(c_DOMCDATASection)(); @@ -7197,7 +7197,7 @@ const ObjectStaticCallbacks cw_DOMCDATASection = { c_DOMCDATASection::s_call_info_table,c_DOMCDATASection::s_call_info_index, c_DOMCDATASection::s_instanceof_table,c_DOMCDATASection::s_instanceof_index, &c_DOMCDATASection::s_class_name, - 0,&c_DOMCDATASection::ci___construct,0,&cw_DOMText + 0,&c_DOMCDATASection::ci___construct,0,&cw_DOMText,0x0 }; ObjectData *coo_DOMNode() { return NEWOBJ(c_DOMNode)(); @@ -7558,7 +7558,7 @@ const ObjectStaticCallbacks cw_DOMNode = { c_DOMNode::s_call_info_table,c_DOMNode::s_call_info_index, c_DOMNode::s_instanceof_table,c_DOMNode::s_instanceof_index, &c_DOMNode::s_class_name, - 0,&c_DOMNode::ci___construct,0,0 + 0,&c_DOMNode::ci___construct,0,0,0x0 }; ObjectData *coo_SQLite3Stmt() { return NEWOBJ(c_SQLite3Stmt)(); @@ -7720,7 +7720,7 @@ const ObjectStaticCallbacks cw_SQLite3Stmt = { c_SQLite3Stmt::s_call_info_table,c_SQLite3Stmt::s_call_info_index, c_SQLite3Stmt::s_instanceof_table,c_SQLite3Stmt::s_instanceof_index, &c_SQLite3Stmt::s_class_name, - 0,&c_SQLite3Stmt::ci___construct,0,0 + 0,&c_SQLite3Stmt::ci___construct,0,0,0x0 }; ObjectData *coo_DOMEntity() { return NEWOBJ(c_DOMEntity)(); @@ -7823,7 +7823,7 @@ const ObjectStaticCallbacks cw_DOMEntity = { c_DOMEntity::s_call_info_table,c_DOMEntity::s_call_info_index, c_DOMEntity::s_instanceof_table,c_DOMEntity::s_instanceof_index, &c_DOMEntity::s_class_name, - 0,&c_DOMEntity::ci___construct,0,&cw_DOMNode + 0,&c_DOMEntity::ci___construct,0,&cw_DOMNode,0x0 }; ObjectData *coo_DOMElement() { return NEWOBJ(c_DOMElement)(); @@ -8201,7 +8201,7 @@ const ObjectStaticCallbacks cw_DOMElement = { c_DOMElement::s_call_info_table,c_DOMElement::s_call_info_index, c_DOMElement::s_instanceof_table,c_DOMElement::s_instanceof_index, &c_DOMElement::s_class_name, - 0,&c_DOMElement::ci___construct,0,&cw_DOMNode + 0,&c_DOMElement::ci___construct,0,&cw_DOMNode,0x0 }; ObjectData *coo_Memcache() { return NEWOBJ(c_Memcache)(); @@ -8627,7 +8627,7 @@ const ObjectStaticCallbacks cw_Memcache = { c_Memcache::s_call_info_table,c_Memcache::s_call_info_index, c_Memcache::s_instanceof_table,c_Memcache::s_instanceof_index, &c_Memcache::s_class_name, - 0,&c_Memcache::ci___construct,0,0 + 0,&c_Memcache::ci___construct,0,0,0x0 }; ObjectData *coo_DOMEntityReference() { return NEWOBJ(c_DOMEntityReference)(); @@ -8686,7 +8686,7 @@ const ObjectStaticCallbacks cw_DOMEntityReference = { c_DOMEntityReference::s_call_info_table,c_DOMEntityReference::s_call_info_index, c_DOMEntityReference::s_instanceof_table,c_DOMEntityReference::s_instanceof_index, &c_DOMEntityReference::s_class_name, - 0,&c_DOMEntityReference::ci___construct,0,&cw_DOMNode + 0,&c_DOMEntityReference::ci___construct,0,&cw_DOMNode,0x0 }; ObjectData *coo_GenericContinuation() { return NEWOBJ(c_GenericContinuation)(); @@ -8803,7 +8803,7 @@ const ObjectStaticCallbacks cw_GenericContinuation = { c_GenericContinuation::s_call_info_table,c_GenericContinuation::s_call_info_index, c_GenericContinuation::s_instanceof_table,c_GenericContinuation::s_instanceof_index, &c_GenericContinuation::s_class_name, - &c_GenericContinuation::os_prop_table,&c_GenericContinuation::ci___construct,0,&cw_Continuation + &c_GenericContinuation::os_prop_table,&c_GenericContinuation::ci___construct,0,&cw_Continuation,0x0 }; ObjectData *coo_Normalizer() { return NEWOBJ(c_Normalizer)(); @@ -8885,7 +8885,7 @@ const ObjectStaticCallbacks cw_Normalizer = { c_Normalizer::s_call_info_table,c_Normalizer::s_call_info_index, c_Normalizer::s_instanceof_table,c_Normalizer::s_instanceof_index, &c_Normalizer::s_class_name, - &c_Normalizer::os_prop_table,&c_Normalizer::ci___construct,0,0 + &c_Normalizer::os_prop_table,&c_Normalizer::ci___construct,0,0,0x0 }; ObjectData *coo_EncodingMatch() { return NEWOBJ(c_EncodingMatch)(); @@ -9009,7 +9009,7 @@ const ObjectStaticCallbacks cw_EncodingMatch = { c_EncodingMatch::s_call_info_table,c_EncodingMatch::s_call_info_index, c_EncodingMatch::s_instanceof_table,c_EncodingMatch::s_instanceof_index, &c_EncodingMatch::s_class_name, - 0,&c_EncodingMatch::ci___construct,0,0 + 0,&c_EncodingMatch::ci___construct,0,0,0x0 }; ObjectData *coo_XMLReader() { return NEWOBJ(c_XMLReader)(); @@ -9440,7 +9440,7 @@ const ObjectStaticCallbacks cw_XMLReader = { c_XMLReader::s_call_info_table,c_XMLReader::s_call_info_index, c_XMLReader::s_instanceof_table,c_XMLReader::s_instanceof_index, &c_XMLReader::s_class_name, - &c_XMLReader::os_prop_table,&c_XMLReader::ci___construct,0,0 + &c_XMLReader::os_prop_table,&c_XMLReader::ci___construct,0,0,0x0 }; ObjectData *coo_DateTime() { return NEWOBJ(c_DateTime)(); @@ -9623,7 +9623,7 @@ const ObjectStaticCallbacks cw_DateTime = { c_DateTime::s_call_info_table,c_DateTime::s_call_info_index, c_DateTime::s_instanceof_table,c_DateTime::s_instanceof_index, &c_DateTime::s_class_name, - &c_DateTime::os_prop_table,&c_DateTime::ci___construct,0,0 + &c_DateTime::os_prop_table,&c_DateTime::ci___construct,0,0,0x0 }; ObjectData *coo_DOMNotation() { return NEWOBJ(c_DOMNotation)(); @@ -9726,7 +9726,7 @@ const ObjectStaticCallbacks cw_DOMNotation = { c_DOMNotation::s_call_info_table,c_DOMNotation::s_call_info_index, c_DOMNotation::s_instanceof_table,c_DOMNotation::s_instanceof_index, &c_DOMNotation::s_class_name, - 0,&c_DOMNotation::ci___construct,0,&cw_DOMNode + 0,&c_DOMNotation::ci___construct,0,&cw_DOMNode,0x0 }; ObjectData *coo_DOMCharacterData() { return NEWOBJ(c_DOMCharacterData)(); @@ -9906,7 +9906,7 @@ const ObjectStaticCallbacks cw_DOMCharacterData = { c_DOMCharacterData::s_call_info_table,c_DOMCharacterData::s_call_info_index, c_DOMCharacterData::s_instanceof_table,c_DOMCharacterData::s_instanceof_index, &c_DOMCharacterData::s_class_name, - 0,&c_DOMCharacterData::ci___construct,0,&cw_DOMNode + 0,&c_DOMCharacterData::ci___construct,0,&cw_DOMNode,0x0 }; ObjectData *coo_LibXMLError() { return NEWOBJ(c_LibXMLError)(); @@ -9963,7 +9963,7 @@ const ObjectStaticCallbacks cw_LibXMLError = { c_LibXMLError::s_call_info_table,c_LibXMLError::s_call_info_index, c_LibXMLError::s_instanceof_table,c_LibXMLError::s_instanceof_index, &c_LibXMLError::s_class_name, - 0,&c_LibXMLError::ci___construct,0,0 + 0,&c_LibXMLError::ci___construct,0,0,0x0 }; ObjectData *coo_DateTimeZone() { return NEWOBJ(c_DateTimeZone)(); @@ -10081,7 +10081,7 @@ const ObjectStaticCallbacks cw_DateTimeZone = { c_DateTimeZone::s_call_info_table,c_DateTimeZone::s_call_info_index, c_DateTimeZone::s_instanceof_table,c_DateTimeZone::s_instanceof_index, &c_DateTimeZone::s_class_name, - &c_DateTimeZone::os_prop_table,&c_DateTimeZone::ci___construct,0,0 + &c_DateTimeZone::os_prop_table,&c_DateTimeZone::ci___construct,0,0,0x0 }; ObjectData *coo_DOMImplementation() { return NEWOBJ(c_DOMImplementation)(); @@ -10193,7 +10193,7 @@ const ObjectStaticCallbacks cw_DOMImplementation = { c_DOMImplementation::s_call_info_table,c_DOMImplementation::s_call_info_index, c_DOMImplementation::s_instanceof_table,c_DOMImplementation::s_instanceof_index, &c_DOMImplementation::s_class_name, - 0,&c_DOMImplementation::ci___construct,0,0 + 0,&c_DOMImplementation::ci___construct,0,0,0x0 }; ObjectData *coo_SoapClient() { return NEWOBJ(c_SoapClient)(); @@ -10439,7 +10439,7 @@ const ObjectStaticCallbacks cw_SoapClient = { c_SoapClient::s_call_info_table,c_SoapClient::s_call_info_index, c_SoapClient::s_instanceof_table,c_SoapClient::s_instanceof_index, &c_SoapClient::s_class_name, - 0,&c_SoapClient::ci___construct,0,0 + 0,&c_SoapClient::ci___construct,0,0,0x100 }; struct hashNodeCTD { int64 hash; @@ -10599,10 +10599,6 @@ const ObjectStaticCallbacks * get_builtin_object_static_callbacks(CStrRef s) { } return NULL; } -Variant get_builtin_class_var_init(CStrRef s, const char *var) { - const ObjectStaticCallbacks *cwo = get_builtin_object_static_callbacks(s); - return LIKELY(cwo != 0) ? cwo->os_getInit(var) : throw_missing_class(s); -} ObjectData *create_builtin_object_only_no_init(CStrRef s, ObjectData* root /* = NULL*/) { const ObjectStaticCallbacks *cwo = get_builtin_object_static_callbacks(s); if (LIKELY(cwo != 0)) return cwo->createOnlyNoInit(root); @@ -10615,33 +10611,6 @@ Object create_builtin_object_only(CStrRef s, ObjectData* root /* = NULL*/) { obj->init(); return r; } -bool get_call_info_static_method_builtin(MethodCallPackage &mcp) { - StringData *s ATTRIBUTE_UNUSED (mcp.rootCls); - const ObjectStaticCallbacks *cwo = get_builtin_object_static_callbacks(s); - return ObjectStaticCallbacks::GetCallInfo(cwo,mcp,-1); -} -Variant get_builtin_static_property(CStrRef s, const char *prop) { - const ObjectStaticCallbacks * cwo = get_builtin_object_static_callbacks(s); - if (cwo) return cwo->os_get(prop); - return null; -} -Variant *get_builtin_static_property_lv(CStrRef s, const char *prop) { - const ObjectStaticCallbacks * cwo = get_builtin_object_static_callbacks(s); - if (cwo) return &cwo->os_lval(prop); - return NULL; -} -Variant get_builtin_class_constant(CStrRef s, const char *constant, int fatal /* = true */) { - { - const ObjectStaticCallbacks * cwo = get_builtin_object_static_callbacks(s); - if (cwo) return cwo->os_constant(constant); - } - if (fatal > 0) { - raise_error("Couldn't find constant %s::%s", s.data(), constant); - } else if (!fatal) { - raise_warning("Couldn't find constant %s::%s", s.data(), constant); - } - return null; -} // Class tables static const int64 cpt_static_inits[] = { diff --git a/src/test/test_code_run.cpp b/src/test/test_code_run.cpp index 66bd1bfb40ebc..9cf874936a909 100644 --- a/src/test/test_code_run.cpp +++ b/src/test/test_code_run.cpp @@ -19435,7 +19435,54 @@ bool TestCodeRun::TestCallStatic() { "string(17) \"in object context\"\n" "string(7) \"runTest\"\n" "string(17) \"in static context\"\n"); - + MVCRO("